@contractkit/explorer-ui 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,859 @@
1
+ /* ContractKit Explorer UI — default theme.
2
+ * Override any --ce-* custom property to retheme. */
3
+
4
+ :root {
5
+ --ce-fg: #1f2328;
6
+ --ce-fg-muted: #656d76;
7
+ --ce-bg: #ffffff;
8
+ --ce-sidebar-bg: #f6f8fa;
9
+ --ce-card-bg: #ffffff;
10
+ --ce-link: #0969da;
11
+ --ce-link-active: #0550ae;
12
+ --ce-border: #d0d7de;
13
+ --ce-border-strong: #afb8c1;
14
+ --ce-code-bg: rgba(175, 184, 193, 0.2);
15
+ --ce-badge-fg: #ffffff;
16
+ --ce-badge-bg: #6e7681;
17
+
18
+ --ce-method-get: #0969da;
19
+ --ce-method-post: #1f883d;
20
+ --ce-method-put: #9a6700;
21
+ --ce-method-patch: #8250df;
22
+ --ce-method-delete: #cf222e;
23
+
24
+ --ce-status-2xx: #1f883d;
25
+ --ce-status-3xx: #9a6700;
26
+ --ce-status-4xx: #cf222e;
27
+ --ce-status-5xx: #82071e;
28
+
29
+ --ce-warning-bg: #fff8c5;
30
+ --ce-warning-fg: #59410f;
31
+ --ce-warning-border: #d4a72c;
32
+
33
+ --ce-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
34
+ --ce-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
35
+ }
36
+
37
+ * { box-sizing: border-box; }
38
+ body { margin: 0; }
39
+
40
+ body, .ce-layout {
41
+ color: var(--ce-fg);
42
+ background: var(--ce-bg);
43
+ font-family: var(--ce-font);
44
+ font-size: 14px;
45
+ line-height: 1.5;
46
+ }
47
+
48
+ .ce-layout {
49
+ display: grid;
50
+ grid-template-columns: minmax(220px, 280px) 1fr;
51
+ min-height: 100vh;
52
+ }
53
+
54
+ /* ── Sidebar ───────────────────────────────────────────── */
55
+
56
+ .ce-sidebar {
57
+ background: var(--ce-sidebar-bg);
58
+ border-right: 1px solid var(--ce-border);
59
+ overflow-y: auto;
60
+ padding: 12px 0;
61
+ position: sticky;
62
+ top: 0;
63
+ align-self: start;
64
+ max-height: 100vh;
65
+ }
66
+ .ce-sidebar nav section { margin-bottom: 16px; }
67
+ .ce-sidebar h4 {
68
+ font-size: 11px;
69
+ text-transform: uppercase;
70
+ letter-spacing: 0.05em;
71
+ color: var(--ce-fg-muted);
72
+ margin: 8px 16px 4px;
73
+ }
74
+ .ce-sidebar h4 a { color: inherit; text-decoration: none; }
75
+ .ce-sidebar ul {
76
+ list-style: none;
77
+ margin: 0;
78
+ padding: 0;
79
+ }
80
+ .ce-sidebar li a {
81
+ display: flex;
82
+ align-items: baseline;
83
+ gap: 6px;
84
+ padding: 4px 16px 4px 20px;
85
+ color: var(--ce-fg);
86
+ text-decoration: none;
87
+ border-left: 2px solid transparent;
88
+ }
89
+ .ce-sidebar li a:hover {
90
+ background: var(--ce-code-bg);
91
+ color: var(--ce-link-active);
92
+ }
93
+ .ce-sidebar-row {
94
+ align-items: center !important;
95
+ padding: 8px 16px 8px 20px !important;
96
+ }
97
+ .ce-sidebar-marker {
98
+ flex: 0 0 16px;
99
+ display: inline-flex;
100
+ align-items: center;
101
+ color: var(--ce-method-patch);
102
+ }
103
+ .ce-sidebar-name {
104
+ flex: 1;
105
+ overflow: hidden;
106
+ text-overflow: ellipsis;
107
+ white-space: nowrap;
108
+ }
109
+ .ce-sidebar-method {
110
+ flex: 0 0 auto;
111
+ font-family: var(--ce-mono);
112
+ font-size: 11px;
113
+ font-weight: 700;
114
+ letter-spacing: 0.04em;
115
+ color: var(--ce-fg-muted);
116
+ }
117
+ .ce-method-text-get { color: var(--ce-method-get); }
118
+ .ce-method-text-post { color: var(--ce-method-post); }
119
+ .ce-method-text-put { color: var(--ce-method-put); }
120
+ .ce-method-text-patch { color: var(--ce-method-patch); }
121
+ .ce-method-text-delete { color: var(--ce-method-delete); }
122
+ .ce-sidebar-group > summary {
123
+ cursor: pointer;
124
+ list-style: none;
125
+ padding: 4px 16px;
126
+ font-weight: 500;
127
+ color: var(--ce-fg-muted);
128
+ }
129
+ .ce-sidebar-group > summary::-webkit-details-marker { display: none; }
130
+ .ce-sidebar-group[open] > summary::before { content: "▾ "; }
131
+ .ce-sidebar-group:not([open]) > summary::before { content: "▸ "; }
132
+ .ce-sidebar-path {
133
+ font-family: var(--ce-mono);
134
+ font-size: 12px;
135
+ overflow: hidden;
136
+ text-overflow: ellipsis;
137
+ white-space: nowrap;
138
+ }
139
+ .ce-model-list li a { font-family: var(--ce-mono); font-size: 13px; }
140
+
141
+ /* ── Detail pane ───────────────────────────────────────── */
142
+
143
+ .ce-detail {
144
+ padding: 24px 32px;
145
+ overflow-x: hidden;
146
+ }
147
+ .ce-detail-single {
148
+ max-width: none;
149
+ }
150
+ .ce-detail-single .ce-card {
151
+ border: none;
152
+ border-radius: 0;
153
+ padding: 0;
154
+ background: transparent;
155
+ margin-bottom: 0;
156
+ }
157
+ /* Restore vertical separation between stacked cards (file/overview pages with multiple ops). */
158
+ .ce-detail-single .ce-card + .ce-card {
159
+ margin-top: 48px;
160
+ padding-top: 40px;
161
+ border-top: 1px solid var(--ce-border);
162
+ }
163
+ .ce-detail-single .ce-section + .ce-section {
164
+ margin-top: 48px;
165
+ }
166
+ .ce-stats {
167
+ display: grid;
168
+ grid-template-columns: auto 1fr;
169
+ gap: 4px 16px;
170
+ margin: 12px 0;
171
+ font-size: 13px;
172
+ }
173
+ .ce-stats dt { color: var(--ce-fg-muted); }
174
+ .ce-stats dd { margin: 0; font-family: var(--ce-mono); }
175
+ .ce-hint { color: var(--ce-fg-muted); font-style: italic; }
176
+ .ce-missing { border-color: var(--ce-warning-border); }
177
+ .ce-section { margin-bottom: 32px; }
178
+ .ce-section > h1 {
179
+ border-bottom: 1px solid var(--ce-border);
180
+ padding-bottom: 8px;
181
+ margin-bottom: 16px;
182
+ }
183
+
184
+ .ce-card {
185
+ background: var(--ce-card-bg);
186
+ border: 1px solid var(--ce-border);
187
+ border-radius: 8px;
188
+ padding: 24px 28px;
189
+ margin-bottom: 24px;
190
+ scroll-margin-top: 16px;
191
+ }
192
+ .ce-op-body {
193
+ display: grid;
194
+ grid-template-columns: 1fr;
195
+ gap: 24px;
196
+ margin-top: 16px;
197
+ }
198
+ .ce-op-resize { display: none; }
199
+ @media (min-width: 900px) {
200
+ .ce-op-body {
201
+ grid-template-columns: minmax(0, var(--ce-op-main-fr, 60fr)) 6px minmax(0, var(--ce-op-rail-fr, 40fr));
202
+ gap: 0;
203
+ column-gap: 0;
204
+ }
205
+ .ce-op-main { padding-right: 16px; }
206
+ .ce-op-rail { padding-left: 16px; }
207
+ .ce-op-resize {
208
+ display: block;
209
+ background: var(--ce-border);
210
+ cursor: col-resize;
211
+ border-radius: 2px;
212
+ margin: 4px 0;
213
+ transition: background 0.15s ease;
214
+ touch-action: none;
215
+ user-select: none;
216
+ }
217
+ .ce-op-resize:hover,
218
+ .ce-op-resize:focus,
219
+ .ce-op-resize.is-dragging {
220
+ background: var(--ce-link);
221
+ outline: none;
222
+ }
223
+ }
224
+ .ce-op-main { min-width: 0; }
225
+ .ce-op-rail {
226
+ display: flex;
227
+ flex-direction: column;
228
+ gap: 16px;
229
+ min-width: 0;
230
+ }
231
+ .ce-rail-section { margin: 0; }
232
+ .ce-rail-heading {
233
+ font-size: 12px;
234
+ text-transform: uppercase;
235
+ letter-spacing: 0.05em;
236
+ color: var(--ce-fg-muted);
237
+ margin: 0 0 6px;
238
+ font-weight: 600;
239
+ }
240
+ .ce-code-dark {
241
+ background: #1f2328;
242
+ color: #e6edf3;
243
+ border-radius: 6px;
244
+ padding: 12px 14px;
245
+ font-size: 12px;
246
+ line-height: 1.6;
247
+ overflow-x: auto;
248
+ }
249
+ .ce-card-header h2 {
250
+ font-size: 16px;
251
+ margin: 0;
252
+ display: flex;
253
+ align-items: center;
254
+ flex-wrap: wrap;
255
+ gap: 8px;
256
+ }
257
+ .ce-op-title-row {
258
+ display: flex;
259
+ align-items: center;
260
+ gap: 10px;
261
+ }
262
+ .ce-op-title {
263
+ font-size: 28px;
264
+ font-weight: 700;
265
+ margin: 0 0 4px;
266
+ line-height: 1.2;
267
+ }
268
+ .ce-endpoint-row {
269
+ display: flex;
270
+ align-items: center;
271
+ flex-wrap: wrap;
272
+ gap: 8px;
273
+ margin: 0 0 16px;
274
+ }
275
+ .ce-badge-row {
276
+ display: inline-flex;
277
+ gap: 4px;
278
+ margin-left: 4px;
279
+ }
280
+ .ce-op-name { color: var(--ce-fg-muted); margin: 4px 0 0; font-size: 13px; }
281
+ .ce-meta { margin: 4px 0; font-size: 13px; color: var(--ce-fg-muted); }
282
+ .ce-description { margin: 8px 0; }
283
+ .ce-version { color: var(--ce-fg-muted); margin-top: 0; }
284
+ .ce-extends { font-size: 13px; color: var(--ce-fg-muted); }
285
+
286
+ .ce-subsection { margin-top: 24px; }
287
+ .ce-subsection h3 {
288
+ font-size: 18px;
289
+ font-weight: 600;
290
+ text-transform: none;
291
+ letter-spacing: 0;
292
+ color: var(--ce-fg);
293
+ border-bottom: 1px solid var(--ce-border);
294
+ padding-bottom: 6px;
295
+ margin: 0 0 12px;
296
+ }
297
+ .ce-status-summary {
298
+ display: flex;
299
+ flex-wrap: wrap;
300
+ gap: 8px;
301
+ margin: 0 0 12px;
302
+ }
303
+ .ce-status-summary .ce-status {
304
+ font-size: 13px;
305
+ padding: 3px 10px;
306
+ }
307
+
308
+ /* ── Tables ────────────────────────────────────────────── */
309
+
310
+ .ce-fields {
311
+ width: 100%;
312
+ border-collapse: collapse;
313
+ font-size: 13px;
314
+ }
315
+ .ce-fields td {
316
+ border-top: 1px solid var(--ce-border);
317
+ padding: 8px 10px;
318
+ vertical-align: top;
319
+ }
320
+ .ce-fields tr:first-child td { border-top: none; }
321
+ .ce-field-name {
322
+ width: 35%;
323
+ white-space: nowrap;
324
+ }
325
+ .ce-field-name code {
326
+ font-family: var(--ce-mono);
327
+ font-size: 13px;
328
+ background: transparent;
329
+ padding: 0;
330
+ }
331
+ .ce-field-type { font-family: var(--ce-mono); }
332
+ .ce-field-desc {
333
+ margin-top: 4px;
334
+ font-family: var(--ce-font);
335
+ font-size: 12px;
336
+ color: var(--ce-fg-muted);
337
+ }
338
+ .ce-default {
339
+ font-family: var(--ce-mono);
340
+ color: var(--ce-fg-muted);
341
+ margin-left: 6px;
342
+ }
343
+ .ce-empty { color: var(--ce-fg-muted); font-style: italic; margin: 4px 0; }
344
+
345
+ /* ── Type rendering ────────────────────────────────────── */
346
+
347
+ .ce-type-scalar,
348
+ .ce-type-enum,
349
+ .ce-type-literal {
350
+ color: var(--ce-fg);
351
+ }
352
+ .ce-type-constraint { color: var(--ce-fg-muted); }
353
+ .ce-type-token { color: var(--ce-fg-muted); }
354
+ .ce-ref {
355
+ color: var(--ce-link);
356
+ text-decoration: none;
357
+ }
358
+ .ce-ref:hover { color: var(--ce-link-active); text-decoration: underline; }
359
+ .ce-inline-object {
360
+ display: inline-block;
361
+ margin: 4px 0;
362
+ padding: 0 8px;
363
+ border-left: 2px solid var(--ce-border);
364
+ }
365
+ .ce-inline-object > summary {
366
+ cursor: pointer;
367
+ display: inline;
368
+ }
369
+ .ce-inline-object .ce-fields {
370
+ margin-top: 6px;
371
+ }
372
+
373
+ /* ── Expandable model refs ─────────────────────────────── */
374
+ .ce-ref-expand {
375
+ display: inline-block;
376
+ margin: 2px 0;
377
+ padding: 0;
378
+ border-left: 2px solid var(--ce-link);
379
+ }
380
+ .ce-ref-expand > summary {
381
+ cursor: pointer;
382
+ user-select: none;
383
+ list-style: none;
384
+ padding: 2px 8px;
385
+ display: inline-flex;
386
+ align-items: center;
387
+ gap: 6px;
388
+ }
389
+ .ce-ref-expand > summary::-webkit-details-marker { display: none; }
390
+ .ce-ref-expand > summary::before {
391
+ display: inline-block;
392
+ width: 0.9em;
393
+ color: var(--ce-fg-muted);
394
+ font-size: 0.85em;
395
+ }
396
+ .ce-ref-expand[open] > summary::before { content: "▾"; }
397
+ .ce-ref-expand:not([open]) > summary::before { content: "▸"; }
398
+ .ce-ref-name {
399
+ color: var(--ce-link);
400
+ font-family: var(--ce-mono);
401
+ }
402
+ .ce-ref-expand[open] > summary > .ce-ref-name {
403
+ font-weight: 500;
404
+ }
405
+ .ce-ref-open {
406
+ background: transparent;
407
+ border: none;
408
+ color: var(--ce-fg-muted);
409
+ cursor: pointer;
410
+ padding: 0 2px;
411
+ font-size: 0.85em;
412
+ border-radius: 3px;
413
+ }
414
+ .ce-ref-open:hover {
415
+ color: var(--ce-link);
416
+ background: var(--ce-code-bg);
417
+ }
418
+ .ce-ref-body {
419
+ margin: 4px 0 6px 12px;
420
+ padding: 4px 10px;
421
+ border-left: 1px solid var(--ce-border);
422
+ }
423
+ .ce-ref-cycle {
424
+ color: var(--ce-fg-muted);
425
+ font-style: italic;
426
+ }
427
+
428
+ /* ── Method & status badges ────────────────────────────── */
429
+
430
+ .ce-method {
431
+ display: inline-block;
432
+ font-family: var(--ce-mono);
433
+ font-size: 11px;
434
+ font-weight: 600;
435
+ text-transform: uppercase;
436
+ padding: 2px 6px;
437
+ border-radius: 3px;
438
+ color: #fff;
439
+ background: var(--ce-badge-bg);
440
+ min-width: 50px;
441
+ text-align: center;
442
+ }
443
+ .ce-method-get { background: var(--ce-method-get); }
444
+ .ce-method-post { background: var(--ce-method-post); }
445
+ .ce-method-put { background: var(--ce-method-put); }
446
+ .ce-method-patch { background: var(--ce-method-patch); }
447
+ .ce-method-delete { background: var(--ce-method-delete); }
448
+
449
+ .ce-path {
450
+ font-family: var(--ce-mono);
451
+ font-size: 14px;
452
+ background: var(--ce-code-bg);
453
+ padding: 2px 6px;
454
+ border-radius: 3px;
455
+ }
456
+
457
+ .ce-status {
458
+ display: inline-block;
459
+ font-family: var(--ce-mono);
460
+ font-size: 12px;
461
+ font-weight: 600;
462
+ padding: 2px 8px;
463
+ border-radius: 3px;
464
+ color: #fff;
465
+ background: var(--ce-badge-bg);
466
+ }
467
+ .ce-status-2xx { background: var(--ce-status-2xx); }
468
+ .ce-status-3xx { background: var(--ce-status-3xx); }
469
+ .ce-status-4xx { background: var(--ce-status-4xx); }
470
+ .ce-status-5xx { background: var(--ce-status-5xx); }
471
+
472
+ .ce-badge {
473
+ display: inline-block;
474
+ font-size: 11px;
475
+ padding: 1px 6px;
476
+ border-radius: 10px;
477
+ background: var(--ce-badge-bg);
478
+ color: var(--ce-badge-fg);
479
+ margin-left: 4px;
480
+ vertical-align: middle;
481
+ }
482
+ .ce-badge-deprecated { background: var(--ce-method-delete); }
483
+ .ce-badge-internal { background: var(--ce-method-patch); }
484
+ .ce-badge-public { background: var(--ce-method-post); }
485
+ .ce-badge-readonly,
486
+ .ce-badge-writeonly,
487
+ .ce-badge-optional,
488
+ .ce-badge-nullable,
489
+ .ce-badge-override,
490
+ .ce-badge-mode,
491
+ .ce-badge-format {
492
+ background: var(--ce-border-strong);
493
+ }
494
+ .ce-badge-security-secured { background: var(--ce-status-2xx); }
495
+ .ce-badge-security-none { background: var(--ce-method-delete); }
496
+ .ce-badge-security-policy { background: var(--ce-link); }
497
+ .ce-badge-security-no-policy { background: var(--ce-status-3xx); }
498
+
499
+ /* ── Response blocks ───────────────────────────────────── */
500
+
501
+ .ce-response-block {
502
+ border: 1px solid var(--ce-border);
503
+ border-radius: 6px;
504
+ padding: 14px 16px;
505
+ margin-top: 12px;
506
+ scroll-margin-top: 16px;
507
+ }
508
+ .ce-response-block:first-of-type { margin-top: 0; }
509
+ .ce-response-block h4 { margin: 0 0 8px; }
510
+ .ce-response-block h5 {
511
+ font-size: 12px;
512
+ text-transform: uppercase;
513
+ letter-spacing: 0.05em;
514
+ color: var(--ce-fg-muted);
515
+ margin: 10px 0 4px;
516
+ }
517
+ a.ce-status { text-decoration: none; }
518
+ a.ce-status:hover { opacity: 0.85; }
519
+ .ce-body-block { margin: 8px 0; }
520
+ .ce-content-type { font-size: 12px; color: var(--ce-fg-muted); }
521
+ .ce-content-type code { background: transparent; padding: 0; }
522
+ .ce-body-header {
523
+ display: flex;
524
+ align-items: center;
525
+ justify-content: space-between;
526
+ gap: 8px;
527
+ margin: 0 0 8px;
528
+ }
529
+ .ce-body-title { font-weight: 600; font-size: 14px; }
530
+
531
+ /* ── Schema tree (request/response body) ───────────────── */
532
+
533
+ .ce-schema-fields {
534
+ display: flex;
535
+ flex-direction: column;
536
+ gap: 14px;
537
+ margin: 4px 0;
538
+ }
539
+ .ce-schema-row { display: flex; flex-direction: column; gap: 4px; }
540
+ .ce-schema-head {
541
+ display: flex;
542
+ align-items: baseline;
543
+ gap: 10px;
544
+ flex-wrap: wrap;
545
+ }
546
+ .ce-schema-name {
547
+ font-family: var(--ce-mono);
548
+ font-size: 13px;
549
+ font-weight: 600;
550
+ background: transparent;
551
+ padding: 0;
552
+ color: var(--ce-fg);
553
+ }
554
+ .ce-schema-type {
555
+ font-family: var(--ce-mono);
556
+ font-size: 12px;
557
+ color: var(--ce-fg-muted);
558
+ background: transparent;
559
+ text-decoration: none;
560
+ padding: 0;
561
+ }
562
+ a.ce-schema-type { color: var(--ce-link); }
563
+ a.ce-schema-type:hover { color: var(--ce-link-active); text-decoration: underline; }
564
+ .ce-schema-required {
565
+ font-size: 10px;
566
+ font-weight: 600;
567
+ text-transform: uppercase;
568
+ letter-spacing: 0.06em;
569
+ color: var(--ce-method-delete);
570
+ background: color-mix(in srgb, var(--ce-method-delete) 12%, transparent);
571
+ border: 1px solid color-mix(in srgb, var(--ce-method-delete) 35%, transparent);
572
+ border-radius: 999px;
573
+ padding: 1px 8px;
574
+ line-height: 1.4;
575
+ }
576
+ .ce-schema-desc {
577
+ font-size: 13px;
578
+ color: var(--ce-fg-muted);
579
+ margin: 0;
580
+ }
581
+ .ce-schema-desc p { margin: 0; }
582
+ .ce-schema-default {
583
+ font-size: 12px;
584
+ color: var(--ce-fg-muted);
585
+ }
586
+ .ce-schema-default code {
587
+ font-family: var(--ce-mono);
588
+ background: var(--ce-code-bg);
589
+ padding: 0 4px;
590
+ border-radius: 3px;
591
+ }
592
+ .ce-schema-chips { display: flex; flex-wrap: wrap; gap: 6px; }
593
+ .ce-schema-chip {
594
+ font-family: var(--ce-mono);
595
+ font-size: 11px;
596
+ color: var(--ce-fg-muted);
597
+ background: var(--ce-code-bg);
598
+ border-radius: 3px;
599
+ padding: 1px 6px;
600
+ }
601
+ .ce-schema-enum {
602
+ display: flex;
603
+ flex-wrap: wrap;
604
+ align-items: center;
605
+ gap: 6px;
606
+ font-size: 12px;
607
+ }
608
+ .ce-schema-enum-label {
609
+ color: var(--ce-fg-muted);
610
+ font-size: 11px;
611
+ text-transform: uppercase;
612
+ letter-spacing: 0.04em;
613
+ }
614
+ .ce-schema-enum-list {
615
+ display: inline-flex;
616
+ flex-wrap: wrap;
617
+ gap: 4px;
618
+ }
619
+ .ce-schema-enum-value {
620
+ font-family: var(--ce-mono);
621
+ font-size: 11px;
622
+ color: var(--ce-link);
623
+ background: var(--ce-code-bg);
624
+ border-radius: 3px;
625
+ padding: 1px 6px;
626
+ }
627
+ .ce-schema-nested {
628
+ border-left: 2px solid var(--ce-border);
629
+ margin-left: 6px;
630
+ padding-left: 14px;
631
+ margin-top: 4px;
632
+ }
633
+ .ce-schema-array-label {
634
+ font-family: var(--ce-mono);
635
+ font-size: 12px;
636
+ color: var(--ce-fg-muted);
637
+ margin-bottom: 6px;
638
+ }
639
+ .ce-schema-fallback { margin: 4px 0; }
640
+ .ce-schema-unresolved {
641
+ margin: 8px 0;
642
+ padding: 8px 12px;
643
+ border-radius: 4px;
644
+ background: color-mix(in srgb, var(--ce-status-3xx) 12%, transparent);
645
+ border: 1px solid color-mix(in srgb, var(--ce-status-3xx) 40%, transparent);
646
+ font-size: 12px;
647
+ color: var(--ce-fg);
648
+ display: flex;
649
+ flex-wrap: wrap;
650
+ gap: 6px;
651
+ align-items: center;
652
+ }
653
+ .ce-schema-unresolved-label {
654
+ font-size: 10px;
655
+ font-weight: 600;
656
+ text-transform: uppercase;
657
+ letter-spacing: 0.06em;
658
+ color: var(--ce-status-3xx);
659
+ }
660
+ .ce-schema-unresolved-ref {
661
+ font-family: var(--ce-mono);
662
+ font-size: 11px;
663
+ color: var(--ce-status-3xx);
664
+ background: var(--ce-code-bg);
665
+ padding: 1px 6px;
666
+ border-radius: 3px;
667
+ text-decoration: none;
668
+ }
669
+ .ce-schema-unresolved-ref:hover { text-decoration: underline; }
670
+ .ce-schema-unresolved-hint { color: var(--ce-fg-muted); font-style: italic; font-size: 11px; }
671
+
672
+ /* ── Union / discriminated union ───────────────────────── */
673
+
674
+ .ce-schema-union { margin: 4px 0; }
675
+ .ce-schema-union-label {
676
+ font-size: 11px;
677
+ text-transform: uppercase;
678
+ letter-spacing: 0.04em;
679
+ color: var(--ce-fg-muted);
680
+ margin: 0 0 8px;
681
+ }
682
+ .ce-schema-union-disc code {
683
+ font-family: var(--ce-mono);
684
+ font-size: 11px;
685
+ background: var(--ce-code-bg);
686
+ padding: 0 4px;
687
+ border-radius: 3px;
688
+ text-transform: none;
689
+ }
690
+ .ce-schema-union-variants {
691
+ display: flex;
692
+ flex-direction: column;
693
+ gap: 6px;
694
+ }
695
+ .ce-schema-variant {
696
+ border: 1px solid var(--ce-border);
697
+ border-radius: 6px;
698
+ overflow: hidden;
699
+ }
700
+ .ce-schema-variant > summary {
701
+ cursor: pointer;
702
+ padding: 8px 12px;
703
+ display: flex;
704
+ align-items: center;
705
+ gap: 10px;
706
+ list-style: none;
707
+ user-select: none;
708
+ }
709
+ .ce-schema-variant > summary::-webkit-details-marker { display: none; }
710
+ .ce-schema-variant > summary::before {
711
+ content: "▸";
712
+ color: var(--ce-fg-muted);
713
+ font-size: 10px;
714
+ width: 0.9em;
715
+ display: inline-block;
716
+ }
717
+ .ce-schema-variant[open] > summary::before { content: "▾"; }
718
+ .ce-schema-variant > summary:hover { background: color-mix(in srgb, var(--ce-link) 6%, transparent); }
719
+ .ce-schema-variant-name {
720
+ font-family: var(--ce-mono);
721
+ font-size: 13px;
722
+ font-weight: 600;
723
+ color: var(--ce-link);
724
+ }
725
+ .ce-schema-variant-disc-value {
726
+ font-family: var(--ce-mono);
727
+ font-size: 11px;
728
+ color: var(--ce-fg-muted);
729
+ background: var(--ce-code-bg);
730
+ border-radius: 3px;
731
+ padding: 1px 6px;
732
+ }
733
+ .ce-schema-variant-body {
734
+ padding: 12px 14px;
735
+ border-top: 1px solid var(--ce-border);
736
+ background: color-mix(in srgb, var(--ce-fg-muted) 4%, transparent);
737
+ }
738
+
739
+ .ce-code {
740
+ background: var(--ce-code-bg);
741
+ border-radius: 4px;
742
+ padding: 8px 10px;
743
+ font-family: var(--ce-mono);
744
+ font-size: 12px;
745
+ overflow-x: auto;
746
+ white-space: pre;
747
+ }
748
+
749
+ /* ── Jump button ──────────────────────────────────────── */
750
+
751
+ .ce-jump {
752
+ background: transparent;
753
+ border: 1px solid var(--ce-border);
754
+ color: var(--ce-fg-muted);
755
+ cursor: pointer;
756
+ font-size: 12px;
757
+ padding: 2px 8px;
758
+ border-radius: 4px;
759
+ line-height: 1;
760
+ }
761
+ .ce-jump:hover {
762
+ border-color: var(--ce-link);
763
+ color: var(--ce-link);
764
+ }
765
+
766
+ /* ── Warnings ─────────────────────────────────────────── */
767
+
768
+ .ce-warnings {
769
+ background: var(--ce-warning-bg);
770
+ color: var(--ce-warning-fg);
771
+ border: 1px solid var(--ce-warning-border);
772
+ border-radius: 4px;
773
+ padding: 10px 14px;
774
+ margin-bottom: 16px;
775
+ font-size: 13px;
776
+ }
777
+ .ce-warnings ul { margin: 8px 0 0; padding-left: 18px; }
778
+ .ce-warnings code { font-family: var(--ce-mono); }
779
+
780
+ code {
781
+ font-family: var(--ce-mono);
782
+ background: var(--ce-code-bg);
783
+ padding: 1px 4px;
784
+ border-radius: 3px;
785
+ font-size: 0.95em;
786
+ }
787
+
788
+ /* ── Try-it form ──────────────────────────────────────── */
789
+ .ce-tryit {
790
+ margin-top: 16px;
791
+ border: 1px solid var(--ce-border);
792
+ border-radius: 6px;
793
+ padding: 12px 16px;
794
+ background: var(--ce-sidebar-bg);
795
+ }
796
+ .ce-tryit > summary {
797
+ cursor: pointer;
798
+ font-weight: 500;
799
+ user-select: none;
800
+ list-style: none;
801
+ }
802
+ .ce-tryit > summary::-webkit-details-marker { display: none; }
803
+ .ce-tryit > summary::before {
804
+ display: inline-block;
805
+ width: 1em;
806
+ color: var(--ce-fg-muted);
807
+ }
808
+ .ce-tryit[open] > summary::before { content: "▾"; }
809
+ .ce-tryit:not([open]) > summary::before { content: "▸"; }
810
+ .ce-tryit-form { margin-top: 12px; display: flex; flex-direction: column; gap: 14px; }
811
+ .ce-tryit-row { display: flex; flex-direction: column; gap: 4px; align-items: stretch; }
812
+ .ce-tryit-col { gap: 4px; }
813
+ .ce-tryit-label {
814
+ font-size: 12px;
815
+ font-weight: 500;
816
+ color: var(--ce-fg);
817
+ }
818
+ .ce-tryit-section { border: 1px solid var(--ce-border); border-radius: 4px; padding: 10px 12px; display: flex; flex-direction: column; gap: 10px; }
819
+ .ce-tryit-section legend { font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; color: var(--ce-fg-muted); padding: 0 4px; }
820
+ .ce-tryit-section .ce-tryit-row + .ce-tryit-row { margin-top: 0; }
821
+ .ce-tryit-form input,
822
+ .ce-tryit-form textarea {
823
+ width: 100%;
824
+ background: var(--ce-bg);
825
+ color: var(--ce-fg);
826
+ border: 1px solid var(--ce-border);
827
+ border-radius: 4px;
828
+ padding: 6px 10px;
829
+ font-family: var(--ce-mono);
830
+ font-size: 12px;
831
+ box-sizing: border-box;
832
+ }
833
+ .ce-tryit-form textarea { resize: vertical; }
834
+ .ce-tryit-actions { display: flex; justify-content: flex-start; }
835
+ .ce-tryit-send {
836
+ background: var(--ce-link);
837
+ color: #fff;
838
+ border: none;
839
+ border-radius: 4px;
840
+ padding: 6px 14px;
841
+ cursor: pointer;
842
+ font-weight: 500;
843
+ }
844
+ .ce-tryit-send:hover { background: var(--ce-link-active); }
845
+ .ce-tryit-send:disabled { opacity: 0.6; cursor: progress; }
846
+ .ce-tryit-response { margin-top: 6px; }
847
+ .ce-tryit-response pre { max-height: 320px; overflow: auto; }
848
+ .ce-tryit-response .ce-tryit-status { font-weight: 600; }
849
+
850
+ /* ── Markdown ─────────────────────────────────────────── */
851
+ .ce-markdown p { margin: 6px 0; }
852
+ .ce-markdown ul, .ce-markdown ol { margin: 6px 0; padding-left: 22px; }
853
+ .ce-markdown li { margin: 2px 0; }
854
+ .ce-markdown h1, .ce-markdown h2, .ce-markdown h3, .ce-markdown h4 {
855
+ margin: 12px 0 6px;
856
+ }
857
+ .ce-markdown pre.ce-code { margin: 8px 0; }
858
+ .ce-markdown a { color: var(--ce-link); }
859
+ .ce-markdown a:hover { color: var(--ce-link-active); }