opaque_id 1.2.0 → 1.4.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,751 @@
1
+ @import "just-the-docs";
2
+
3
+
4
+ // Color Variables - Light theme (default)
5
+ :root {
6
+ // Light theme base colors
7
+ --body-background-color: #ffffff;
8
+ --body-text-color: #24292f;
9
+ --body-heading-color: #1f2328;
10
+
11
+ // Purple accent colors
12
+ --link-color: #a855f7;
13
+ --link-color-hover: #c084fc;
14
+ --link-color-visited: #9333ea;
15
+
16
+ // Navigation colors
17
+ --nav-child-link-color: #656d76;
18
+ --nav-child-link-color-hover: #a855f7;
19
+ --nav-child-link-color-active: #a855f7;
20
+
21
+ // Code colors
22
+ --code-background-color: #f6f8fa;
23
+ --code-text-color: #24292f;
24
+ --code-border-color: #d0d7de;
25
+
26
+ // Button colors
27
+ --btn-primary-color: #a855f7;
28
+ --btn-primary-color-dark: #9333ea;
29
+ --btn-primary-color-hover: #c084fc;
30
+
31
+ // Border colors
32
+ --border-color: #d0d7de;
33
+ --border-color-light: #e1e4e8;
34
+
35
+ // Table colors
36
+ --table-background-color: #ffffff;
37
+ --table-header-background-color: #f6f8fa;
38
+ --table-border-color: #d0d7de;
39
+
40
+ // Search colors
41
+ --search-background-color: #ffffff;
42
+ --search-border-color: #d0d7de;
43
+ --search-result-preview-color: #656d76;
44
+
45
+ // Footer colors
46
+ --footer-background-color: #f6f8fa;
47
+ --footer-text-color: #656d76;
48
+
49
+ // Aux links colors
50
+ --aux-link-color: #656d76;
51
+ --aux-link-hover-color: #a855f7;
52
+ }
53
+
54
+ // Dark theme support
55
+ @media (prefers-color-scheme: dark) {
56
+ :root {
57
+ // Dark theme base colors
58
+ --body-background-color: #0d1117;
59
+ --body-text-color: #e6edf3;
60
+ --body-heading-color: #f0f6fc;
61
+
62
+ // Navigation colors
63
+ --nav-child-link-color: #8b949e;
64
+ --nav-child-link-color-hover: #a855f7;
65
+ --nav-child-link-color-active: #a855f7;
66
+
67
+ // Code colors
68
+ --code-background-color: #161b22;
69
+ --code-text-color: #e6edf3;
70
+ --code-border-color: #30363d;
71
+
72
+ // Border colors
73
+ --border-color: #30363d;
74
+ --border-color-light: #21262d;
75
+
76
+ // Table colors
77
+ --table-background-color: #0d1117;
78
+ --table-header-background-color: #161b22;
79
+ --table-border-color: #30363d;
80
+
81
+ // Search colors
82
+ --search-background-color: #0d1117;
83
+ --search-border-color: #30363d;
84
+ --search-result-preview-color: #8b949e;
85
+
86
+ // Footer colors
87
+ --footer-background-color: #0d1117;
88
+ --footer-text-color: #8b949e;
89
+
90
+ // Aux links colors
91
+ --aux-link-color: #8b949e;
92
+ --aux-link-hover-color: #a855f7;
93
+ }
94
+ }
95
+
96
+ // Dark theme overrides
97
+ body {
98
+ background-color: var(--body-background-color);
99
+ color: var(--body-text-color);
100
+ }
101
+
102
+ // Headings
103
+ h1, h2, h3, h4, h5, h6 {
104
+ color: var(--body-heading-color);
105
+ }
106
+
107
+ // Links
108
+ a {
109
+ color: var(--link-color);
110
+
111
+ &:hover {
112
+ color: var(--link-color-hover);
113
+ }
114
+
115
+ &:visited {
116
+ color: var(--link-color-visited);
117
+ }
118
+ }
119
+
120
+ // Navigation
121
+ .nav-list {
122
+ .nav-list-item {
123
+ .nav-list-link {
124
+ color: var(--nav-child-link-color);
125
+
126
+ &:hover {
127
+ color: var(--nav-child-link-color-hover);
128
+ background-color: rgba(168, 85, 247, 0.1);
129
+ }
130
+
131
+ &.active {
132
+ color: var(--nav-child-link-color-active);
133
+ background-color: rgba(168, 85, 247, 0.2);
134
+ }
135
+ }
136
+ }
137
+ }
138
+
139
+ // Code blocks
140
+ .highlight {
141
+ background-color: var(--code-background-color);
142
+ border: 1px solid var(--code-border-color);
143
+ border-radius: 6px;
144
+ margin: 1rem 0;
145
+
146
+ pre {
147
+ background-color: transparent;
148
+ color: var(--code-text-color);
149
+ padding: 1rem;
150
+ overflow-x: auto;
151
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
152
+ font-size: 0.875rem;
153
+ line-height: 1.5;
154
+ }
155
+
156
+ // Ruby syntax highlighting
157
+ .k { color: #c084fc; } // Keywords (def, class, if, etc.)
158
+ .s { color: #10b981; } // Strings
159
+ .s2 { color: #10b981; } // String literals
160
+ .nb { color: #f59e0b; } // Built-in methods
161
+ .nf { color: #3b82f6; } // Function names
162
+ .nc { color: #8b5cf6; } // Class names
163
+ .no { color: #ef4444; } // Constants
164
+ .nv { color: #06b6d4; } // Variables
165
+ .c1 { color: #6b7280; } // Comments
166
+ .c { color: #6b7280; } // Comments
167
+ .p { color: #e5e7eb; } // Punctuation
168
+ .o { color: #e5e7eb; } // Operators
169
+ .mi { color: #f59e0b; } // Numbers
170
+ .mf { color: #f59e0b; } // Float numbers
171
+ .mh { color: #f59e0b; } // Hex numbers
172
+ .err { color: #ef4444; } // Errors
173
+ .w { color: #fbbf24; } // Warnings
174
+ }
175
+
176
+ // Inline code
177
+ code {
178
+ background-color: var(--code-background-color);
179
+ color: var(--code-text-color);
180
+ border: 1px solid var(--code-border-color);
181
+ border-radius: 3px;
182
+ padding: 0.2em 0.4em;
183
+ }
184
+
185
+ // Tables
186
+ table {
187
+ background-color: var(--table-background-color);
188
+ border: 1px solid var(--table-border-color);
189
+
190
+ th {
191
+ background-color: var(--table-header-background-color);
192
+ color: var(--body-heading-color);
193
+ border-bottom: 1px solid var(--table-border-color);
194
+ }
195
+
196
+ td {
197
+ border-bottom: 1px solid var(--table-border-color);
198
+ }
199
+
200
+ tr:nth-child(even) {
201
+ background-color: rgba(168, 85, 247, 0.05);
202
+ }
203
+ }
204
+
205
+ // Search
206
+ .search {
207
+ .search-input {
208
+ background-color: var(--search-background-color);
209
+ border: 1px solid var(--search-border-color);
210
+ color: var(--body-text-color);
211
+
212
+ &:focus {
213
+ border-color: var(--link-color);
214
+ box-shadow: 0 0 0 2px rgba(168, 85, 247, 0.2);
215
+ }
216
+ }
217
+
218
+ .search-results {
219
+ .search-result {
220
+ .search-result-title {
221
+ color: var(--link-color);
222
+ }
223
+
224
+ .search-result-preview {
225
+ color: var(--search-result-preview-color);
226
+ }
227
+ }
228
+ }
229
+ }
230
+
231
+ // Buttons
232
+ .btn {
233
+ &.btn-primary {
234
+ background-color: var(--btn-primary-color);
235
+ border-color: var(--btn-primary-color);
236
+
237
+ &:hover {
238
+ background-color: var(--btn-primary-color-hover);
239
+ border-color: var(--btn-primary-color-hover);
240
+ }
241
+ }
242
+ }
243
+
244
+ // Footer
245
+ .site-footer {
246
+ background-color: var(--footer-background-color);
247
+ color: var(--footer-text-color);
248
+ border-top: 1px solid var(--border-color);
249
+ }
250
+
251
+ // Header
252
+ .site-header {
253
+ background-color: var(--body-background-color);
254
+ border-bottom: 1px solid var(--border-color);
255
+ }
256
+
257
+ // Main content
258
+ .main-content {
259
+ background-color: var(--body-background-color);
260
+ }
261
+
262
+ // Sidebar
263
+ .site-nav {
264
+ background-color: var(--body-background-color);
265
+ border-right: 1px solid var(--border-color);
266
+ }
267
+
268
+ // Breadcrumbs
269
+ .breadcrumb-nav {
270
+ .breadcrumb-nav-list {
271
+ .breadcrumb-nav-list-item {
272
+ color: var(--nav-child-link-color);
273
+
274
+ &::after {
275
+ color: var(--nav-child-link-color);
276
+ }
277
+ }
278
+ }
279
+ }
280
+
281
+ // Custom OpaqueId branding
282
+ .site-title {
283
+ color: var(--body-heading-color);
284
+ font-weight: 700;
285
+
286
+ &:hover {
287
+ color: var(--link-color);
288
+ }
289
+ }
290
+
291
+ .site-subtitle {
292
+ color: var(--nav-child-link-color);
293
+ }
294
+
295
+ // Simple external links styling
296
+ .nav-list .nav-list-item .nav-list-link[href^="http"] {
297
+ color: var(--link-color);
298
+
299
+ &:hover {
300
+ color: var(--link-color-hover);
301
+ }
302
+ }
303
+
304
+ // Purple accent for active states
305
+ .nav-list-link.active,
306
+ .breadcrumb-nav-list-item.active {
307
+ color: var(--link-color);
308
+ font-weight: 600;
309
+ }
310
+
311
+ // Custom scrollbar
312
+ ::-webkit-scrollbar {
313
+ width: 8px;
314
+ }
315
+
316
+ ::-webkit-scrollbar-track {
317
+ background: var(--body-background-color);
318
+ }
319
+
320
+ ::-webkit-scrollbar-thumb {
321
+ background: var(--border-color);
322
+ border-radius: 4px;
323
+
324
+ &:hover {
325
+ background: var(--link-color);
326
+ }
327
+ }
328
+
329
+ // Responsive design improvements
330
+ @media (max-width: 768px) {
331
+ .site-nav {
332
+ background-color: var(--body-background-color);
333
+ }
334
+
335
+ .main-content {
336
+ padding: 1rem;
337
+ }
338
+
339
+ // Mobile navigation
340
+ .nav-list {
341
+ .nav-list-item {
342
+ .nav-list-link {
343
+ padding: 0.5rem 1rem;
344
+ font-size: 0.9rem;
345
+ }
346
+ }
347
+ }
348
+
349
+ // Mobile tables
350
+ table {
351
+ font-size: 0.875rem;
352
+ display: block;
353
+ overflow-x: auto;
354
+ white-space: nowrap;
355
+ }
356
+
357
+ // Mobile code blocks
358
+ .highlight {
359
+ pre {
360
+ font-size: 0.8rem;
361
+ padding: 0.75rem;
362
+ }
363
+ }
364
+
365
+ // Mobile search
366
+ .search {
367
+ .search-input {
368
+ font-size: 1rem;
369
+ padding: 0.75rem;
370
+ }
371
+ }
372
+
373
+ // Mobile buttons
374
+ .btn {
375
+ padding: 0.5rem 1rem;
376
+ font-size: 0.875rem;
377
+ }
378
+ }
379
+
380
+ @media (max-width: 480px) {
381
+ .main-content {
382
+ padding: 0.75rem;
383
+ }
384
+
385
+ // Extra small screens
386
+ h1 { font-size: 1.75rem; }
387
+ h2 { font-size: 1.5rem; }
388
+ h3 { font-size: 1.25rem; }
389
+ h4 { font-size: 1.125rem; }
390
+
391
+ // Mobile code blocks
392
+ .highlight {
393
+ pre {
394
+ font-size: 0.75rem;
395
+ padding: 0.5rem;
396
+ }
397
+ }
398
+
399
+ // Mobile tables - stack on very small screens
400
+ table {
401
+ display: block;
402
+ width: 100%;
403
+
404
+ thead, tbody, tr, th, td {
405
+ display: block;
406
+ }
407
+
408
+ thead tr {
409
+ position: absolute;
410
+ top: -9999px;
411
+ left: -9999px;
412
+ }
413
+
414
+ tr {
415
+ border: 1px solid var(--border-color);
416
+ margin-bottom: 0.5rem;
417
+ padding: 0.5rem;
418
+ }
419
+
420
+ td {
421
+ border: none;
422
+ position: relative;
423
+ padding-left: 50%;
424
+
425
+ &:before {
426
+ content: attr(data-label) ": ";
427
+ position: absolute;
428
+ left: 6px;
429
+ width: 45%;
430
+ padding-right: 10px;
431
+ white-space: nowrap;
432
+ font-weight: bold;
433
+ color: var(--link-color);
434
+ }
435
+ }
436
+ }
437
+ }
438
+
439
+ // Tablet optimization
440
+ @media (min-width: 769px) and (max-width: 1024px) {
441
+ .main-content {
442
+ padding: 1.5rem;
443
+ }
444
+
445
+ .site-nav {
446
+ width: 280px;
447
+ }
448
+
449
+ .main-content-wrap {
450
+ margin-left: 280px;
451
+ }
452
+ }
453
+
454
+ // Large screen optimization
455
+ @media (min-width: 1200px) {
456
+ .main-content {
457
+ max-width: 1000px;
458
+ margin: 0 auto;
459
+ }
460
+
461
+ .site-nav {
462
+ width: 300px;
463
+ }
464
+
465
+ .main-content-wrap {
466
+ margin-left: 300px;
467
+ }
468
+ }
469
+
470
+ // Print styles
471
+ @media print {
472
+ body {
473
+ background-color: white;
474
+ color: black;
475
+ }
476
+
477
+ .site-nav,
478
+ .site-header,
479
+ .site-footer {
480
+ display: none;
481
+ }
482
+ }
483
+
484
+ // Performance optimizations
485
+ * {
486
+ box-sizing: border-box;
487
+ }
488
+
489
+ // Optimize font loading
490
+ @font-face {
491
+ font-family: 'Monaco';
492
+ src: local('Monaco'), local('Menlo'), local('Ubuntu Mono'), monospace;
493
+ font-display: swap;
494
+ }
495
+
496
+ // Optimize images
497
+ img {
498
+ max-width: 100%;
499
+ height: auto;
500
+ }
501
+
502
+ // Optimize code blocks
503
+ .highlight {
504
+ contain: layout style;
505
+
506
+ pre {
507
+ contain: layout style;
508
+ will-change: auto;
509
+ }
510
+ }
511
+
512
+ // Optimize tables
513
+ table {
514
+ contain: layout;
515
+ }
516
+
517
+ // Custom utility classes
518
+ .text-purple {
519
+ color: var(--link-color);
520
+ }
521
+
522
+ .bg-purple {
523
+ background-color: var(--link-color);
524
+ }
525
+
526
+ .border-purple {
527
+ border-color: var(--link-color);
528
+ }
529
+
530
+ // Badge styling
531
+ .badge {
532
+ background-color: var(--link-color);
533
+ color: white;
534
+ padding: 0.25rem 0.5rem;
535
+ border-radius: 4px;
536
+ font-size: 0.875rem;
537
+ font-weight: 500;
538
+ }
539
+
540
+ // Alert boxes
541
+ .alert {
542
+ padding: 1rem;
543
+ border-radius: 6px;
544
+ margin: 1rem 0;
545
+
546
+ &.alert-info {
547
+ background-color: rgba(168, 85, 247, 0.1);
548
+ border: 1px solid var(--link-color);
549
+ color: var(--link-color);
550
+ }
551
+
552
+ &.alert-warning {
553
+ background-color: rgba(255, 193, 7, 0.1);
554
+ border: 1px solid #ffc107;
555
+ color: #ffc107;
556
+ }
557
+
558
+ &.alert-success {
559
+ background-color: rgba(40, 167, 69, 0.1);
560
+ border: 1px solid #28a745;
561
+ color: #28a745;
562
+ }
563
+ }
564
+
565
+ // Browser compatibility fixes
566
+ // IE11 support
567
+ @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
568
+ .highlight {
569
+ pre {
570
+ white-space: pre-wrap;
571
+ word-wrap: break-word;
572
+ }
573
+ }
574
+ }
575
+
576
+ // Firefox specific fixes
577
+ @-moz-document url-prefix() {
578
+ .highlight {
579
+ pre {
580
+ overflow-x: auto;
581
+ }
582
+ }
583
+ }
584
+
585
+ // Safari specific fixes
586
+ @media screen and (-webkit-min-device-pixel-ratio: 0) {
587
+ .highlight {
588
+ pre {
589
+ -webkit-overflow-scrolling: touch;
590
+ }
591
+ }
592
+ }
593
+
594
+ // Fallbacks for older browsers
595
+ .no-cssgrid {
596
+ .main-content-wrap {
597
+ display: block;
598
+ }
599
+ }
600
+
601
+ .no-flexbox {
602
+ .nav-list {
603
+ display: block;
604
+ }
605
+
606
+ .search {
607
+ display: block;
608
+ }
609
+ }
610
+
611
+ // High contrast mode support
612
+ @media (prefers-contrast: high) {
613
+ :root {
614
+ --body-background-color: #000000;
615
+ --body-text-color: #ffffff;
616
+ --link-color: #ffff00;
617
+ --border-color: #ffffff;
618
+ }
619
+ }
620
+
621
+ // Reduced motion support
622
+ @media (prefers-reduced-motion: reduce) {
623
+ * {
624
+ animation-duration: 0.01ms !important;
625
+ animation-iteration-count: 1 !important;
626
+ transition-duration: 0.01ms !important;
627
+ }
628
+ }
629
+
630
+ // Accessibility improvements
631
+ // Focus indicators
632
+ a:focus,
633
+ button:focus,
634
+ input:focus,
635
+ textarea:focus,
636
+ select:focus {
637
+ outline: 2px solid var(--link-color);
638
+ outline-offset: 2px;
639
+ }
640
+
641
+ // Skip links
642
+ .skip-link {
643
+ position: absolute;
644
+ top: -40px;
645
+ left: 6px;
646
+ background: var(--link-color);
647
+ color: white;
648
+ padding: 8px;
649
+ text-decoration: none;
650
+ border-radius: 4px;
651
+ z-index: 1000;
652
+
653
+ &:focus {
654
+ top: 6px;
655
+ }
656
+ }
657
+
658
+ // Screen reader only content
659
+ .sr-only {
660
+ position: absolute;
661
+ width: 1px;
662
+ height: 1px;
663
+ padding: 0;
664
+ margin: -1px;
665
+ overflow: hidden;
666
+ clip: rect(0, 0, 0, 0);
667
+ white-space: nowrap;
668
+ border: 0;
669
+ }
670
+
671
+ // High contrast mode improvements
672
+ @media (prefers-contrast: high) {
673
+ .highlight {
674
+ border: 2px solid var(--border-color);
675
+ }
676
+
677
+ .btn {
678
+ border: 2px solid currentColor;
679
+ }
680
+ }
681
+
682
+ // Color contrast improvements
683
+ @media (prefers-contrast: more) {
684
+ :root {
685
+ --body-text-color: #ffffff;
686
+ --nav-child-link-color: #ffffff;
687
+ --search-result-preview-color: #ffffff;
688
+ }
689
+ }
690
+
691
+ // Keyboard navigation improvements
692
+ .nav-list-link:focus,
693
+ .search-input:focus {
694
+ background-color: rgba(168, 85, 247, 0.1);
695
+ }
696
+
697
+ // ARIA live regions for dynamic content
698
+ .aria-live {
699
+ position: absolute;
700
+ left: -10000px;
701
+ width: 1px;
702
+ height: 1px;
703
+ overflow: hidden;
704
+ }
705
+
706
+ // Table accessibility
707
+ table {
708
+ caption {
709
+ font-weight: bold;
710
+ margin-bottom: 0.5rem;
711
+ }
712
+
713
+ th {
714
+ font-weight: bold;
715
+ }
716
+
717
+ // Ensure table headers are properly associated
718
+ th[scope="col"],
719
+ th[scope="row"] {
720
+ font-weight: bold;
721
+ }
722
+ }
723
+
724
+ // Form accessibility
725
+ input, textarea, select {
726
+ &:required {
727
+ border-left: 3px solid var(--link-color);
728
+ }
729
+
730
+ &:invalid {
731
+ border-color: #ef4444;
732
+ }
733
+
734
+ &:valid {
735
+ border-color: #10b981;
736
+ }
737
+ }
738
+
739
+ // Error messages
740
+ .error-message {
741
+ color: #ef4444;
742
+ font-size: 0.875rem;
743
+ margin-top: 0.25rem;
744
+ }
745
+
746
+ // Success messages
747
+ .success-message {
748
+ color: #10b981;
749
+ font-size: 0.875rem;
750
+ margin-top: 0.25rem;
751
+ }