@jaredwray/mockhttp 1.9.0 → 2.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.
Files changed (67) hide show
  1. package/README.md +40 -8
  2. package/dist/index.d.mts +90 -11
  3. package/dist/index.mjs +203 -240
  4. package/package.json +17 -13
  5. package/site/dist/api/index.html +17983 -0
  6. package/site/dist/api/swagger.json +5487 -0
  7. package/site/dist/changelog/index.html +784 -0
  8. package/site/dist/changelog/page/2/index.html +577 -0
  9. package/site/dist/changelog/v0-2-0/index.html +437 -0
  10. package/site/dist/changelog/v0-2-1/index.html +438 -0
  11. package/site/dist/changelog/v0-2-2/index.html +436 -0
  12. package/site/dist/changelog/v0-2-3/index.html +440 -0
  13. package/site/dist/changelog/v0-3-0/index.html +443 -0
  14. package/site/dist/changelog/v0-4-0/index.html +437 -0
  15. package/site/dist/changelog/v0-4-1/index.html +441 -0
  16. package/site/dist/changelog/v0-4-2/index.html +446 -0
  17. package/site/dist/changelog/v0-4-3/index.html +437 -0
  18. package/site/dist/changelog/v0-5-0/index.html +443 -0
  19. package/site/dist/changelog/v0-6-0/index.html +444 -0
  20. package/site/dist/changelog/v0-6-1/index.html +441 -0
  21. package/site/dist/changelog/v0-7-0/index.html +445 -0
  22. package/site/dist/changelog/v0-8-0/index.html +440 -0
  23. package/site/dist/changelog/v0-9-0/index.html +437 -0
  24. package/site/dist/changelog/v1-0-0/index.html +446 -0
  25. package/site/dist/changelog/v1-0-1/index.html +437 -0
  26. package/site/dist/changelog/v1-1-0/index.html +445 -0
  27. package/site/dist/changelog/v1-2-0/index.html +443 -0
  28. package/site/dist/changelog/v1-3-0/index.html +448 -0
  29. package/site/dist/changelog/v1-4-0/index.html +445 -0
  30. package/site/dist/changelog/v1-5-0/index.html +439 -0
  31. package/site/dist/changelog/v1-5-1/index.html +443 -0
  32. package/site/dist/changelog/v1-6-0/index.html +467 -0
  33. package/site/dist/changelog/v1-7-0/index.html +462 -0
  34. package/site/dist/changelog/v1-8-0/index.html +481 -0
  35. package/site/dist/changelog/v1-8-1/index.html +457 -0
  36. package/site/dist/changelog/v1-9-0/index.html +495 -0
  37. package/site/dist/changelog/v2-0-0/index.html +500 -0
  38. package/site/dist/changelog/v2-1-0/index.html +476 -0
  39. package/site/dist/changelog-latest.json +269 -0
  40. package/site/dist/changelog.json +399 -0
  41. package/site/dist/css/api.css +1113 -0
  42. package/site/dist/css/highlight/highlight.min.js +1433 -0
  43. package/site/dist/css/highlight/styles/base16/docula.css +123 -0
  44. package/site/dist/css/home.css +133 -0
  45. package/site/dist/css/styles.css +1227 -0
  46. package/site/dist/css/variables.css +32 -0
  47. package/site/dist/docs/bins/index.html +980 -0
  48. package/site/dist/docs/configuration/index.html +809 -0
  49. package/site/dist/docs/hosted/index.html +583 -0
  50. package/site/dist/docs/how-to-deploy/cloudflare/index.html +655 -0
  51. package/site/dist/docs/how-to-deploy/docker/index.html +664 -0
  52. package/site/dist/docs/how-to-deploy/wasmer/index.html +625 -0
  53. package/site/dist/docs/https/index.html +796 -0
  54. package/site/dist/docs/index.html +640 -0
  55. package/site/dist/docs/library/index.html +818 -0
  56. package/site/dist/docs/taps/index.html +746 -0
  57. package/site/dist/favicon.svg +14 -0
  58. package/site/dist/feed.xml +1 -0
  59. package/site/dist/index.html +640 -0
  60. package/site/dist/js/api.js +363 -0
  61. package/site/dist/js/search.js +436 -0
  62. package/site/dist/llms-full.txt +7640 -0
  63. package/site/dist/llms.txt +43 -0
  64. package/site/dist/logo.svg +21 -0
  65. package/site/dist/robots.txt +2 -0
  66. package/site/dist/search-index.json +1 -0
  67. package/site/dist/sitemap.xml +1 -0
@@ -0,0 +1,1227 @@
1
+ html {
2
+ scroll-behavior: smooth;
3
+ overflow-x: clip;
4
+ }
5
+
6
+ @media (prefers-reduced-motion: reduce) {
7
+ html {
8
+ scroll-behavior: auto;
9
+ }
10
+ }
11
+
12
+ * {
13
+ padding: 0;
14
+ margin: 0;
15
+ box-sizing: border-box;
16
+ }
17
+
18
+ a {
19
+ text-decoration: none;
20
+ color: inherit;
21
+ }
22
+
23
+ li {
24
+ list-style: none;
25
+ }
26
+
27
+ button {
28
+ cursor: pointer;
29
+ border: none;
30
+ background: none;
31
+ color: inherit;
32
+ }
33
+
34
+ code {
35
+ font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace;
36
+ font-size: 0.9em;
37
+ background-color: var(--code-bg);
38
+ padding: 2px 5px;
39
+ border-radius: 3px;
40
+ }
41
+
42
+ body {
43
+ background-color: var(--bg);
44
+ color: var(--fg);
45
+ font-family: system-ui, -apple-system, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
46
+ font-size: 16px;
47
+ }
48
+
49
+ .header {
50
+ position: sticky;
51
+ top: 0;
52
+ z-index: 50;
53
+ background-color: var(--bg);
54
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
55
+ }
56
+ [data-theme="light"] .header {
57
+ border-bottom: 1px solid rgba(0, 0, 0, 0.06);
58
+ }
59
+
60
+ .header-top__content {
61
+ width: 100%;
62
+ max-width: 1440px;
63
+ height: 80px;
64
+ margin: 0 auto;
65
+ padding: 0 32px;
66
+ display: flex;
67
+ align-items: center;
68
+ gap: 12px;
69
+ }
70
+
71
+ .logo-link { display: flex !important; align-items: center !important; text-decoration: none !important; color: var(--fg) !important; font-size: 18px !important; font-weight: 600 !important; }
72
+ .logo__img {
73
+ height: 75px;
74
+ width: auto;
75
+ }
76
+
77
+ .theme-button {
78
+ border: 1px solid transparent;
79
+ border-radius: 4px;
80
+ padding: 0px 5px;
81
+ height: 30px;
82
+ display: flex;
83
+ align-items: center;
84
+
85
+ &:hover {
86
+ border: 1px solid var(--border);
87
+ }
88
+ }
89
+
90
+ .header-actions {
91
+ margin-left: auto;
92
+ display: flex;
93
+ align-items: center;
94
+ gap: 8px;
95
+ }
96
+
97
+ .theme-button--fixed {
98
+ position: fixed;
99
+ bottom: 16px;
100
+ left: 16px;
101
+ z-index: 50;
102
+ background: var(--surface);
103
+ border: 1px solid var(--border);
104
+ border-radius: 8px;
105
+ padding: 8px;
106
+ height: auto;
107
+ margin-left: 0;
108
+ }
109
+
110
+ .theme-button__icon--hidden {
111
+ display: none;
112
+ }
113
+
114
+ .cookie-auth {
115
+ display: flex;
116
+ align-items: center;
117
+ gap: 8px;
118
+ }
119
+
120
+ #cookie-auth-logout,
121
+ #cookie-auth-logout-mobile,
122
+ .cookie-auth-user { display: none; }
123
+
124
+ .docula-auth-logged-in #cookie-auth-login,
125
+ .docula-auth-logged-in #cookie-auth-login-mobile { display: none; }
126
+ .docula-auth-logged-in #cookie-auth-logout,
127
+ .docula-auth-logged-in #cookie-auth-logout-mobile { display: flex; }
128
+ .docula-auth-logged-in .cookie-auth-user { display: inline; }
129
+
130
+ .cookie-auth-btn {
131
+ border: 1px solid var(--border);
132
+ border-radius: 4px;
133
+ padding: 4px 10px;
134
+ height: 30px;
135
+ display: flex;
136
+ align-items: center;
137
+ gap: 6px;
138
+ background: transparent;
139
+ color: var(--fg);
140
+ font-size: 13px;
141
+ cursor: pointer;
142
+ text-decoration: none;
143
+ white-space: nowrap;
144
+
145
+ &:hover {
146
+ border-color: var(--border-hover);
147
+ background: var(--surface-hover);
148
+ }
149
+ }
150
+
151
+ .cookie-auth-user:empty {
152
+ display: none !important;
153
+ }
154
+
155
+ .cookie-auth-user {
156
+ font-weight: 500;
157
+ max-width: 150px;
158
+ overflow: hidden;
159
+ text-overflow: ellipsis;
160
+ }
161
+
162
+ .cookie-auth-btn--fixed {
163
+ position: fixed;
164
+ bottom: 16px;
165
+ left: 56px;
166
+ z-index: 50;
167
+ background: var(--surface);
168
+ border: 1px solid var(--border);
169
+ border-radius: 8px;
170
+ padding: 6px 12px;
171
+ height: auto;
172
+ }
173
+
174
+ .cookie-auth-btn--mobile {
175
+ width: 100%;
176
+ background: transparent;
177
+ border: none;
178
+ cursor: pointer;
179
+ text-align: left;
180
+ font-size: inherit;
181
+ color: inherit;
182
+ }
183
+
184
+ .mobile-menu-toggle {
185
+ display: none;
186
+ align-items: center;
187
+ justify-content: center;
188
+ width: 32px;
189
+ height: 32px;
190
+ margin-right: 8px;
191
+ }
192
+
193
+ .header_space {
194
+ height: 102px;
195
+ }
196
+
197
+ .header-bottom__nav {
198
+ display: flex;
199
+ gap: 5px;
200
+ }
201
+
202
+ .header-bottom__item {
203
+ font-size: 14px;
204
+ padding: 10px;
205
+ border-radius: 4px;
206
+ display: block;
207
+ border: 1px solid transparent;
208
+ height: 30px;
209
+ display: flex;
210
+ align-items: center;
211
+ font-weight: 600;
212
+ gap: 6px;
213
+
214
+ &:hover {
215
+ border: 1px solid var(--border);
216
+ }
217
+ }
218
+
219
+ .header-bottom__item--active {
220
+ background-color: var(--surface-hover);
221
+ }
222
+
223
+ .search-button {
224
+ border: 1px solid var(--border);
225
+ border-radius: 6px;
226
+ padding: 0px 10px;
227
+ height: 32px;
228
+ width: 200px;
229
+ display: flex;
230
+ align-items: center;
231
+ gap: 8px;
232
+ color: var(--muted-fg);
233
+ background: var(--surface);
234
+ cursor: pointer;
235
+ transition: border-color 0.15s ease, color 0.15s ease;
236
+ }
237
+
238
+ .search-button:hover {
239
+ border-color: var(--border-hover);
240
+ color: var(--fg);
241
+ }
242
+
243
+ .search-button svg {
244
+ flex-shrink: 0;
245
+ }
246
+
247
+ .search-button__text {
248
+ font-size: 14px;
249
+ flex: 1;
250
+ text-align: left;
251
+ font-weight: 400;
252
+ }
253
+
254
+ .search-button__shortcut {
255
+ font-size: 12px;
256
+ font-weight: 500;
257
+ padding: 1px 6px;
258
+ border: 1px solid var(--border);
259
+ border-radius: 4px;
260
+ opacity: 0.7;
261
+ }
262
+
263
+ /* Search modal */
264
+ body.search-open {
265
+ overflow: hidden;
266
+ }
267
+
268
+ .search-modal {
269
+ position: fixed;
270
+ inset: 0;
271
+ z-index: 200;
272
+ display: flex;
273
+ align-items: flex-start;
274
+ justify-content: center;
275
+ padding: 12vh 16px 16px;
276
+ }
277
+
278
+ .search-modal[hidden] {
279
+ display: none;
280
+ }
281
+
282
+ .search-modal__backdrop {
283
+ position: absolute;
284
+ inset: 0;
285
+ background: rgba(0, 0, 0, 0.6);
286
+ backdrop-filter: blur(2px);
287
+ }
288
+
289
+ .search-modal__panel {
290
+ position: relative;
291
+ display: flex;
292
+ flex-direction: column;
293
+ width: min(680px, 100%);
294
+ max-height: 76vh;
295
+ background: var(--bg);
296
+ border: 1px solid var(--border-strong);
297
+ border-radius: 12px;
298
+ box-shadow: 0 16px 48px rgba(0, 0, 0, 0.5);
299
+ overflow: hidden;
300
+ }
301
+
302
+ .search-modal__panel:focus-within {
303
+ border-color: var(--link);
304
+ }
305
+
306
+ .search-modal__header {
307
+ display: flex;
308
+ align-items: center;
309
+ gap: 10px;
310
+ padding: 14px 16px;
311
+ border-bottom: 1px solid var(--border);
312
+ }
313
+
314
+ .search-modal__icon {
315
+ color: var(--muted-fg);
316
+ flex-shrink: 0;
317
+ }
318
+
319
+ .search-modal__input {
320
+ flex: 1;
321
+ min-width: 0;
322
+ border: none;
323
+ background: transparent;
324
+ color: var(--fg);
325
+ font-size: 16px;
326
+ font-family: inherit;
327
+ outline: none;
328
+ }
329
+
330
+ .search-modal__input::placeholder {
331
+ color: var(--muted-fg);
332
+ }
333
+
334
+ .search-modal__input::-webkit-search-cancel-button {
335
+ display: none;
336
+ }
337
+
338
+ .search-modal__clear {
339
+ display: flex;
340
+ align-items: center;
341
+ justify-content: center;
342
+ border: none;
343
+ background: transparent;
344
+ color: var(--muted-fg);
345
+ cursor: pointer;
346
+ padding: 2px;
347
+ border-radius: 4px;
348
+ }
349
+
350
+ .search-modal__clear:hover {
351
+ color: var(--fg);
352
+ background: var(--surface-hover);
353
+ }
354
+
355
+ .search-modal__clear[hidden] {
356
+ display: none;
357
+ }
358
+
359
+ .search-modal__body {
360
+ flex: 1;
361
+ overflow-y: auto;
362
+ padding: 8px;
363
+ }
364
+
365
+ .search-results {
366
+ list-style: none;
367
+ margin: 0;
368
+ padding: 0;
369
+ display: flex;
370
+ flex-direction: column;
371
+ gap: 4px;
372
+ }
373
+
374
+ .search-results[hidden] {
375
+ display: none;
376
+ }
377
+
378
+ .search-result__link {
379
+ display: flex;
380
+ align-items: flex-start;
381
+ gap: 12px;
382
+ padding: 10px 12px;
383
+ border-radius: 8px;
384
+ border: 1px solid transparent;
385
+ color: var(--fg);
386
+ text-decoration: none;
387
+ }
388
+
389
+ .search-result--active .search-result__link {
390
+ background: var(--surface-hover);
391
+ border-color: var(--border-strong);
392
+ }
393
+
394
+ .search-result__icon {
395
+ display: flex;
396
+ align-items: center;
397
+ color: var(--muted-fg);
398
+ margin-top: 2px;
399
+ flex-shrink: 0;
400
+ }
401
+
402
+ .search-result--active .search-result__icon {
403
+ color: var(--link);
404
+ }
405
+
406
+ .search-result__content {
407
+ min-width: 0;
408
+ flex: 1;
409
+ }
410
+
411
+ .search-result__breadcrumb {
412
+ font-size: 12px;
413
+ color: var(--muted-fg);
414
+ margin-bottom: 2px;
415
+ white-space: nowrap;
416
+ overflow: hidden;
417
+ text-overflow: ellipsis;
418
+ }
419
+
420
+ .search-result__title {
421
+ font-size: 15px;
422
+ font-weight: 600;
423
+ line-height: 1.3;
424
+ }
425
+
426
+ .search-result__text {
427
+ font-size: 13px;
428
+ color: var(--muted-fg);
429
+ margin-top: 3px;
430
+ display: -webkit-box;
431
+ -webkit-line-clamp: 2;
432
+ -webkit-box-orient: vertical;
433
+ overflow: hidden;
434
+ }
435
+
436
+ .search-result__mark {
437
+ background: transparent;
438
+ color: var(--link);
439
+ font-weight: 700;
440
+ padding: 0;
441
+ }
442
+
443
+ .search-modal__empty,
444
+ .search-modal__initial {
445
+ padding: 28px 16px;
446
+ text-align: center;
447
+ color: var(--muted-fg);
448
+ font-size: 14px;
449
+ }
450
+
451
+ .search-modal__empty[hidden],
452
+ .search-modal__initial[hidden] {
453
+ display: none;
454
+ }
455
+
456
+ .search-modal__footer {
457
+ display: flex;
458
+ flex-wrap: wrap;
459
+ gap: 16px;
460
+ padding: 10px 16px;
461
+ border-top: 1px solid var(--border);
462
+ font-size: 12px;
463
+ color: var(--muted-fg);
464
+ }
465
+
466
+ .search-modal__hint {
467
+ display: flex;
468
+ align-items: center;
469
+ gap: 4px;
470
+ }
471
+
472
+ .search-modal__kbd {
473
+ display: inline-flex;
474
+ align-items: center;
475
+ justify-content: center;
476
+ min-width: 18px;
477
+ height: 18px;
478
+ padding: 0 4px;
479
+ border: 1px solid var(--border);
480
+ border-radius: 4px;
481
+ background: var(--surface);
482
+ font-size: 11px;
483
+ font-family: inherit;
484
+ }
485
+
486
+ @media (max-width: 720px) {
487
+ .search-button {
488
+ width: auto;
489
+ }
490
+
491
+ .search-button__text,
492
+ .search-button__shortcut {
493
+ display: none;
494
+ }
495
+
496
+ .search-modal {
497
+ padding: 8vh 10px 10px;
498
+ }
499
+
500
+ .search-modal__footer {
501
+ display: none;
502
+ }
503
+ }
504
+
505
+ .content {
506
+ width: 100%;
507
+ max-width: 1440px;
508
+ margin: 0 auto;
509
+ display: flex;
510
+ }
511
+
512
+ .nav-sidebar {
513
+ padding: 26px 32px 24px 32px;
514
+ width: 288px;
515
+ min-width: 288px;
516
+ display: flex;
517
+ flex-direction: column;
518
+ position: sticky;
519
+ top: var(--header-height);
520
+ max-height: calc(100vh - var(--header-height));
521
+ overflow-y: auto;
522
+ align-self: flex-start;
523
+ }
524
+
525
+ .nav-sidebar__section {
526
+ margin-top: 1px;
527
+ }
528
+
529
+ .nav-sidebar__section:has(.nav-sidebar__title) {
530
+ margin-top: 12px;
531
+ }
532
+
533
+ .nav-sidebar__section:first-child {
534
+ margin-top: 0;
535
+ }
536
+
537
+ .nav-sidebar__title {
538
+ font-size: 12px;
539
+ font-weight: 600;
540
+ text-transform: uppercase;
541
+ line-height: 16px;
542
+ margin-block: 4px;
543
+ color: var(--muted);
544
+ padding: 0 0 0 10px;
545
+ letter-spacing: 0.24px;
546
+ }
547
+
548
+ .nav-sidebar__title:has(.nav-sidebar__toggle) {
549
+ padding: 0;
550
+ }
551
+
552
+ .nav-sidebar__toggle {
553
+ all: unset;
554
+ box-sizing: border-box;
555
+ display: flex;
556
+ align-items: center;
557
+ justify-content: space-between;
558
+ width: 100%;
559
+ cursor: pointer;
560
+ padding: 0 8px 0 10px;
561
+ font: inherit;
562
+ color: inherit;
563
+ text-transform: inherit;
564
+ letter-spacing: inherit;
565
+ }
566
+
567
+ .nav-sidebar__toggle:focus-visible {
568
+ outline: 2px solid var(--accent, currentColor);
569
+ outline-offset: 2px;
570
+ border-radius: 4px;
571
+ }
572
+
573
+ .nav-sidebar__chevron {
574
+ flex-shrink: 0;
575
+ transition: transform 150ms ease;
576
+ }
577
+
578
+ .nav-sidebar__section--collapsed .nav-sidebar__chevron {
579
+ transform: rotate(-90deg);
580
+ }
581
+
582
+ .nav-sidebar__section--collapsed .nav-sidebar__list {
583
+ display: none;
584
+ }
585
+
586
+ .nav-sidebar__list {
587
+ margin-block: 2px;
588
+ }
589
+
590
+ .nav-sidebar__item {
591
+ font-size: 14px;
592
+ padding: 3px 8px 3px 12px;
593
+ border-radius: 4px;
594
+ width: 100%;
595
+ display: flex;
596
+ align-items: center;
597
+ line-height: 1.4;
598
+ margin-top: 1px;
599
+
600
+ &:hover {
601
+ background-color: var(--surface);
602
+ }
603
+ }
604
+
605
+ .nav-sidebar__item--active {
606
+ background-color: var(--surface);
607
+ }
608
+
609
+ .article {
610
+ padding: 32px;
611
+ width: calc(100% - 288px);
612
+ }
613
+
614
+ .article__header{
615
+ border-bottom: 1px solid var(--border);
616
+ padding-bottom: 30px;
617
+ }
618
+
619
+ .article__title {
620
+ font-size: 1.9em;
621
+ font-weight: 600;
622
+ line-height: 1.2;
623
+ }
624
+
625
+ .article__description {
626
+ font-size: 18px;
627
+ margin-top: 15px;
628
+ line-height: 1.5;
629
+ }
630
+
631
+ .article__body {
632
+ display: flex;
633
+ width: 100%;
634
+ }
635
+
636
+ .article__main {
637
+ margin-top: 30px;
638
+ width: calc(100% - 280px);
639
+ max-width: 100%;
640
+ font-size: 15px;
641
+ line-height: 1.5;
642
+ }
643
+
644
+ .article__main h1, .release-body h1, .changelog-entry-body h1, .home-content h1 { font-size: 1.65em; font-weight: 600; line-height: 1.25; margin: 25px 0 15px; }
645
+ .article__main h2, .release-body h2, .changelog-entry-body h2, .home-content h2 { font-size: 1.4em; font-weight: 600; line-height: 1.3; margin: 20px 0 12px; }
646
+ .article__main h3, .release-body h3, .changelog-entry-body h3, .home-content h3 { font-size: 1.15em; font-weight: 600; line-height: 1.4; margin: 18px 0 10px; }
647
+ .article__main p, .release-body p, .changelog-entry-body p, .home-content p { margin-bottom: 15px; }
648
+ .article__main ul, .article__main ol, .release-body ul, .release-body ol, .changelog-entry-body ul, .changelog-entry-body ol, .home-content ul, .home-content ol { margin-bottom: 15px; padding-left: 24px; }
649
+ .article__main li, .release-body li, .changelog-entry-body li, .home-content li { margin-bottom: 6px; list-style: disc; }
650
+ .article__main ol li, .release-body ol li, .changelog-entry-body ol li, .home-content ol li { list-style: decimal; }
651
+ .article__main a, .release-body a, .changelog-entry-body a, .home-content a { color: var(--link); text-decoration: underline; }
652
+ .article__main pre, .release-body pre, .changelog-entry-body pre, .home-content pre { background: var(--pre-bg); border-radius: 6px; padding: 12px 16px; margin-bottom: 20px; overflow-x: auto; position: relative; }
653
+ .article__main pre code, .release-body pre code, .changelog-entry-body pre code, .home-content pre code { background: none; padding: 0; font-size: 13.5px; line-height: 1.5; }
654
+ .copy-code-btn { position: absolute; top: 8px; right: 8px; padding: 4px; line-height: 0; border-radius: 4px; background: transparent; color: var(--muted); border: none; cursor: pointer; opacity: 0; transition: opacity 0.15s; }
655
+ pre:hover .copy-code-btn { opacity: 1; }
656
+ .copy-code-btn:hover { color: var(--fg); }
657
+ .article__main img:not(a img), .changelog-entry-body img:not(a img) { cursor: zoom-in; }
658
+ .lightbox-overlay { display: none; position: fixed; inset: 0; z-index: 200; background: rgba(0, 0, 0, 0.8); justify-content: center; align-items: center; cursor: pointer; }
659
+ .lightbox-overlay--visible { display: flex !important; }
660
+ .lightbox-overlay img { max-width: 90vw; max-height: 90vh; border-radius: 8px; box-shadow: 0 4px 24px rgba(0, 0, 0, 0.4); cursor: default; }
661
+ .lightbox-close { position: absolute; top: 16px; right: 16px; background: none; border: none; color: #fff; cursor: pointer; padding: 4px; line-height: 0; }
662
+ .lightbox-close:hover { opacity: 0.7; }
663
+ .article__main blockquote, .release-body blockquote, .changelog-entry-body blockquote, .home-content blockquote { border-left: 3px solid var(--border-strong); padding: 10px 16px; margin-bottom: 15px; color: var(--muted); }
664
+ .article__main img, .release-body img, .changelog-entry-body img, .home-content img { max-width: 100%; border-radius: 6px; }
665
+ .article__main table, .release-body table, .changelog-entry-body table, .home-content table { width: 100%; border-collapse: collapse; margin-bottom: 15px; }
666
+ .article__main th, .article__main td, .release-body th, .release-body td, .changelog-entry-body th, .changelog-entry-body td, .home-content th, .home-content td { border: 1px solid var(--border); padding: 8px 12px; text-align: left; }
667
+ .article__main th, .release-body th, .changelog-entry-body th, .home-content th { font-weight: 600; background: var(--pre-bg); }
668
+
669
+ .article__edit-link {
670
+ display: inline-flex;
671
+ align-items: center;
672
+ gap: 6px;
673
+ margin-top: 30px;
674
+ padding: 8px 0;
675
+ font-size: 14px;
676
+ color: var(--muted);
677
+ text-decoration: none;
678
+ border-top: 1px solid var(--border);
679
+ width: 100%;
680
+ }
681
+
682
+ .article__edit-link:hover {
683
+ color: var(--link);
684
+ }
685
+
686
+ .article__section {
687
+ & * {
688
+ margin-bottom: 15px;
689
+ }
690
+
691
+ & h1 {
692
+ font-size: 1.65em;
693
+ font-weight: 600;
694
+ line-height: 1.25;
695
+ }
696
+
697
+ & p {
698
+ font-size: 15px;
699
+ margin-top: 15px;
700
+ line-height: 1.5;
701
+ }
702
+ }
703
+
704
+ .content-aside {
705
+ width: 280px;
706
+ min-width: 280px;
707
+ padding: 30px 20px 30px 40px;
708
+ font-size: 13px;
709
+ position: sticky;
710
+ top: var(--header-height);
711
+ max-height: calc(100vh - var(--header-height));
712
+ overflow-y: auto;
713
+ align-self: flex-start;
714
+ }
715
+
716
+ .content-aside__list {
717
+ display: flex;
718
+ flex-direction: column;
719
+ }
720
+
721
+ .content-aside__title {
722
+ font-size: 11px;
723
+ font-weight: 700;
724
+ text-transform: uppercase;
725
+ padding-left: 23px;
726
+ margin-bottom: 8px;
727
+ }
728
+
729
+ .content-aside__list li {
730
+ font-size: 13px;
731
+ line-height: 1.5;
732
+ }
733
+
734
+ .content-aside__list a {
735
+ font-size: 13px;
736
+ line-height: 1.5;
737
+ padding: 4px 5px 4px 23px;
738
+ display: block;
739
+ }
740
+
741
+ .content-aside__item {
742
+ font-size: 13px;
743
+ padding: 4px 8px 4px 23px;
744
+ width: 100%;
745
+ display: block;
746
+ line-height: 1.5;
747
+ }
748
+
749
+ /* Responsive: hide TOC aside on smaller screens */
750
+ @media (max-width: 1100px) {
751
+ .content-aside { display: none; }
752
+ .article__main { width: 100%; }
753
+ }
754
+
755
+ /* Global mobile sidebar */
756
+ .mobile-sidebar {
757
+ display: none;
758
+ }
759
+
760
+ .sidebar-backdrop {
761
+ display: none;
762
+ position: fixed;
763
+ inset: 0;
764
+ background: rgba(0, 0, 0, 0.5);
765
+ z-index: 90;
766
+ }
767
+
768
+ .sidebar-backdrop--visible {
769
+ display: block;
770
+ }
771
+
772
+ /* Page dropdown (docs mobile only) */
773
+ .page-dropdown {
774
+ display: none;
775
+ }
776
+
777
+ /* Responsive: mobile layout */
778
+ @media (max-width: 1024px) {
779
+ .mobile-menu-toggle { display: flex; }
780
+ .header-bottom__nav { display: none; }
781
+ .header-top__content { padding: 0 16px; }
782
+
783
+ .nav-sidebar {
784
+ display: none;
785
+ }
786
+
787
+ .mobile-sidebar {
788
+ display: block;
789
+ position: fixed;
790
+ top: 0;
791
+ left: 0;
792
+ width: 260px;
793
+ height: 100vh;
794
+ z-index: 100;
795
+ background: var(--bg);
796
+ transform: translateX(-100%);
797
+ transition: transform 0.25s ease;
798
+ border-right: 1px solid var(--border);
799
+ padding: 20px 0;
800
+ overflow-y: auto;
801
+ }
802
+
803
+ .mobile-sidebar--open {
804
+ transform: translateX(0);
805
+ }
806
+
807
+ .mobile-nav {
808
+ display: flex;
809
+ flex-direction: column;
810
+ padding: 0 10px;
811
+ gap: 2px;
812
+ }
813
+
814
+ .mobile-nav__item {
815
+ font-size: 15px;
816
+ font-weight: 600;
817
+ padding: 12px 14px;
818
+ border-radius: 8px;
819
+ display: flex;
820
+ align-items: center;
821
+ gap: 10px;
822
+ width: 100%;
823
+ }
824
+
825
+ .mobile-nav__item:hover {
826
+ background-color: var(--surface-hover);
827
+ box-shadow: inset 0 0 0 1px var(--border);
828
+ }
829
+
830
+ .mobile-nav__item--active {
831
+ background-color: var(--surface);
832
+ }
833
+
834
+ .page-dropdown {
835
+ display: block;
836
+ padding: 8px 16px;
837
+ border-bottom: 1px solid var(--border);
838
+ position: sticky;
839
+ top: var(--header-height);
840
+ z-index: 40;
841
+ background: var(--bg);
842
+ }
843
+
844
+ .page-dropdown__toggle {
845
+ width: 100%;
846
+ display: flex;
847
+ align-items: center;
848
+ justify-content: space-between;
849
+ padding: 8px 12px;
850
+ border: 1px solid var(--border);
851
+ border-radius: 6px;
852
+ font-size: 14px;
853
+ background: var(--bg);
854
+ color: var(--fg);
855
+ cursor: pointer;
856
+ }
857
+
858
+ .page-dropdown__title {
859
+ font-weight: 500;
860
+ overflow: hidden;
861
+ text-overflow: ellipsis;
862
+ white-space: nowrap;
863
+ }
864
+
865
+ .page-dropdown__list {
866
+ display: none;
867
+ padding: 8px 0;
868
+ max-height: 60vh;
869
+ overflow-y: auto;
870
+ }
871
+
872
+ .page-dropdown__list--open {
873
+ display: block;
874
+ }
875
+
876
+ .article {
877
+ width: 100%;
878
+ padding: 20px 16px;
879
+ }
880
+ }
881
+
882
+ /* Home page styles */
883
+ .home-content {
884
+ padding: 2rem;
885
+ width: 100%;
886
+ max-width: 900px;
887
+ margin: 0 auto;
888
+ font-size: 15px;
889
+ line-height: 1.5;
890
+ overflow-wrap: break-word;
891
+ }
892
+
893
+ .home-content > section {
894
+ padding: 3rem 0;
895
+ }
896
+
897
+ .home-content .home-title {
898
+ font-size: 1.875rem;
899
+ font-weight: 700;
900
+ margin-bottom: 2rem;
901
+ text-align: center;
902
+ }
903
+
904
+ .home-content .facepile {
905
+ display: flex;
906
+ flex-wrap: wrap;
907
+ justify-content: center;
908
+ padding-left: 1rem;
909
+ line-height: 2;
910
+ }
911
+
912
+ .home-content .facepile a {
913
+ display: inline-block;
914
+ margin-left: -0.75rem;
915
+ transition: transform 0.2s, z-index 0s;
916
+ }
917
+
918
+ .home-content .facepile a:hover {
919
+ transform: scale(1.15);
920
+ z-index: 1;
921
+ }
922
+
923
+ .home-content .facepile a img {
924
+ width: 3.5rem;
925
+ height: 3.5rem;
926
+ border-radius: 50%;
927
+ border: 2px solid var(--bg);
928
+ object-fit: cover;
929
+ vertical-align: middle;
930
+ }
931
+
932
+ .home-content .release {
933
+ border-bottom: 1px solid var(--border);
934
+ padding: 1.5rem 0;
935
+ }
936
+
937
+ .home-content .release:last-of-type {
938
+ border-bottom: none;
939
+ }
940
+
941
+ .home-content .release-header {
942
+ display: flex;
943
+ align-items: baseline;
944
+ gap: 12px;
945
+ margin-bottom: 10px;
946
+ }
947
+
948
+ .home-content .release-title {
949
+ font-size: 1.1em;
950
+ font-weight: 600;
951
+ }
952
+
953
+ .home-content .release-date {
954
+ font-size: 13px;
955
+ color: var(--muted);
956
+ }
957
+
958
+ .home-content .release-body {
959
+ font-size: 15px;
960
+ line-height: 1.6;
961
+ }
962
+
963
+ .home-content .release-btn {
964
+ display: inline-flex;
965
+ align-items: center;
966
+ gap: 6px;
967
+ margin-top: 2rem;
968
+ padding: 0.75rem 1.5rem;
969
+ border: 2px solid var(--border-strong);
970
+ border-radius: 0.5rem;
971
+ font-size: 1rem;
972
+ font-weight: 600;
973
+ color: var(--fg);
974
+ transition: border-color 0.2s;
975
+ }
976
+
977
+ .home-content .release-btn:hover {
978
+ border-color: var(--border-hover);
979
+ }
980
+
981
+ @media (min-width: 992px) {
982
+ .home-content .home-title {
983
+ font-size: 3rem;
984
+ margin-bottom: 4rem;
985
+ }
986
+
987
+ .home-content .facepile a img {
988
+ width: 4.25rem;
989
+ height: 4.25rem;
990
+ }
991
+ }
992
+
993
+ /* Changelog styles */
994
+ .versions-container {
995
+ width: 100%;
996
+ max-width: 900px;
997
+ margin: 0 auto;
998
+ padding: 32px;
999
+ }
1000
+
1001
+ .versions-content .home-title {
1002
+ font-size: 1.5em;
1003
+ font-weight: 600;
1004
+ margin-bottom: 20px;
1005
+ }
1006
+
1007
+ .changelog-entry {
1008
+ position: relative;
1009
+ border-bottom: 1px solid var(--border);
1010
+ padding: 20px 0;
1011
+ }
1012
+
1013
+ .changelog-entry-header {
1014
+ display: flex;
1015
+ align-items: center;
1016
+ gap: 10px;
1017
+ margin-bottom: 6px;
1018
+ }
1019
+
1020
+ .changelog-entry-title {
1021
+ font-size: 1.1em;
1022
+ font-weight: 600;
1023
+ }
1024
+
1025
+ .changelog-entry-date {
1026
+ font-size: 13px;
1027
+ color: var(--muted);
1028
+ }
1029
+
1030
+ .changelog-entry-body {
1031
+ margin-top: 12px;
1032
+ font-size: 15px;
1033
+ line-height: 1.6;
1034
+ overflow-wrap: break-word;
1035
+ }
1036
+
1037
+ .changelog-entry-nav {
1038
+ margin-bottom: 20px;
1039
+ }
1040
+
1041
+ .changelog-entry-nav a {
1042
+ font-size: 14px;
1043
+ color: var(--muted);
1044
+ }
1045
+
1046
+ .changelog-entry-nav a:hover {
1047
+ color: var(--fg);
1048
+ }
1049
+
1050
+ .changelog-tag {
1051
+ font-size: 11px;
1052
+ font-weight: 600;
1053
+ padding: 2px 8px;
1054
+ border-radius: 4px;
1055
+ text-transform: uppercase;
1056
+ background-color: var(--surface);
1057
+ }
1058
+
1059
+ .changelog-tag-release {
1060
+ background-color: rgba(16, 185, 129, 0.15);
1061
+ color: #047857;
1062
+ }
1063
+
1064
+ .changelog-tag-pre-release {
1065
+ background-color: rgba(251, 191, 36, 0.15);
1066
+ color: #92400e;
1067
+ }
1068
+
1069
+ .changelog-tag-added {
1070
+ background-color: rgba(140, 220, 0, 0.15);
1071
+ color: #4a7a00;
1072
+ }
1073
+
1074
+ .changelog-tag-improved {
1075
+ background-color: rgba(59, 130, 246, 0.15);
1076
+ color: #1d4ed8;
1077
+ }
1078
+
1079
+ .changelog-tag-fixed {
1080
+ background-color: rgba(245, 158, 11, 0.15);
1081
+ color: #b45309;
1082
+ }
1083
+
1084
+ .changelog-tag-removed {
1085
+ background-color: rgba(239, 68, 68, 0.15);
1086
+ color: #b91c1c;
1087
+ }
1088
+
1089
+ .changelog-tag-deprecated {
1090
+ background-color: rgba(156, 163, 175, 0.15);
1091
+ color: #4b5563;
1092
+ }
1093
+
1094
+ .changelog-tag-security {
1095
+ background-color: rgba(168, 85, 247, 0.15);
1096
+ color: #6d28d9;
1097
+ }
1098
+
1099
+ .changelog-entry-title::after {
1100
+ content: "";
1101
+ position: absolute;
1102
+ inset: 0;
1103
+ z-index: 1;
1104
+ }
1105
+
1106
+ .changelog-entry:hover {
1107
+ cursor: pointer;
1108
+ }
1109
+
1110
+ .changelog-entry-single .changelog-entry-title::after {
1111
+ display: none;
1112
+ }
1113
+
1114
+ .changelog-entry-single:hover {
1115
+ cursor: default;
1116
+ }
1117
+
1118
+ .changelog-entry-image {
1119
+ margin-top: 12px;
1120
+ }
1121
+
1122
+ .changelog-entry-image img {
1123
+ max-width: 100%;
1124
+ height: auto;
1125
+ border-radius: 8px;
1126
+ }
1127
+
1128
+ .changelog-entry-preview {
1129
+ margin-top: 12px;
1130
+ font-size: 15px;
1131
+ line-height: 1.6;
1132
+ overflow-wrap: break-word;
1133
+ color: var(--muted);
1134
+ }
1135
+
1136
+ .changelog-entry-preview img {
1137
+ max-width: 100%;
1138
+ border-radius: 6px;
1139
+ }
1140
+
1141
+ .changelog-read-more {
1142
+ display: inline-block;
1143
+ margin-top: 8px;
1144
+ font-size: 14px;
1145
+ color: var(--muted);
1146
+ }
1147
+
1148
+ .changelog-entry:hover .changelog-read-more {
1149
+ color: var(--fg);
1150
+ }
1151
+
1152
+ .changelog-pagination {
1153
+ display: flex;
1154
+ justify-content: center;
1155
+ align-items: center;
1156
+ gap: 16px;
1157
+ padding: 24px 0;
1158
+ margin-top: 12px;
1159
+ border-top: 1px solid var(--border);
1160
+ }
1161
+
1162
+ .changelog-pagination-link {
1163
+ font-size: 14px;
1164
+ color: var(--muted);
1165
+ text-decoration: none;
1166
+ }
1167
+
1168
+ .changelog-pagination-link:hover {
1169
+ color: var(--fg);
1170
+ }
1171
+
1172
+ .changelog-pagination-disabled {
1173
+ color: var(--muted);
1174
+ cursor: default;
1175
+ }
1176
+
1177
+ .changelog-pagination-disabled:hover {
1178
+ text-decoration: none;
1179
+ }
1180
+
1181
+ .changelog-pagination-info {
1182
+ font-size: 14px;
1183
+ color: var(--muted);
1184
+ }
1185
+
1186
+ /* Footer */
1187
+ footer {
1188
+ height: 4rem;
1189
+ display: flex;
1190
+ justify-content: center;
1191
+ align-items: center;
1192
+ font-size: 14px;
1193
+ color: var(--muted);
1194
+ }
1195
+
1196
+
1197
+ .footer__link {
1198
+ margin: 0 0.35rem;
1199
+ color: var(--muted);
1200
+ text-decoration: none;
1201
+ display: inline-flex;
1202
+ align-items: center;
1203
+ }
1204
+
1205
+ .footer__link:hover {
1206
+ color: var(--link);
1207
+ }
1208
+
1209
+ .footer__icon {
1210
+ width: 1rem;
1211
+ height: 1rem;
1212
+ }
1213
+
1214
+ .footer__bat {
1215
+ width: 1.25rem;
1216
+ height: 1.25rem;
1217
+ }
1218
+
1219
+ .footer__updated {
1220
+ font-size: 13px;
1221
+ color: var(--muted);
1222
+ }
1223
+
1224
+ @media (min-width: 992px) {
1225
+ footer { height: 4.75rem; }
1226
+ }
1227
+