@ox-content/vite-plugin 3.0.0-alpha.9 → 3.0.0-beta.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 (79) hide show
  1. package/dist/index.cjs +8893 -2584
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +2023 -205
  4. package/dist/index.d.cts.map +1 -1
  5. package/dist/index.d.mts +2023 -205
  6. package/dist/index.d.mts.map +1 -1
  7. package/dist/index.mjs +8834 -2530
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/markdown-tables.cjs +70 -0
  10. package/dist/markdown-tables.cjs.map +1 -0
  11. package/dist/markdown-tables.d.cts +22 -0
  12. package/dist/markdown-tables.d.cts.map +1 -0
  13. package/dist/markdown-tables.d.mts +22 -0
  14. package/dist/markdown-tables.d.mts.map +1 -0
  15. package/dist/markdown-tables.mjs +66 -0
  16. package/dist/markdown-tables.mjs.map +1 -0
  17. package/dist/napi.cjs +44 -0
  18. package/dist/napi.cjs.map +1 -0
  19. package/dist/napi.mjs +34 -0
  20. package/dist/napi.mjs.map +1 -0
  21. package/dist/reader-chrome-client.cjs +103 -0
  22. package/dist/reader-chrome-client.d.cts +2 -0
  23. package/dist/reader-chrome-client.d.mts +2 -0
  24. package/dist/reader-chrome-client.mjs +102 -0
  25. package/dist/reader-chrome.cjs +109 -0
  26. package/dist/reader-chrome.cjs.map +1 -0
  27. package/dist/reader-chrome.d.cts +103 -0
  28. package/dist/reader-chrome.d.mts +103 -0
  29. package/dist/reader-chrome.mjs +98 -0
  30. package/dist/reader-chrome.mjs.map +1 -0
  31. package/dist/styles/all.css +15 -0
  32. package/dist/styles/citations.css +62 -0
  33. package/dist/styles/core.css +2261 -0
  34. package/dist/styles/github.css +262 -0
  35. package/dist/styles/graphviz.css +34 -0
  36. package/dist/styles/magic-links.css +33 -0
  37. package/dist/styles/markdown-tables.css +16 -0
  38. package/dist/styles/mermaid.css +151 -0
  39. package/dist/styles/not-by-ai.css +43 -0
  40. package/dist/styles/ogp.css +170 -0
  41. package/dist/styles/reader-chrome.css +163 -0
  42. package/dist/styles/social.css +678 -0
  43. package/dist/styles/tabs.css +210 -0
  44. package/dist/styles/theme-transition.css +37 -0
  45. package/dist/styles/twitter-full.css +598 -0
  46. package/dist/styles/youtube.css +87 -0
  47. package/dist/theme-tokens.cjs +95 -0
  48. package/dist/theme-tokens.cjs.map +1 -0
  49. package/dist/theme-tokens.d.cts +72 -0
  50. package/dist/theme-tokens.d.cts.map +1 -0
  51. package/dist/theme-tokens.d.mts +72 -0
  52. package/dist/theme-tokens.d.mts.map +1 -0
  53. package/dist/theme-tokens.mjs +91 -0
  54. package/dist/theme-tokens.mjs.map +1 -0
  55. package/dist/theme-transition-client.cjs +161 -0
  56. package/dist/theme-transition-client.d.cts +21 -0
  57. package/dist/theme-transition-client.d.mts +21 -0
  58. package/dist/theme-transition-client.mjs +160 -0
  59. package/dist/twitter-client.cjs +84 -0
  60. package/dist/twitter-client.d.cts +11 -0
  61. package/dist/twitter-client.d.mts +11 -0
  62. package/dist/twitter-client.mjs +83 -0
  63. package/dist/vitepress.cjs +614 -77
  64. package/dist/vitepress.cjs.map +1 -1
  65. package/dist/vitepress.mjs +588 -65
  66. package/dist/vitepress.mjs.map +1 -1
  67. package/package.json +89 -4
  68. package/dist/api.cjs +0 -6563
  69. package/dist/api.cjs.map +0 -1
  70. package/dist/api.mjs +0 -6456
  71. package/dist/api.mjs.map +0 -1
  72. package/dist/interop.cjs +0 -31
  73. package/dist/interop.cjs.map +0 -1
  74. package/dist/interop.mjs +0 -26
  75. package/dist/interop.mjs.map +0 -1
  76. package/dist/tabs.cjs +0 -98
  77. package/dist/tabs.cjs.map +0 -1
  78. package/dist/tabs.mjs +0 -99
  79. package/dist/tabs.mjs.map +0 -1
@@ -0,0 +1,2261 @@
1
+ :root {
2
+ color-scheme: light dark;
3
+ --octc-sidebar-width: 260px;
4
+ --octc-header-height: 60px;
5
+ --octc-mobile-footer-height: 56px;
6
+ --octc-max-content-width: 960px;
7
+ --octc-mobile-gutter: clamp(1rem, 4vw, 1.25rem);
8
+ --octc-font-sans: "IBM Plex Sans", "Avenir Next", "Segoe UI Variable", "Segoe UI", sans-serif;
9
+ --octc-font-mono: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
10
+ --octc-color-bg: #ffffff;
11
+ --octc-color-bg-alt: #f5f7fb;
12
+ --octc-color-text: #131a30;
13
+ --octc-color-text-muted: #4f607b;
14
+ --octc-color-border: #d2dbea;
15
+ --octc-color-primary: #4f6fae;
16
+ --octc-color-primary-hover: #425f96;
17
+ --octc-color-code-bg: #101a31;
18
+ --octc-color-code-bg-top: #18264a;
19
+ --octc-color-code-text: #edf3ff;
20
+ --octc-color-code-line-highlight: rgba(56, 189, 248, 0.16);
21
+ --octc-color-code-line-warning: rgba(245, 158, 11, 0.18);
22
+ --octc-color-code-line-warning-border: #f59e0b;
23
+ --octc-color-code-line-error: rgba(239, 68, 68, 0.18);
24
+ --octc-color-code-line-error-border: #ef4444;
25
+ --octc-color-code-line-add: rgba(34, 197, 94, 0.16);
26
+ --octc-color-code-line-add-border: #22c55e;
27
+ --octc-color-code-line-remove: rgba(248, 113, 113, 0.14);
28
+ --octc-color-code-line-remove-border: #ef4444;
29
+ --octc-color-code-line-focus: rgba(79, 111, 174, 0.16);
30
+ --octc-color-code-line-dim: 0.45;
31
+ --octc-color-code-title-bg: #18264a;
32
+ --octc-color-code-title-text: #dce7ff;
33
+ --octc-color-code-title-border: rgba(167, 183, 213, 0.26);
34
+ --octc-color-code-line-number: rgba(177, 191, 219, 0.78);
35
+ --octc-color-code-frame-border: rgba(147, 166, 200, 0.46);
36
+ --octc-brand-violet: #4f6fae;
37
+ --octc-brand-cyan: #91ede9;
38
+ --octc-brand-lime: #b9ff66;
39
+ --octc-brand-coral: #ff915c;
40
+ --octc-brand-navy: #2b3c5a;
41
+ --octc-brand-violet-rgb: 79, 111, 174;
42
+ --octc-brand-cyan-rgb: 145, 237, 233;
43
+ --octc-brand-lime-rgb: 185, 255, 102;
44
+ --octc-brand-coral-rgb: 255, 145, 92;
45
+ --octc-color-backdrop: rgba(15, 23, 42, 0.48);
46
+ --octc-surface-glass: #f7f9fc;
47
+ --octc-surface-line: #e2e9f3;
48
+ --octc-surface-noise-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 180'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.2' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23noise)' opacity='0.062'/%3E%3C/svg%3E");
49
+ --octc-surface-noise-size: 164px 164px;
50
+ --octc-color-on-primary: var(--octc-color-bg);
51
+ --octc-color-tip: #0891b2;
52
+ --octc-color-info: #2563eb;
53
+ --octc-color-warning: #d97706;
54
+ --octc-color-danger: #dc2626;
55
+ --octc-color-success: #16a34a;
56
+ --octc-color-deprecated: #7c3aed;
57
+ --octc-color-required: #c2410c;
58
+ --octc-focus-ring: 2px solid var(--octc-color-primary);
59
+ --octc-focus-offset: 2px;
60
+ --octc-motion-base: 150ms;
61
+ --octc-motion-ease: ease;
62
+ --octc-code-pad-block: 1.05rem;
63
+ --octc-code-pad-inline: 1rem;
64
+ --octc-code-title-pad-block: 0.75rem;
65
+ --octc-code-title-gap: 0.875rem;
66
+ --octc-table-cell-pad-block: 0.75rem;
67
+ --octc-table-cell-pad-inline: 1rem;
68
+ --octc-touch-target: 44px;
69
+ }
70
+ [data-theme="light"] {
71
+ color-scheme: light;
72
+ }
73
+ [data-theme="dark"] {
74
+ color-scheme: dark;
75
+ --octc-color-bg: #060816;
76
+ --octc-color-bg-alt: #0d1528;
77
+ --octc-color-text: #ebf2ff;
78
+ --octc-color-text-muted: #8ea0bf;
79
+ --octc-color-border: #223252;
80
+ --octc-color-primary: #86a4da;
81
+ --octc-color-primary-hover: #a3bbe8;
82
+ --octc-color-code-bg: #0a1020;
83
+ --octc-color-code-bg-top: #0a1020;
84
+ --octc-color-code-text: #e7f0ff;
85
+ --octc-color-code-line-highlight: rgba(14, 165, 233, 0.2);
86
+ --octc-color-code-line-warning: rgba(245, 158, 11, 0.2);
87
+ --octc-color-code-line-warning-border: #f59e0b;
88
+ --octc-color-code-line-error: rgba(239, 68, 68, 0.22);
89
+ --octc-color-code-line-error-border: #f87171;
90
+ --octc-color-code-line-add: rgba(34, 197, 94, 0.18);
91
+ --octc-color-code-line-add-border: #4ade80;
92
+ --octc-color-code-line-remove: rgba(248, 113, 113, 0.18);
93
+ --octc-color-code-line-remove-border: #f87171;
94
+ --octc-color-code-line-focus: rgba(134, 164, 218, 0.16);
95
+ --octc-color-code-line-dim: 0.35;
96
+ --octc-color-code-title-bg: rgba(15, 23, 42, 0.82);
97
+ --octc-color-code-title-text: #d7e2f7;
98
+ --octc-color-code-title-border: rgba(131, 151, 184, 0.22);
99
+ --octc-color-code-line-number: rgba(131, 151, 184, 0.78);
100
+ --octc-color-code-frame-border: rgba(34, 50, 82, 0.92);
101
+ --octc-color-backdrop: rgba(2, 6, 18, 0.68);
102
+ --octc-surface-glass: #0c1324;
103
+ --octc-surface-line: #1b2944;
104
+ --octc-surface-noise-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 180'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.25' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23noise)' opacity='0.098'/%3E%3C/svg%3E");
105
+ }
106
+ @media (prefers-color-scheme: dark) {
107
+ :root:not([data-theme="light"]) {
108
+ --octc-color-bg: #060816;
109
+ --octc-color-bg-alt: #0d1528;
110
+ --octc-color-text: #ebf2ff;
111
+ --octc-color-text-muted: #8ea0bf;
112
+ --octc-color-border: #223252;
113
+ --octc-color-primary: #86a4da;
114
+ --octc-color-primary-hover: #a3bbe8;
115
+ --octc-color-code-bg: #0a1020;
116
+ --octc-color-code-bg-top: #0a1020;
117
+ --octc-color-code-text: #e7f0ff;
118
+ --octc-color-code-line-highlight: rgba(14, 165, 233, 0.2);
119
+ --octc-color-code-line-warning: rgba(245, 158, 11, 0.2);
120
+ --octc-color-code-line-warning-border: #f59e0b;
121
+ --octc-color-code-line-error: rgba(239, 68, 68, 0.22);
122
+ --octc-color-code-line-error-border: #f87171;
123
+ --octc-color-code-line-add: rgba(34, 197, 94, 0.18);
124
+ --octc-color-code-line-add-border: #4ade80;
125
+ --octc-color-code-line-remove: rgba(248, 113, 113, 0.18);
126
+ --octc-color-code-line-remove-border: #f87171;
127
+ --octc-color-code-line-focus: rgba(134, 164, 218, 0.16);
128
+ --octc-color-code-line-dim: 0.35;
129
+ --octc-color-code-title-bg: rgba(15, 23, 42, 0.82);
130
+ --octc-color-code-title-text: #d7e2f7;
131
+ --octc-color-code-title-border: rgba(131, 151, 184, 0.22);
132
+ --octc-color-code-line-number: rgba(131, 151, 184, 0.78);
133
+ --octc-color-code-frame-border: rgba(34, 50, 82, 0.92);
134
+ --octc-color-backdrop: rgba(2, 6, 18, 0.68);
135
+ --octc-surface-glass: #0c1324;
136
+ --octc-surface-line: #1b2944;
137
+ --octc-surface-noise-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 180'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.25' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23noise)' opacity='0.098'/%3E%3C/svg%3E");
138
+ }
139
+ }
140
+ * {
141
+ box-sizing: border-box;
142
+ margin: 0;
143
+ padding: 0;
144
+ }
145
+
146
+ html {
147
+ -webkit-text-size-adjust: 100%;
148
+ text-size-adjust: 100%;
149
+ scroll-padding-top: calc(var(--octc-header-height) + 1rem);
150
+ }
151
+ @media (prefers-reduced-motion: no-preference) {
152
+ html {
153
+ scroll-behavior: smooth;
154
+ }
155
+ }
156
+ body {
157
+ font-family: var(--octc-font-sans);
158
+ line-height: 1.7;
159
+ color: var(--octc-color-text);
160
+ min-height: 100vh;
161
+ background: var(--octc-color-bg);
162
+ background-image: var(--octc-surface-noise-image);
163
+ background-size: var(--octc-surface-noise-size);
164
+ background-repeat: repeat;
165
+ background-blend-mode: soft-light;
166
+ overflow-x: hidden;
167
+ }
168
+ body.search-open {
169
+ overflow: hidden;
170
+ }
171
+ body.menu-open {
172
+ overflow: hidden;
173
+ overscroll-behavior: none;
174
+ }
175
+ a {
176
+ color: var(--octc-color-primary);
177
+ text-decoration: none;
178
+ text-decoration-color: color-mix(in srgb, var(--octc-color-primary) 45%, transparent);
179
+ }
180
+ a:hover {
181
+ color: var(--octc-color-primary-hover);
182
+ text-decoration: underline;
183
+ }
184
+ .header {
185
+ position: fixed;
186
+ top: 0;
187
+ left: 0;
188
+ right: 0;
189
+ height: var(--octc-header-height);
190
+ background: color-mix(in srgb, var(--octc-color-bg) 92%, var(--octc-color-bg-alt));
191
+ border-bottom: 1px solid
192
+ color-mix(in srgb, var(--octc-color-border) 75%, var(--octc-surface-line));
193
+ display: flex;
194
+ align-items: center;
195
+ padding: 0 1.5rem;
196
+ z-index: 100;
197
+ }
198
+ .header,
199
+ .search-modal,
200
+ .mobile-footer,
201
+ .content blockquote.ox-callout {
202
+ background-image: var(--octc-surface-noise-image);
203
+ background-size: var(--octc-surface-noise-size);
204
+ background-repeat: repeat;
205
+ background-blend-mode: soft-light;
206
+ }
207
+ .header-title {
208
+ display: inline-flex;
209
+ align-items: center;
210
+ gap: 0.75rem;
211
+ font-size: 1.25rem;
212
+ font-weight: 700;
213
+ letter-spacing: -0.02em;
214
+ color: var(--octc-color-text);
215
+ }
216
+ .header-title--logo-only {
217
+ gap: 0;
218
+ }
219
+ .header-logo {
220
+ display: block;
221
+ margin-right: 8px;
222
+ vertical-align: middle;
223
+ }
224
+ .header-title--logo-only .header-logo {
225
+ margin-right: 0;
226
+ }
227
+ .header-title:hover {
228
+ text-decoration: none;
229
+ }
230
+ .theme-asset--dark {
231
+ display: none;
232
+ }
233
+ [data-theme="dark"] .theme-asset--light {
234
+ display: none;
235
+ }
236
+ [data-theme="dark"] .theme-asset--dark {
237
+ display: block;
238
+ }
239
+ [data-theme="light"] .theme-asset--light {
240
+ display: block;
241
+ }
242
+ [data-theme="light"] .theme-asset--dark {
243
+ display: none;
244
+ }
245
+ .menu-toggle {
246
+ display: none;
247
+ background: none;
248
+ border: none;
249
+ cursor: pointer;
250
+ padding: 0.5rem;
251
+ margin-right: 0.75rem;
252
+ }
253
+ .menu-toggle svg {
254
+ display: block;
255
+ }
256
+ .menu-toggle path {
257
+ stroke: var(--octc-color-text);
258
+ }
259
+ .header-actions {
260
+ margin-left: auto;
261
+ display: flex;
262
+ align-items: center;
263
+ gap: 0.5rem;
264
+ }
265
+ .ox-header-select {
266
+ position: relative;
267
+ }
268
+ .ox-header-select > button {
269
+ display: inline-flex;
270
+ align-items: center;
271
+ background: none;
272
+ border: none;
273
+ border-radius: 4px;
274
+ color: var(--octc-color-text-muted);
275
+ cursor: pointer;
276
+ font: inherit;
277
+ font-size: 0.875rem;
278
+ padding: 0.5rem 0.6rem;
279
+ white-space: nowrap;
280
+ }
281
+ .ox-header-select > button::after {
282
+ content: "";
283
+ width: 0.35em;
284
+ height: 0.35em;
285
+ border-right: 1.5px solid currentColor;
286
+ border-bottom: 1.5px solid currentColor;
287
+ transform: rotate(45deg);
288
+ margin-inline-start: 0.4rem;
289
+ margin-bottom: 0.15em;
290
+ }
291
+ .ox-header-select > button:hover,
292
+ .ox-header-select > button[aria-expanded="true"] {
293
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 82%, var(--octc-color-primary) 12%);
294
+ color: var(--octc-color-text);
295
+ }
296
+ .ox-header-select-menu {
297
+ display: none;
298
+ position: absolute;
299
+ top: calc(100% + 0.35rem);
300
+ inset-inline-end: 0;
301
+ min-width: 8rem;
302
+ margin: 0;
303
+ padding: 0.4rem 0;
304
+ list-style: none;
305
+ background: var(--octc-color-bg);
306
+ border: 1px solid var(--octc-color-border);
307
+ border-radius: 6px;
308
+ z-index: 120;
309
+ }
310
+ .ox-header-select > button[aria-expanded="true"] + .ox-header-select-menu {
311
+ display: block;
312
+ }
313
+ .ox-header-select-menu a,
314
+ .ox-header-select-menu span {
315
+ display: block;
316
+ padding: 0.4rem 0.85rem;
317
+ color: var(--octc-color-text);
318
+ text-decoration: none;
319
+ white-space: nowrap;
320
+ }
321
+ .ox-header-select-menu a:hover {
322
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 82%, var(--octc-color-primary) 12%);
323
+ color: var(--octc-color-text);
324
+ text-decoration: none;
325
+ }
326
+ .ox-header-select-menu [aria-current="page"] {
327
+ color: var(--octc-color-text);
328
+ font-weight: 600;
329
+ }
330
+ .ox-version-badge {
331
+ display: inline-block;
332
+ margin-inline-start: 0.35rem;
333
+ font-size: 0.75em;
334
+ color: var(--octc-color-text-muted);
335
+ }
336
+ .ox-version-banner {
337
+ padding: 0.6rem 1rem;
338
+ border-bottom: 1px solid var(--octc-color-border);
339
+ background: var(--octc-color-bg-alt);
340
+ color: var(--octc-color-text);
341
+ }
342
+ .ox-version-banner--unreleased {
343
+ background: color-mix(
344
+ in srgb,
345
+ var(--octc-color-code-line-warning-border) 16%,
346
+ var(--octc-color-bg)
347
+ );
348
+ }
349
+ .ox-version-banner--unmaintained {
350
+ background: var(--octc-color-bg-alt);
351
+ color: var(--octc-color-text-muted);
352
+ }
353
+ .social-link {
354
+ display: flex;
355
+ align-items: center;
356
+ justify-content: center;
357
+ padding: 0.5rem;
358
+ border-radius: 4px;
359
+ color: var(--octc-color-text-muted);
360
+ }
361
+ .social-link:hover {
362
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 82%, var(--octc-color-primary) 12%);
363
+ color: var(--octc-color-text);
364
+ text-decoration: none;
365
+ }
366
+ .social-link svg {
367
+ display: block;
368
+ }
369
+ .search-button {
370
+ display: flex;
371
+ align-items: center;
372
+ gap: 0.5rem;
373
+ padding: 0.5rem 0.75rem;
374
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 90%, var(--octc-color-primary) 10%);
375
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 88%, var(--octc-color-bg));
376
+ border-radius: 4px;
377
+ color: var(--octc-color-text-muted);
378
+ cursor: pointer;
379
+ font-size: 0.875rem;
380
+ }
381
+ .search-button:hover {
382
+ border-color: var(--octc-color-primary);
383
+ color: var(--octc-color-text);
384
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 82%, var(--octc-color-primary) 10%);
385
+ }
386
+ .search-button svg {
387
+ width: 16px;
388
+ height: 16px;
389
+ }
390
+ .search-button kbd {
391
+ padding: 0.125rem 0.375rem;
392
+ background: var(--octc-color-bg);
393
+ border: 1px solid var(--octc-color-border);
394
+ border-radius: 4px;
395
+ font-family: var(--octc-font-mono);
396
+ font-size: 0.75rem;
397
+ }
398
+ @media (max-width: 640px) {
399
+ .search-button span,
400
+ .search-button kbd {
401
+ display: none;
402
+ }
403
+ .search-button {
404
+ padding: 0.5rem;
405
+ }
406
+ }
407
+ .search-modal-overlay {
408
+ display: none;
409
+ position: fixed;
410
+ inset: 0;
411
+ z-index: 200;
412
+ justify-content: center;
413
+ align-items: flex-start;
414
+ padding: clamp(4rem, 10vh, 7rem) 1rem 1rem;
415
+ overflow-y: auto;
416
+ overscroll-behavior: contain;
417
+ background: var(--octc-color-backdrop);
418
+ -webkit-backdrop-filter: blur(14px) saturate(120%);
419
+ backdrop-filter: blur(14px) saturate(120%);
420
+ }
421
+ .search-modal-overlay.open {
422
+ display: flex;
423
+ }
424
+ .search-modal {
425
+ width: 100%;
426
+ max-width: 560px;
427
+ background: var(--octc-color-bg);
428
+ border: 1px solid var(--octc-color-border);
429
+ border-radius: 4px;
430
+ overflow: hidden;
431
+ height: 70vh;
432
+ max-height: 70vh;
433
+ display: flex;
434
+ flex-direction: column;
435
+ }
436
+ .search-header {
437
+ display: flex;
438
+ align-items: center;
439
+ gap: 0.75rem;
440
+ padding: 1rem;
441
+ border-bottom: 1px solid var(--octc-color-border);
442
+ }
443
+ .search-header svg {
444
+ flex-shrink: 0;
445
+ color: var(--octc-color-text-muted);
446
+ }
447
+ .search-input {
448
+ flex: 1;
449
+ background: none;
450
+ border: none;
451
+ outline: none;
452
+ font-size: 1rem;
453
+ color: var(--octc-color-text);
454
+ }
455
+ .search-input::placeholder {
456
+ color: var(--octc-color-text-muted);
457
+ }
458
+ .search-close {
459
+ padding: 0.25rem 0.5rem;
460
+ background: var(--octc-color-bg-alt);
461
+ border: 1px solid var(--octc-color-border);
462
+ border-radius: 4px;
463
+ color: var(--octc-color-text-muted);
464
+ font-family: var(--octc-font-mono);
465
+ font-size: 0.75rem;
466
+ cursor: pointer;
467
+ }
468
+ .search-results {
469
+ flex: 1;
470
+ overflow-y: auto;
471
+ padding: 0.5rem;
472
+ }
473
+ .search-result {
474
+ display: block;
475
+ padding: 0.75rem 1rem;
476
+ border-radius: 4px;
477
+ color: var(--octc-color-text);
478
+ text-decoration: none;
479
+ }
480
+ .search-result:hover,
481
+ .search-result.selected {
482
+ background: var(--octc-color-bg-alt);
483
+ text-decoration: none;
484
+ }
485
+ .search-result-title {
486
+ display: flex;
487
+ align-items: center;
488
+ gap: 0.5rem;
489
+ flex-wrap: wrap;
490
+ font-weight: 600;
491
+ font-size: 0.875rem;
492
+ margin-bottom: 0.25rem;
493
+ }
494
+ .search-result-scope {
495
+ display: inline-flex;
496
+ align-items: center;
497
+ padding: 0.125rem 0.5rem;
498
+ border-radius: 4px;
499
+ background: color-mix(in srgb, var(--octc-color-primary) 14%, transparent);
500
+ color: var(--octc-color-primary);
501
+ font-size: 0.6875rem;
502
+ font-weight: 700;
503
+ letter-spacing: 0.04em;
504
+ text-transform: uppercase;
505
+ }
506
+ .search-result-snippet {
507
+ font-size: 0.8125rem;
508
+ color: var(--octc-color-text-muted);
509
+ }
510
+ .search-empty {
511
+ padding: 2rem 1rem;
512
+ text-align: center;
513
+ color: var(--octc-color-text-muted);
514
+ }
515
+ .search-footer {
516
+ display: flex;
517
+ align-items: center;
518
+ justify-content: center;
519
+ gap: 1rem;
520
+ padding: 0.75rem 1rem;
521
+ border-top: 1px solid var(--octc-color-border);
522
+ background: var(--octc-color-bg-alt);
523
+ font-size: 0.75rem;
524
+ color: var(--octc-color-text-muted);
525
+ }
526
+ .search-footer kbd {
527
+ padding: 0.125rem 0.375rem;
528
+ background: var(--octc-color-bg);
529
+ border: 1px solid var(--octc-color-border);
530
+ border-radius: 4px;
531
+ font-family: var(--octc-font-mono);
532
+ }
533
+ .theme-toggle {
534
+ background: none;
535
+ border: none;
536
+ cursor: pointer;
537
+ padding: 0.5rem;
538
+ border-radius: 4px;
539
+ color: var(--octc-color-text-muted);
540
+ }
541
+ .theme-toggle:hover {
542
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 82%, var(--octc-color-primary) 12%);
543
+ color: var(--octc-color-text);
544
+ }
545
+ .theme-toggle svg {
546
+ display: block;
547
+ width: 20px;
548
+ height: 20px;
549
+ }
550
+ .theme-toggle .icon-sun {
551
+ display: none;
552
+ }
553
+ .theme-toggle .icon-moon {
554
+ display: block;
555
+ }
556
+ [data-theme="dark"] .theme-toggle .icon-sun {
557
+ display: block;
558
+ }
559
+ [data-theme="dark"] .theme-toggle .icon-moon {
560
+ display: none;
561
+ }
562
+ @media (prefers-color-scheme: dark) {
563
+ :root:not([data-theme="light"]) .theme-toggle .icon-sun {
564
+ display: block;
565
+ }
566
+ :root:not([data-theme="light"]) .theme-toggle .icon-moon {
567
+ display: none;
568
+ }
569
+ :root:not([data-theme="light"]) .theme-asset--light {
570
+ display: none;
571
+ }
572
+ :root:not([data-theme="light"]) .theme-asset--dark {
573
+ display: block;
574
+ }
575
+ }
576
+ /* Mobile footer theme icons */
577
+ .mobile-footer-btn .icon-sun {
578
+ display: none;
579
+ }
580
+ .mobile-footer-btn .icon-moon {
581
+ display: block;
582
+ }
583
+ [data-theme="dark"] .mobile-footer-btn .icon-sun {
584
+ display: block;
585
+ }
586
+ [data-theme="dark"] .mobile-footer-btn .icon-moon {
587
+ display: none;
588
+ }
589
+ @media (prefers-color-scheme: dark) {
590
+ :root:not([data-theme="light"]) .mobile-footer-btn .icon-sun {
591
+ display: block;
592
+ }
593
+ :root:not([data-theme="light"]) .mobile-footer-btn .icon-moon {
594
+ display: none;
595
+ }
596
+ }
597
+ .layout {
598
+ display: flex;
599
+ padding-top: var(--octc-header-height);
600
+ min-height: 100vh;
601
+ }
602
+ .sidebar {
603
+ position: fixed;
604
+ top: var(--octc-header-height);
605
+ left: 0;
606
+ bottom: 0;
607
+ width: var(--octc-sidebar-width);
608
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 16%, var(--octc-color-bg));
609
+ border-right: 1px solid color-mix(in srgb, var(--octc-color-border) 48%, transparent);
610
+ border-radius: 0;
611
+ overflow-y: auto;
612
+ overscroll-behavior: contain;
613
+ padding: 1rem 0.875rem 1.5rem;
614
+ scrollbar-width: thin;
615
+ scrollbar-color: var(--octc-color-border) transparent;
616
+ }
617
+ .entry-page .sidebar--entry {
618
+ display: none;
619
+ }
620
+
621
+ [data-theme="dark"] .sidebar {
622
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 28%, var(--octc-color-bg));
623
+ border-color: color-mix(in srgb, var(--octc-color-border) 52%, transparent);
624
+ }
625
+
626
+ @media (prefers-color-scheme: dark) {
627
+ :root:not([data-theme="light"]) .sidebar {
628
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 28%, var(--octc-color-bg));
629
+ border-color: color-mix(in srgb, var(--octc-color-border) 52%, transparent);
630
+ }
631
+ }
632
+ .sidebar nav {
633
+ display: flex;
634
+ flex-direction: column;
635
+ gap: 1rem;
636
+ }
637
+ .sidebar::-webkit-scrollbar {
638
+ width: 6px;
639
+ }
640
+ .sidebar::-webkit-scrollbar-track {
641
+ background: transparent;
642
+ }
643
+ .sidebar::-webkit-scrollbar-thumb {
644
+ background: var(--octc-color-border);
645
+ border-radius: 3px;
646
+ }
647
+ .sidebar::-webkit-scrollbar-thumb:hover {
648
+ background: var(--octc-color-text-muted);
649
+ }
650
+ .nav-section {
651
+ margin-bottom: 0;
652
+ }
653
+ .nav-title {
654
+ font-size: 0.6875rem;
655
+ font-weight: 600;
656
+ text-transform: uppercase;
657
+ letter-spacing: 0.08em;
658
+ color: var(--octc-color-text-muted);
659
+ margin-bottom: 0.4rem;
660
+ padding: 0 0.625rem;
661
+ }
662
+ .nav-title--summary,
663
+ .nav-details > .nav-summary {
664
+ display: flex;
665
+ align-items: flex-start;
666
+ min-width: 0;
667
+ list-style: none;
668
+ cursor: pointer;
669
+ }
670
+ .nav-title--summary::-webkit-details-marker,
671
+ .nav-summary::-webkit-details-marker {
672
+ display: none;
673
+ }
674
+ .nav-title--summary::before,
675
+ .nav-details > .nav-summary::before {
676
+ content: "";
677
+ flex: 0 0 auto;
678
+ width: 0.4rem;
679
+ height: 0.4rem;
680
+ margin-block-start: 0.32rem;
681
+ margin-inline-end: 0.45rem;
682
+ border-right: 1.5px solid currentColor;
683
+ border-bottom: 1.5px solid currentColor;
684
+ color: var(--octc-color-text-muted);
685
+ transform: rotate(-45deg);
686
+ transform-origin: center;
687
+ transition: transform var(--octc-motion-base) var(--octc-motion-ease);
688
+ }
689
+ .nav-details > .nav-summary::before {
690
+ margin-block-start: 0.8rem;
691
+ margin-inline-start: 0.45rem;
692
+ }
693
+ .nav-section--collapsible[open] > .nav-title--summary::before,
694
+ .nav-details[open] > .nav-summary::before {
695
+ transform: rotate(45deg);
696
+ }
697
+ [dir="rtl"] .nav-section--collapsible:not([open]) > .nav-title--summary::before,
698
+ [dir="rtl"] .nav-details:not([open]) > .nav-summary::before {
699
+ transform: rotate(135deg);
700
+ }
701
+ .nav-list {
702
+ list-style: none;
703
+ display: flex;
704
+ flex-direction: column;
705
+ gap: 0.125rem;
706
+ }
707
+ .nav-list--nested {
708
+ margin-inline-start: 0.65rem;
709
+ padding-inline-start: 0.75rem;
710
+ border-inline-start: 1px solid color-mix(in srgb, var(--octc-color-border) 64%, transparent);
711
+ }
712
+ .nav-list--nested .nav-list--nested {
713
+ margin-inline-start: 0.4rem;
714
+ padding-inline-start: 0.65rem;
715
+ }
716
+ .nav-item {
717
+ margin: 0;
718
+ }
719
+ .nav-link {
720
+ display: block;
721
+ padding: 0.45rem 0.625rem;
722
+ border-radius: 0;
723
+ border: 0;
724
+ color: color-mix(in srgb, var(--octc-color-text) 92%, var(--octc-color-text-muted));
725
+ font-size: 0.875rem;
726
+ }
727
+ .nav-link.active {
728
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 72%, transparent);
729
+ color: var(--octc-color-text);
730
+ font-weight: 600;
731
+ }
732
+ @media (any-hover: hover) and (any-pointer: fine) {
733
+ .nav-link:hover {
734
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 58%, transparent);
735
+ text-decoration: none;
736
+ color: var(--octc-color-text);
737
+ }
738
+ [data-theme="dark"] .nav-link:not(.active):hover {
739
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 42%, transparent);
740
+ }
741
+ .nav-link.active:hover {
742
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 72%, transparent);
743
+ color: var(--octc-color-text);
744
+ }
745
+ }
746
+ @media (any-hover: hover) and (any-pointer: fine) and (prefers-color-scheme: dark) {
747
+ :root:not([data-theme="light"]) .nav-link:not(.active):hover {
748
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 42%, transparent);
749
+ }
750
+ }
751
+ .nav-link--summary {
752
+ flex: 1;
753
+ min-width: 0;
754
+ padding-inline-start: 0.25rem;
755
+ overflow-wrap: anywhere;
756
+ }
757
+ @media (prefers-reduced-motion: reduce) {
758
+ .nav-title--summary::before,
759
+ .nav-details > .nav-summary::before {
760
+ transition: none;
761
+ }
762
+ .content pre.ox-code-block.has-focused .line,
763
+ .content pre.ox-code-block .ox-code-line--dimmed {
764
+ filter: none;
765
+ }
766
+ }
767
+ .main {
768
+ flex: 1;
769
+ margin-left: var(--octc-sidebar-width);
770
+ padding: 2rem;
771
+ min-width: 0;
772
+ overflow-x: hidden;
773
+ }
774
+ .main--with-toc {
775
+ padding-right: 2rem;
776
+ }
777
+ .content {
778
+ max-width: var(--octc-max-content-width);
779
+ margin: 0 auto;
780
+ overflow-wrap: break-word;
781
+ word-wrap: break-word;
782
+ word-break: break-word;
783
+ }
784
+ .last-updated {
785
+ max-width: var(--octc-max-content-width);
786
+ margin: 2rem auto 0;
787
+ padding-top: 1rem;
788
+ border-top: 1px solid color-mix(in srgb, var(--octc-color-border) 78%, transparent);
789
+ color: var(--octc-color-text-muted);
790
+ font-size: 0.875rem;
791
+ }
792
+ .pager {
793
+ max-width: var(--octc-max-content-width);
794
+ margin: 2rem auto 0;
795
+ padding-top: 1rem;
796
+ border-top: 1px solid color-mix(in srgb, var(--octc-color-border) 78%, transparent);
797
+ display: flex;
798
+ justify-content: space-between;
799
+ gap: 1.5rem;
800
+ font-size: 0.875rem;
801
+ }
802
+ .pager-link {
803
+ display: flex;
804
+ flex-direction: column;
805
+ gap: 0.2rem;
806
+ min-width: 0;
807
+ color: inherit;
808
+ text-decoration: none;
809
+ }
810
+ .pager-link--next {
811
+ margin-left: auto;
812
+ text-align: right;
813
+ }
814
+ .pager-label {
815
+ color: var(--octc-color-text-muted);
816
+ font-size: 0.75rem;
817
+ }
818
+ .pager-title {
819
+ color: var(--octc-color-text);
820
+ font-weight: 600;
821
+ }
822
+ .pager-link:hover .pager-title {
823
+ color: var(--octc-color-primary);
824
+ }
825
+ .ox-breadcrumbs {
826
+ max-width: var(--octc-max-content-width);
827
+ margin: 0 auto 1.25rem;
828
+ color: var(--octc-color-text-muted);
829
+ font-size: 0.875rem;
830
+ }
831
+ .ox-breadcrumbs-list {
832
+ display: flex;
833
+ flex-wrap: wrap;
834
+ align-items: center;
835
+ gap: 0.25rem 0;
836
+ list-style: none;
837
+ margin: 0;
838
+ padding: 0;
839
+ }
840
+ .ox-breadcrumbs-item {
841
+ display: inline-flex;
842
+ align-items: center;
843
+ }
844
+ .ox-breadcrumbs-item:not(:last-child)::after {
845
+ content: "/";
846
+ margin: 0 0.5rem;
847
+ color: color-mix(in srgb, var(--octc-color-text-muted) 80%, transparent);
848
+ }
849
+ .ox-breadcrumbs-link {
850
+ color: inherit;
851
+ text-decoration: none;
852
+ }
853
+ .ox-breadcrumbs-link:hover {
854
+ color: var(--octc-color-primary);
855
+ }
856
+ .ox-breadcrumbs-current {
857
+ color: var(--octc-color-text);
858
+ font-weight: 600;
859
+ }
860
+ .content h1 {
861
+ font-size: clamp(2.4rem, 5vw, 3.1rem);
862
+ margin-bottom: 1rem;
863
+ line-height: 1.08;
864
+ letter-spacing: -0.045em;
865
+ }
866
+ /* Vertical rhythm: body blocks (p, lists) sit 1rem apart, framed blocks (pre,
867
+ * tables, quotes, figures) 1.25rem, and headings clear more above than below —
868
+ * a section break should read bigger than a paragraph break, and the gap under
869
+ * a heading smaller than the gap over it. */
870
+ .content > :first-child {
871
+ margin-top: 0;
872
+ }
873
+ .content h2 {
874
+ font-size: 1.5rem;
875
+ margin-top: 2.75rem;
876
+ margin-bottom: 0.85rem;
877
+ padding-bottom: 0.4rem;
878
+ border-bottom: 1px solid color-mix(in srgb, var(--octc-color-border) 78%, transparent);
879
+ }
880
+ .content h3 {
881
+ font-size: 1.25rem;
882
+ margin-top: 2rem;
883
+ margin-bottom: 0.6rem;
884
+ }
885
+ .content h2 + h3 {
886
+ margin-top: 1.25rem;
887
+ }
888
+ .content h4 {
889
+ font-size: 1rem;
890
+ margin-top: 1.5rem;
891
+ margin-bottom: 0.5rem;
892
+ }
893
+ .content p {
894
+ margin-bottom: 1rem;
895
+ }
896
+ .content ul,
897
+ .content ol {
898
+ margin: 1rem 0;
899
+ padding-left: 1.5rem;
900
+ }
901
+ .content li {
902
+ margin: 0.3rem 0;
903
+ }
904
+ .content li > ul,
905
+ .content li > ol {
906
+ margin: 0.3rem 0;
907
+ }
908
+ .content blockquote {
909
+ border-left: 4px solid var(--octc-color-primary);
910
+ padding: 0.875rem 1rem 0.875rem 1.125rem;
911
+ margin: 1.25rem 0;
912
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 90%, var(--octc-color-primary) 10%);
913
+ border-radius: 0 4px 4px 0;
914
+ }
915
+ .content blockquote.ox-callout {
916
+ --octc-callout-accent: var(--octc-color-primary);
917
+ border-left-width: 3px;
918
+ border-left-color: var(--octc-callout-accent);
919
+ padding: 0.9rem 1rem;
920
+ border-radius: 4px;
921
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 92%, var(--octc-callout-accent) 8%);
922
+ }
923
+ .content blockquote.ox-callout.ox-callout--note,
924
+ .content blockquote.ox-callout.ox-callout--important {
925
+ --octc-callout-accent: var(--octc-color-primary);
926
+ }
927
+ .content blockquote.ox-callout.ox-callout--tip {
928
+ --octc-callout-accent: var(--octc-color-tip);
929
+ }
930
+ .content blockquote.ox-callout.ox-callout--warning {
931
+ --octc-callout-accent: var(--octc-color-warning);
932
+ }
933
+ .content blockquote.ox-callout.ox-callout--caution {
934
+ --octc-callout-accent: var(--octc-color-danger);
935
+ }
936
+ .content .ox-callout-title {
937
+ margin: 0 0 0.5rem;
938
+ font-size: 0.75rem;
939
+ font-weight: 700;
940
+ letter-spacing: 0.08em;
941
+ text-transform: uppercase;
942
+ color: var(--octc-callout-accent, var(--octc-color-primary));
943
+ }
944
+ .content blockquote.ox-callout > :last-child {
945
+ margin-bottom: 0;
946
+ }
947
+ .content blockquote.ox-callout > :not(.ox-callout-title):first-of-type {
948
+ margin-top: 0;
949
+ }
950
+ .content .ox-container {
951
+ --octc-container-accent: var(--octc-color-primary);
952
+ border-left: 3px solid var(--octc-container-accent);
953
+ padding: 0.9rem 1rem;
954
+ margin: 1.25rem 0;
955
+ border-radius: 4px;
956
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 92%, var(--octc-container-accent) 8%);
957
+ }
958
+ .content .ox-container--tip {
959
+ --octc-container-accent: var(--octc-color-tip);
960
+ }
961
+ .content .ox-container--warning,
962
+ .content .ox-container--caution {
963
+ --octc-container-accent: var(--octc-color-warning);
964
+ }
965
+ .content .ox-container--danger {
966
+ --octc-container-accent: var(--octc-color-danger);
967
+ }
968
+ .content .ox-container-title,
969
+ .content .ox-container summary {
970
+ margin: 0 0 0.5rem;
971
+ font-size: 0.75rem;
972
+ font-weight: 700;
973
+ letter-spacing: 0.08em;
974
+ text-transform: uppercase;
975
+ color: var(--octc-container-accent, var(--octc-color-primary));
976
+ }
977
+ .content .ox-container > :last-child {
978
+ margin-bottom: 0;
979
+ }
980
+ .content .ox-card-grid {
981
+ display: grid;
982
+ grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
983
+ gap: 1rem;
984
+ margin: 1.25rem 0;
985
+ }
986
+ .content .ox-card,
987
+ .content .ox-link-card {
988
+ display: block;
989
+ padding: 1rem 1.15rem;
990
+ border: 1px solid var(--octc-color-border);
991
+ border-radius: 8px;
992
+ background: var(--octc-color-bg-alt);
993
+ text-decoration: none;
994
+ color: inherit;
995
+ }
996
+ .content .ox-link-card:hover {
997
+ border-color: var(--octc-color-primary);
998
+ }
999
+ .content .ox-card-title,
1000
+ .content .ox-link-card-title {
1001
+ display: block;
1002
+ margin: 0 0 0.4rem;
1003
+ font-weight: 700;
1004
+ }
1005
+ .content .ox-card > :first-child,
1006
+ .content .ox-card > :first-of-type,
1007
+ .content .ox-link-card > :first-child,
1008
+ .content .ox-link-card > :first-of-type {
1009
+ margin-top: 0;
1010
+ }
1011
+ .content .ox-card > :last-child,
1012
+ .content .ox-link-card > :last-child {
1013
+ margin-bottom: 0;
1014
+ }
1015
+ .content .ox-steps {
1016
+ margin: 1.25rem 0 1.5rem;
1017
+ padding: 0.85rem 0.9rem;
1018
+ border: 1px solid var(--octc-color-border);
1019
+ border-radius: 6px;
1020
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 34%, transparent);
1021
+ }
1022
+ .content .ox-steps__list {
1023
+ list-style: none;
1024
+ margin: 0;
1025
+ padding: 0;
1026
+ counter-reset: ox-steps;
1027
+ }
1028
+ .content .ox-steps__item {
1029
+ position: relative;
1030
+ margin: 0 0 0.85rem;
1031
+ padding-left: 2.2rem;
1032
+ counter-increment: ox-steps;
1033
+ }
1034
+ .content .ox-steps__item::before {
1035
+ content: counter(ox-steps);
1036
+ position: absolute;
1037
+ left: 0;
1038
+ top: 0.12rem;
1039
+ display: flex;
1040
+ align-items: center;
1041
+ justify-content: center;
1042
+ width: 1.45rem;
1043
+ height: 1.45rem;
1044
+ border-radius: 999px;
1045
+ background: var(--octc-color-primary);
1046
+ color: var(--octc-color-bg);
1047
+ font-size: 0.75rem;
1048
+ font-weight: 700;
1049
+ }
1050
+ .content .ox-steps__item > :first-child {
1051
+ margin-top: 0;
1052
+ }
1053
+ .content .ox-steps__item > :last-child {
1054
+ margin-bottom: 0;
1055
+ }
1056
+ .content .ox-badge {
1057
+ --octc-badge-accent: var(--octc-color-primary);
1058
+ display: inline-block;
1059
+ padding: 0.1em 0.45em;
1060
+ border-radius: 999px;
1061
+ font-size: 0.75em;
1062
+ font-weight: 600;
1063
+ letter-spacing: 0.02em;
1064
+ line-height: 1.4;
1065
+ vertical-align: 0.1em;
1066
+ border: 1px solid color-mix(in srgb, var(--octc-badge-accent) 35%, transparent);
1067
+ color: var(--octc-badge-accent);
1068
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 88%, var(--octc-badge-accent) 12%);
1069
+ }
1070
+ .content .ox-badge--tip {
1071
+ --octc-badge-accent: var(--octc-color-tip);
1072
+ }
1073
+ .content .ox-badge--note {
1074
+ --octc-badge-accent: var(--octc-color-primary);
1075
+ }
1076
+ .content .ox-badge--info {
1077
+ --octc-badge-accent: var(--octc-color-info);
1078
+ }
1079
+ .content .ox-badge--warning {
1080
+ --octc-badge-accent: var(--octc-color-warning);
1081
+ }
1082
+ .content .ox-badge--danger {
1083
+ --octc-badge-accent: var(--octc-color-danger);
1084
+ }
1085
+ .content .ox-badge--success {
1086
+ --octc-badge-accent: var(--octc-color-success);
1087
+ }
1088
+ .content .ox-badge--deprecated {
1089
+ --octc-badge-accent: var(--octc-color-deprecated);
1090
+ }
1091
+ .content .ox-badge--required {
1092
+ --octc-badge-accent: var(--octc-color-required);
1093
+ }
1094
+ /* @include magic-links.css */
1095
+ .content .ox-figure {
1096
+ margin: 1.25rem 0;
1097
+ }
1098
+ .content .ox-figure img {
1099
+ margin-inline: auto;
1100
+ }
1101
+ .content .ox-figure figcaption {
1102
+ margin-top: 0.5rem;
1103
+ color: var(--octc-color-text-muted);
1104
+ font-size: 0.875rem;
1105
+ text-align: center;
1106
+ }
1107
+ .content .ox-math-inline {
1108
+ display: inline;
1109
+ }
1110
+ .content .ox-math-block {
1111
+ display: block;
1112
+ margin: 1.25rem 0;
1113
+ overflow-x: auto;
1114
+ text-align: center;
1115
+ }
1116
+ .content .ox-math .katex-display {
1117
+ margin: 0;
1118
+ }
1119
+ .content code {
1120
+ font-family: var(--octc-font-mono);
1121
+ font-size: 0.875em;
1122
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 90%, var(--octc-color-bg));
1123
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 72%, transparent);
1124
+ padding: 0.2em 0.4em;
1125
+ border-radius: 4px;
1126
+ word-break: normal;
1127
+ overflow-wrap: anywhere;
1128
+ }
1129
+ .content pre {
1130
+ background: var(--octc-color-code-bg) !important;
1131
+ color: var(--octc-color-code-text);
1132
+ padding: var(--octc-code-pad-block) var(--octc-code-pad-inline);
1133
+ border-radius: 4px;
1134
+ border: 1px solid var(--octc-color-code-frame-border);
1135
+ overflow-x: auto;
1136
+ margin: 1.25rem 0;
1137
+ line-height: 1.5;
1138
+ }
1139
+ .content pre code {
1140
+ background: transparent;
1141
+ border: 0;
1142
+ padding: 0;
1143
+ border-radius: 0;
1144
+ font-size: 0.8125rem;
1145
+ word-break: normal;
1146
+ }
1147
+ .content pre.ox-code-block code {
1148
+ display: block;
1149
+ }
1150
+ /* Each `.line` is a block, so the newline the highlighter writes between two of
1151
+ them renders as a second break inside a `pre` and every code line comes out
1152
+ double-spaced. Collapsing whitespace on the `code` drops those newlines;
1153
+ each line restores its own. The `:has` guard leaves a block whose code was
1154
+ never split into lines — an unhighlighted one — reading its indentation from
1155
+ the `pre` as before. */
1156
+ .content pre.ox-code-block code:has(> .line) {
1157
+ white-space: normal;
1158
+ }
1159
+ .content pre.ox-code-block code:has(> .line) > .line {
1160
+ white-space: pre;
1161
+ }
1162
+ .content pre.ox-code-block--wrap {
1163
+ overflow-x: hidden;
1164
+ white-space: pre-wrap;
1165
+ }
1166
+ .content pre.ox-code-block--wrap code,
1167
+ .content pre.ox-code-block--wrap .line {
1168
+ white-space: inherit;
1169
+ overflow-wrap: anywhere;
1170
+ }
1171
+ .content pre.ox-code-block--wrap code:has(> .line) > .line {
1172
+ white-space: pre-wrap;
1173
+ }
1174
+ .content pre.ox-code-block--nowrap {
1175
+ overflow-x: auto;
1176
+ white-space: pre;
1177
+ }
1178
+ .content pre.ox-code-block[data-code-title]::before {
1179
+ content: attr(data-code-title);
1180
+ display: block;
1181
+ margin: calc(-1 * var(--octc-code-pad-block)) calc(-1 * var(--octc-code-pad-inline))
1182
+ var(--octc-code-title-gap);
1183
+ padding: var(--octc-code-title-pad-block) var(--octc-code-pad-inline);
1184
+ border-bottom: 1px solid var(--octc-color-code-title-border);
1185
+ background: var(--octc-color-code-title-bg);
1186
+ color: var(--octc-color-code-title-text);
1187
+ font-family: var(--octc-font-mono);
1188
+ font-size: 0.75rem;
1189
+ font-weight: 600;
1190
+ letter-spacing: 0.02em;
1191
+ }
1192
+ .content pre.ox-code-block .line {
1193
+ display: block;
1194
+ margin: 0 calc(-1 * var(--octc-code-pad-inline));
1195
+ padding: 0 var(--octc-code-pad-inline);
1196
+ position: relative;
1197
+ }
1198
+ .content pre.ox-code-block.line-numbers-mode .line {
1199
+ padding-left: 3rem;
1200
+ }
1201
+ .content pre.ox-code-block.line-numbers-mode .line::before {
1202
+ content: attr(data-line-number);
1203
+ position: absolute;
1204
+ left: var(--octc-code-pad-inline);
1205
+ width: 1.65rem;
1206
+ text-align: right;
1207
+ color: var(--octc-color-code-line-number);
1208
+ user-select: none;
1209
+ pointer-events: none;
1210
+ }
1211
+ .content pre.ox-code-block .ox-code-line:target {
1212
+ scroll-margin-top: calc(var(--octc-header-height) + 1rem);
1213
+ opacity: 1;
1214
+ filter: none;
1215
+ background: var(--octc-color-code-line-focus);
1216
+ outline: 1px solid color-mix(in srgb, var(--octc-color-primary) 48%, transparent);
1217
+ outline-offset: -1px;
1218
+ }
1219
+ .content pre.ox-code-block.has-focused .line {
1220
+ opacity: var(--octc-color-code-line-dim);
1221
+ filter: blur(0.6px);
1222
+ }
1223
+ .content pre.ox-code-block.has-focused .line.focused {
1224
+ opacity: 1;
1225
+ filter: none;
1226
+ background: var(--octc-color-code-line-focus);
1227
+ }
1228
+ .content pre.ox-code-block .ox-code-line--dimmed {
1229
+ opacity: var(--octc-color-code-line-dim);
1230
+ filter: blur(0.6px);
1231
+ }
1232
+ .content pre.ox-code-block .ox-code-line--highlight {
1233
+ background: var(--octc-color-code-line-highlight);
1234
+ }
1235
+ .content pre.ox-code-block .ox-code-line--warning {
1236
+ background: var(--octc-color-code-line-warning);
1237
+ border-left: 3px solid var(--octc-color-code-line-warning-border);
1238
+ }
1239
+ .content pre.ox-code-block .ox-code-line--error {
1240
+ background: var(--octc-color-code-line-error);
1241
+ border-left: 3px solid var(--octc-color-code-line-error-border);
1242
+ }
1243
+ .content pre.ox-code-block .ox-code-line--add {
1244
+ background: var(--octc-color-code-line-add);
1245
+ border-left: 3px solid var(--octc-color-code-line-add-border);
1246
+ }
1247
+ .content pre.ox-code-block .ox-code-line--remove {
1248
+ background: var(--octc-color-code-line-remove);
1249
+ border-left: 3px solid var(--octc-color-code-line-remove-border);
1250
+ }
1251
+ .content pre.ox-code-block .ox-code-line--focus {
1252
+ background: var(--octc-color-code-line-focus);
1253
+ }
1254
+ .content table {
1255
+ display: block;
1256
+ width: max-content;
1257
+ max-width: 100%;
1258
+ box-sizing: border-box;
1259
+ border: 1px solid var(--octc-color-border);
1260
+ border-collapse: separate;
1261
+ border-spacing: 0;
1262
+ overflow-x: auto;
1263
+ -webkit-overflow-scrolling: touch;
1264
+ margin: 1.25rem 0;
1265
+ font-size: 0.875rem;
1266
+ }
1267
+ .content table[data-ox-table-scrollable]:focus-visible {
1268
+ outline: var(--octc-focus-ring);
1269
+ outline-offset: var(--octc-focus-offset);
1270
+ }
1271
+ .content th,
1272
+ .content td {
1273
+ border: 0;
1274
+ border-inline-end: 1px solid var(--octc-color-border);
1275
+ border-block-end: 1px solid var(--octc-color-border);
1276
+ padding: var(--octc-table-cell-pad-block) var(--octc-table-cell-pad-inline);
1277
+ text-align: start;
1278
+ }
1279
+ .content tr > :last-child {
1280
+ border-inline-end: 0;
1281
+ }
1282
+ .content table > :last-child > tr:last-child > * {
1283
+ border-block-end: 0;
1284
+ }
1285
+ .content th {
1286
+ background: var(--octc-color-bg-alt);
1287
+ font-weight: 600;
1288
+ }
1289
+ .content img {
1290
+ max-width: 100%;
1291
+ height: auto;
1292
+ border-radius: 4px;
1293
+ display: block;
1294
+ }
1295
+ .content img[alt*="Logo"] {
1296
+ max-width: 180px;
1297
+ }
1298
+ .content hr {
1299
+ border: none;
1300
+ border-top: 1px solid var(--octc-color-border);
1301
+ margin: 2rem 0;
1302
+ }
1303
+ .content .ox-api-controls {
1304
+ display: flex;
1305
+ justify-content: flex-end;
1306
+ align-items: center;
1307
+ gap: 0.5rem;
1308
+ margin: 0 0 1rem;
1309
+ }
1310
+ .content .ox-api-controls__button {
1311
+ appearance: none;
1312
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 82%, transparent);
1313
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 82%, var(--octc-color-bg));
1314
+ padding: 0.4rem 0.7rem;
1315
+ border-radius: 4px;
1316
+ color: color-mix(in srgb, var(--octc-color-text) 82%, var(--octc-color-text-muted));
1317
+ font-family: var(--octc-font-mono);
1318
+ font-size: 0.78rem;
1319
+ font-weight: 600;
1320
+ line-height: 1.4;
1321
+ cursor: pointer;
1322
+ }
1323
+ .content .ox-api-controls__button:hover {
1324
+ color: var(--octc-color-primary);
1325
+ border-color: color-mix(in srgb, var(--octc-color-primary) 38%, var(--octc-color-border));
1326
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 68%, var(--octc-color-primary) 6%);
1327
+ }
1328
+ .content .ox-api-entry,
1329
+ .content .ox-api-module {
1330
+ margin: 0;
1331
+ border: 0;
1332
+ border-top: 1px solid color-mix(in srgb, var(--octc-color-border) 74%, transparent);
1333
+ border-radius: 0;
1334
+ background: transparent;
1335
+ overflow: visible;
1336
+ }
1337
+ .content .ox-api-entry:last-child,
1338
+ .content .ox-api-module:last-child {
1339
+ border-bottom: 1px solid color-mix(in srgb, var(--octc-color-border) 74%, transparent);
1340
+ }
1341
+ .content .ox-api-entry summary,
1342
+ .content .ox-api-module summary {
1343
+ list-style: none;
1344
+ cursor: pointer;
1345
+ padding: 1rem 0;
1346
+ position: relative;
1347
+ }
1348
+ .content .ox-api-entry summary::-webkit-details-marker,
1349
+ .content .ox-api-module summary::-webkit-details-marker {
1350
+ display: none;
1351
+ }
1352
+ .content .ox-api-entry summary {
1353
+ display: grid;
1354
+ grid-template-columns: var(--octc-api-kind-width, 6.5rem) minmax(0, 1fr) auto;
1355
+ align-items: start;
1356
+ gap: 0.95rem;
1357
+ }
1358
+ .content .ox-api-entry summary::after,
1359
+ .content .ox-api-module summary::after {
1360
+ content: "+";
1361
+ align-self: center;
1362
+ color: var(--octc-color-text-muted);
1363
+ font-family: var(--octc-font-mono);
1364
+ font-size: 0.95rem;
1365
+ font-weight: 600;
1366
+ line-height: 1;
1367
+ }
1368
+ .content .ox-api-entry[open] summary::after,
1369
+ .content .ox-api-module[open] summary::after {
1370
+ content: "−";
1371
+ color: var(--octc-color-primary);
1372
+ }
1373
+ .content .ox-api-entry[open] summary,
1374
+ .content .ox-api-module[open] summary {
1375
+ border-bottom: 1px solid color-mix(in srgb, var(--octc-color-border) 72%, transparent);
1376
+ }
1377
+ .content .ox-api-entry__kind,
1378
+ .content .ox-api-module__kind {
1379
+ display: block;
1380
+ width: var(--octc-api-kind-width, 6.5rem);
1381
+ padding: 0.3rem 0 0;
1382
+ background: transparent;
1383
+ border: 0;
1384
+ font-family: var(--octc-font-mono);
1385
+ font-size: 0.76rem;
1386
+ font-weight: 600;
1387
+ letter-spacing: 0.01em;
1388
+ text-align: left;
1389
+ white-space: nowrap;
1390
+ color: var(--octc-color-text-muted);
1391
+ }
1392
+ .content .ox-api-module__count {
1393
+ display: inline-flex;
1394
+ align-items: center;
1395
+ padding: 0.2rem 0.48rem;
1396
+ border-radius: 4px;
1397
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 84%, var(--octc-color-primary) 8%);
1398
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 82%, transparent);
1399
+ color: var(--octc-color-text-muted);
1400
+ font-family: var(--octc-font-mono);
1401
+ font-size: 0.72rem;
1402
+ font-weight: 600;
1403
+ letter-spacing: 0.03em;
1404
+ white-space: nowrap;
1405
+ }
1406
+ .content .ox-api-entry__name {
1407
+ display: block;
1408
+ font-family: var(--octc-font-mono);
1409
+ font-size: 0.95rem;
1410
+ font-weight: 600;
1411
+ line-height: 1.55;
1412
+ }
1413
+ .content .ox-api-entry__signature,
1414
+ .content .ox-api-module__signature {
1415
+ display: block;
1416
+ width: 100%;
1417
+ min-width: 0;
1418
+ font-family: var(--octc-font-mono);
1419
+ font-size: 0.95rem;
1420
+ line-height: 1.55;
1421
+ white-space: nowrap;
1422
+ overflow-x: auto;
1423
+ overflow-y: hidden;
1424
+ -webkit-overflow-scrolling: touch;
1425
+ }
1426
+ .content .ox-api-entry__description {
1427
+ display: block;
1428
+ color: color-mix(in srgb, var(--octc-color-text) 78%, var(--octc-color-text-muted));
1429
+ font-size: 0.9rem;
1430
+ line-height: 1.6;
1431
+ max-width: 72ch;
1432
+ }
1433
+ .content .ox-api-entry__summary-main {
1434
+ min-width: 0;
1435
+ display: flex;
1436
+ flex-direction: column;
1437
+ gap: 0.55rem;
1438
+ }
1439
+ .content .ox-api-entry__name,
1440
+ .content .ox-api-entry__signature,
1441
+ .content .ox-api-module__name,
1442
+ .content .ox-api-module__signature {
1443
+ background: transparent;
1444
+ padding: 0;
1445
+ border-radius: 0;
1446
+ word-break: normal;
1447
+ }
1448
+ .content code.ox-highlight-inline.ox-api-entry__signature--highlighted,
1449
+ .content code.ox-highlight-inline.ox-api-module__signature--highlighted {
1450
+ display: block;
1451
+ width: 100%;
1452
+ max-width: 100%;
1453
+ background: var(--octc-color-code-bg) !important;
1454
+ border: 1px solid var(--octc-color-code-frame-border) !important;
1455
+ padding: 0.55rem 0.7rem !important;
1456
+ border-radius: 4px !important;
1457
+ white-space: nowrap;
1458
+ overflow-x: auto;
1459
+ overflow-y: hidden;
1460
+ -webkit-overflow-scrolling: touch;
1461
+ }
1462
+ .content code.ox-highlight-inline.ox-api-entry__signature--highlighted .line,
1463
+ .content code.ox-highlight-inline.ox-api-module__signature--highlighted .line {
1464
+ display: block;
1465
+ width: max-content;
1466
+ min-width: 100%;
1467
+ }
1468
+ .content .ox-api-entry__body,
1469
+ .content .ox-api-module__body {
1470
+ padding: 0.7rem 0 1.9rem;
1471
+ }
1472
+ .content .ox-api-entry__body {
1473
+ margin-left: calc(var(--octc-api-kind-width, 6.5rem) + 0.95rem);
1474
+ margin-top: 0.7rem;
1475
+ margin-bottom: 1rem;
1476
+ padding: 1.45rem 1rem 2.1rem 1.1rem;
1477
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 72%, transparent);
1478
+ border-radius: 4px;
1479
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 68%, transparent);
1480
+ }
1481
+ .content .ox-api-entry__body > :first-child {
1482
+ margin-top: 0;
1483
+ }
1484
+ .content .ox-api-entry__body > :last-child {
1485
+ margin-bottom: 0;
1486
+ }
1487
+ .content .ox-api-entry[open] summary {
1488
+ padding-bottom: 0.35rem;
1489
+ }
1490
+ .content .ox-api-entry__section {
1491
+ display: grid;
1492
+ grid-template-columns: 6.5rem minmax(0, 1fr);
1493
+ gap: 0.2rem 1.25rem;
1494
+ align-items: start;
1495
+ margin-top: 1rem;
1496
+ padding-top: 1rem;
1497
+ border-top: 1px solid color-mix(in srgb, var(--octc-color-border) 72%, transparent);
1498
+ }
1499
+ .content .ox-api-entry__section h4 {
1500
+ margin-top: 0;
1501
+ margin-bottom: 0;
1502
+ padding-top: 0.25rem;
1503
+ font-family: var(--octc-font-mono);
1504
+ font-size: 0.78rem;
1505
+ font-weight: 700;
1506
+ letter-spacing: 0.04em;
1507
+ text-transform: uppercase;
1508
+ color: var(--octc-color-text-muted);
1509
+ }
1510
+ .content .ox-api-entry__section > :not(h4) {
1511
+ /* The section grid is [6.5rem label | content]. Pin every content child to
1512
+ the content column: with more than one (a Members section renders one
1513
+ group per kind), auto-placement drops the second child into the narrow
1514
+ label column. */
1515
+ grid-column: 2;
1516
+ min-width: 0;
1517
+ }
1518
+ .content .ox-api-entry__source {
1519
+ margin: 0 0 0.15rem;
1520
+ font-family: var(--octc-font-mono);
1521
+ font-size: 0.78rem;
1522
+ color: var(--octc-color-text-muted);
1523
+ }
1524
+ .content .ox-api-entry__source a {
1525
+ color: inherit;
1526
+ text-decoration-color: color-mix(in srgb, var(--octc-color-text-muted) 38%, transparent);
1527
+ }
1528
+ .content .ox-api-entry__source-link {
1529
+ display: inline-flex;
1530
+ align-items: center;
1531
+ gap: 0.35rem;
1532
+ }
1533
+ .content .ox-api-entry__source-icon {
1534
+ width: 0.82em;
1535
+ height: 0.82em;
1536
+ flex: 0 0 auto;
1537
+ background-color: currentColor;
1538
+ -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cpath%20fill='none'%20stroke='black'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='2'%20d='M18%2013v6a2%202%200%200%201-2%202H5a2%202%200%200%201-2-2V8a2%202%200%200%201%202-2h6M15%203h6v6M10%2014%2021%203'/%3E%3C/svg%3E")
1539
+ center / contain no-repeat;
1540
+ mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cpath%20fill='none'%20stroke='black'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='2'%20d='M18%2013v6a2%202%200%200%201-2%202H5a2%202%200%200%201-2-2V8a2%202%200%200%201%202-2h6M15%203h6v6M10%2014%2021%203'/%3E%3C/svg%3E")
1541
+ center / contain no-repeat;
1542
+ }
1543
+ .content .ox-api-entry__tags,
1544
+ .content .ox-api-module__list {
1545
+ list-style: none;
1546
+ padding-left: 0;
1547
+ margin: 0;
1548
+ }
1549
+ .content .ox-api-entry__tags {
1550
+ display: flex;
1551
+ flex-wrap: wrap;
1552
+ gap: 0.6rem;
1553
+ }
1554
+ .content .ox-api-entry__tags li {
1555
+ display: inline-flex;
1556
+ align-items: center;
1557
+ gap: 0.45rem;
1558
+ padding: 0.4rem 0.55rem;
1559
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 80%, transparent);
1560
+ border-radius: 4px;
1561
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 72%, transparent);
1562
+ }
1563
+ .content .ox-api-module__list li {
1564
+ display: grid;
1565
+ grid-template-columns: var(--octc-api-kind-width, 6.5rem) minmax(0, 1fr);
1566
+ align-items: start;
1567
+ gap: 1rem;
1568
+ padding: 0.85rem 0;
1569
+ border-top: 1px solid color-mix(in srgb, var(--octc-color-border) 70%, transparent);
1570
+ }
1571
+ .content .ox-api-module__list li:first-child {
1572
+ border-top: none;
1573
+ }
1574
+ .content .ox-api-entry__tag-name,
1575
+ .content .ox-api-module__title {
1576
+ font-weight: 700;
1577
+ }
1578
+ .content .ox-api-entry__tag-name {
1579
+ color: var(--octc-color-primary);
1580
+ font-family: var(--octc-font-mono);
1581
+ font-size: 0.74rem;
1582
+ }
1583
+ .content .ox-api-entry__tag-value {
1584
+ color: var(--octc-color-text);
1585
+ font-size: 0.84rem;
1586
+ line-height: 1.45;
1587
+ }
1588
+ .content .ox-api-module summary {
1589
+ display: grid;
1590
+ grid-template-columns: minmax(0, 1fr) auto auto;
1591
+ align-items: center;
1592
+ gap: 0.9rem;
1593
+ }
1594
+ .content .ox-api-module__body {
1595
+ padding-top: 0.15rem;
1596
+ }
1597
+ .content .ox-api-module__item {
1598
+ min-width: 0;
1599
+ }
1600
+ .content .ox-api-module__link {
1601
+ display: block;
1602
+ text-decoration: none;
1603
+ }
1604
+ .content .ox-api-module__link:hover {
1605
+ text-decoration: none;
1606
+ }
1607
+ .content .ox-api-module__name,
1608
+ .content .ox-api-module__signature {
1609
+ display: block;
1610
+ font-family: var(--octc-font-mono);
1611
+ font-size: 0.91rem;
1612
+ line-height: 1.55;
1613
+ color: var(--octc-color-text);
1614
+ }
1615
+ .content .ox-api-module__summary {
1616
+ display: block;
1617
+ margin-top: 0.45rem;
1618
+ color: color-mix(in srgb, var(--octc-color-text) 76%, var(--octc-color-text-muted));
1619
+ font-size: 0.88rem;
1620
+ line-height: 1.55;
1621
+ }
1622
+ .content .ox-api-entry__section--signature pre {
1623
+ margin: 0;
1624
+ padding: 0.9rem 1rem;
1625
+ border: 1px solid var(--octc-color-code-frame-border);
1626
+ border-radius: 4px;
1627
+ background: var(--octc-color-code-bg) !important;
1628
+ }
1629
+ .content .ox-api-entry__section--signature pre code {
1630
+ font-size: 0.91rem;
1631
+ }
1632
+ .content .ox-api-entry__section--examples pre {
1633
+ margin: 0;
1634
+ border: 1px solid var(--octc-color-code-frame-border);
1635
+ border-radius: 4px;
1636
+ }
1637
+ .content .ox-api-entry__params {
1638
+ list-style: none;
1639
+ padding: 0;
1640
+ margin: 0;
1641
+ }
1642
+ .content .ox-api-entry__param {
1643
+ padding: 0.8rem 0;
1644
+ border-top: 1px solid color-mix(in srgb, var(--octc-color-border) 70%, transparent);
1645
+ }
1646
+ .content .ox-api-entry__param:first-child {
1647
+ padding-top: 0;
1648
+ border-top: 0;
1649
+ }
1650
+ .content .ox-api-entry__param-heading {
1651
+ display: flex;
1652
+ flex-wrap: wrap;
1653
+ align-items: center;
1654
+ gap: 0.5rem;
1655
+ }
1656
+ .content .ox-api-entry__param-name,
1657
+ .content .ox-api-entry__return-type {
1658
+ font-family: var(--octc-font-mono);
1659
+ font-size: 0.84rem;
1660
+ font-weight: 600;
1661
+ color: var(--octc-color-text);
1662
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 84%, transparent);
1663
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 82%, transparent);
1664
+ padding: 0.28rem 0.42rem;
1665
+ border-radius: 4px;
1666
+ }
1667
+ .content .ox-api-entry__param-type {
1668
+ font-family: var(--octc-font-mono);
1669
+ font-size: 0.78rem;
1670
+ color: var(--octc-color-text-muted);
1671
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 60%, transparent);
1672
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 82%, transparent);
1673
+ padding: 0.26rem 0.42rem;
1674
+ border-radius: 4px;
1675
+ }
1676
+ .content .ox-api-entry__param-description,
1677
+ .content .ox-api-entry__return-description {
1678
+ margin: 0.55rem 0 0;
1679
+ font-size: 0.88rem;
1680
+ line-height: 1.6;
1681
+ color: color-mix(in srgb, var(--octc-color-text) 78%, var(--octc-color-text-muted));
1682
+ }
1683
+ .content .ox-api-entry__return {
1684
+ margin: 0;
1685
+ }
1686
+ .content .ox-api-badge {
1687
+ display: inline-block;
1688
+ padding: 0.06rem 0.46rem;
1689
+ font-size: 0.7rem;
1690
+ font-weight: 600;
1691
+ line-height: 1.5;
1692
+ color: var(--octc-color-text-muted);
1693
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 84%, transparent);
1694
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 82%, transparent);
1695
+ border-radius: 999px;
1696
+ vertical-align: middle;
1697
+ }
1698
+ .content .ox-api-badge:not(:first-child) {
1699
+ margin-left: 0.4rem;
1700
+ }
1701
+ .content .ox-api-badge--warning {
1702
+ color: var(--octc-color-code-line-warning-border);
1703
+ background: var(--octc-color-code-line-warning);
1704
+ border-color: color-mix(in srgb, var(--octc-color-code-line-warning-border) 45%, transparent);
1705
+ }
1706
+ .content .ox-api-entry__meta {
1707
+ display: inline-flex;
1708
+ flex-wrap: wrap;
1709
+ gap: 0.4rem;
1710
+ }
1711
+ .content .ox-api-entry__meta .ox-api-badge {
1712
+ margin-left: 0;
1713
+ }
1714
+ .content .ox-api-entry__member-group {
1715
+ margin-top: 1rem;
1716
+ }
1717
+ .content .ox-api-entry__member-group > h5 {
1718
+ margin: 0 0 0.5rem;
1719
+ font-size: 0.78rem;
1720
+ font-weight: 700;
1721
+ letter-spacing: 0.04em;
1722
+ text-transform: uppercase;
1723
+ color: var(--octc-color-text-muted);
1724
+ }
1725
+ .content .ox-api-entry__members-table {
1726
+ margin: 0;
1727
+ }
1728
+ .content .ox-api-entry__members-table th,
1729
+ .content .ox-api-entry__members-table td {
1730
+ padding: 0.5rem 0.75rem;
1731
+ vertical-align: top;
1732
+ }
1733
+ .content .ox-api-entry__member-type {
1734
+ font-size: 0.8rem;
1735
+ }
1736
+ .content .ox-api-entry__member-detail {
1737
+ padding: 0.9rem 0;
1738
+ border-top: 1px solid color-mix(in srgb, var(--octc-color-border) 70%, transparent);
1739
+ }
1740
+ .content .ox-api-entry__member-detail:last-child {
1741
+ padding-bottom: 0;
1742
+ }
1743
+ .content .ox-api-entry__member-detail > h5 {
1744
+ margin: 0 0 0.5rem;
1745
+ font-family: var(--octc-font-mono);
1746
+ font-size: 0.95rem;
1747
+ font-weight: 600;
1748
+ }
1749
+ .content .ox-api-entry__member-meta {
1750
+ margin: 0 0 0.4rem;
1751
+ }
1752
+ .content .ox-api-entry__member-detail-section {
1753
+ margin-top: 0.6rem;
1754
+ }
1755
+ .content .ox-api-entry__member-detail-section h6 {
1756
+ margin: 0 0 0.3rem;
1757
+ font-size: 0.7rem;
1758
+ font-weight: 700;
1759
+ letter-spacing: 0.04em;
1760
+ text-transform: uppercase;
1761
+ color: var(--octc-color-text-muted);
1762
+ }
1763
+ .content .ox-api-entry__member-params {
1764
+ margin: 0;
1765
+ padding: 0;
1766
+ list-style: none;
1767
+ display: flex;
1768
+ flex-wrap: wrap;
1769
+ gap: 0.35rem;
1770
+ }
1771
+ .content .ox-api-entry__member-description {
1772
+ font-size: 0.88rem;
1773
+ line-height: 1.6;
1774
+ color: color-mix(in srgb, var(--octc-color-text) 78%, var(--octc-color-text-muted));
1775
+ }
1776
+ .toc {
1777
+ display: none;
1778
+ position: fixed;
1779
+ top: var(--octc-header-height);
1780
+ right: 0;
1781
+ bottom: 0;
1782
+ width: 15rem;
1783
+ padding: 2rem 1rem;
1784
+ border-left: 1px solid color-mix(in srgb, var(--octc-color-border) 58%, transparent);
1785
+ overflow-y: auto;
1786
+ }
1787
+ .toc-title {
1788
+ margin-bottom: 0.75rem;
1789
+ color: var(--octc-color-text-muted);
1790
+ font-size: 0.75rem;
1791
+ font-weight: 700;
1792
+ letter-spacing: 0.08em;
1793
+ text-transform: uppercase;
1794
+ }
1795
+ .toc-list {
1796
+ list-style: none;
1797
+ }
1798
+ .toc-item {
1799
+ margin: 0;
1800
+ }
1801
+ .toc-link {
1802
+ display: block;
1803
+ padding: 0.25rem 0.5rem;
1804
+ color: var(--octc-color-text-muted);
1805
+ font-size: 0.8125rem;
1806
+ line-height: 1.4;
1807
+ border-left: 1px solid transparent;
1808
+ }
1809
+ .toc-link:hover {
1810
+ color: var(--octc-color-primary);
1811
+ text-decoration: none;
1812
+ border-left-color: var(--octc-color-primary);
1813
+ }
1814
+ .toc-link--depth-3 {
1815
+ padding-left: 1rem;
1816
+ }
1817
+ .toc-link--depth-4,
1818
+ .toc-link--depth-5,
1819
+ .toc-link--depth-6 {
1820
+ padding-left: 1.5rem;
1821
+ }
1822
+ @media (min-width: 1440px) {
1823
+ .toc {
1824
+ display: block;
1825
+ }
1826
+ .main--with-toc {
1827
+ padding-right: 17rem;
1828
+ }
1829
+ }
1830
+ /* Mobile Footer Bar */
1831
+ .mobile-footer {
1832
+ display: none;
1833
+ }
1834
+ @media (max-width: 768px) {
1835
+ :root {
1836
+ --octc-code-pad-block: 0.85rem;
1837
+ --octc-code-pad-inline: 0.95rem;
1838
+ --octc-code-title-pad-block: 0.65rem;
1839
+ --octc-code-title-gap: 0.75rem;
1840
+ --octc-table-cell-pad-block: 0.5rem;
1841
+ --octc-table-cell-pad-inline: 0.75rem;
1842
+ }
1843
+ .header-actions {
1844
+ display: none;
1845
+ }
1846
+ .mobile-footer {
1847
+ display: flex;
1848
+ position: fixed;
1849
+ bottom: 0;
1850
+ left: 0;
1851
+ right: 0;
1852
+ height: calc(var(--octc-mobile-footer-height) + env(safe-area-inset-bottom, 0px));
1853
+ background: var(--octc-surface-glass);
1854
+ border-top: 1px solid var(--octc-color-border);
1855
+ justify-content: space-around;
1856
+ align-items: center;
1857
+ padding-left: max(var(--octc-mobile-gutter), env(safe-area-inset-left, 0px));
1858
+ padding-right: max(var(--octc-mobile-gutter), env(safe-area-inset-right, 0px));
1859
+ padding-bottom: env(safe-area-inset-bottom, 0px);
1860
+ z-index: 100;
1861
+ }
1862
+ .mobile-footer-btn {
1863
+ display: flex;
1864
+ flex-direction: column;
1865
+ align-items: center;
1866
+ justify-content: center;
1867
+ gap: 0.25rem;
1868
+ background: none;
1869
+ border: none;
1870
+ cursor: pointer;
1871
+ padding: 0.5rem;
1872
+ border-radius: 4px;
1873
+ color: var(--octc-color-text-muted);
1874
+ text-decoration: none;
1875
+ min-width: 48px;
1876
+ }
1877
+ .mobile-footer-btn svg {
1878
+ width: 22px;
1879
+ height: 22px;
1880
+ }
1881
+ .mobile-footer-label {
1882
+ font-size: 0.625rem;
1883
+ font-weight: 500;
1884
+ text-transform: uppercase;
1885
+ letter-spacing: 0.02em;
1886
+ }
1887
+ .menu-toggle {
1888
+ display: none;
1889
+ }
1890
+ .sidebar {
1891
+ position: fixed;
1892
+ top: calc(var(--octc-header-height) + 0.75rem);
1893
+ left: max(var(--octc-mobile-gutter), env(safe-area-inset-left, 0px));
1894
+ right: max(var(--octc-mobile-gutter), env(safe-area-inset-right, 0px));
1895
+ bottom: calc(var(--octc-mobile-footer-height) + env(safe-area-inset-bottom, 0px) + 0.75rem);
1896
+ width: auto;
1897
+ max-height: calc(
1898
+ 100dvh - var(--octc-header-height) - var(--octc-mobile-footer-height) -
1899
+ env(safe-area-inset-bottom, 0px) - 1.5rem
1900
+ );
1901
+ transform: translateY(calc(100% + 1rem));
1902
+ z-index: 101;
1903
+ border: 1px solid var(--octc-color-border);
1904
+ border-radius: 8px;
1905
+ visibility: hidden;
1906
+ pointer-events: none;
1907
+ overflow-y: auto;
1908
+ overflow-x: hidden;
1909
+ overscroll-behavior-y: contain;
1910
+ -webkit-overflow-scrolling: touch;
1911
+ scrollbar-gutter: stable;
1912
+ padding: 1rem 1rem 1.25rem;
1913
+ background: var(--octc-color-bg-alt);
1914
+ background-clip: padding-box;
1915
+ contain: paint;
1916
+ }
1917
+ .entry-page .sidebar--entry {
1918
+ display: block;
1919
+ }
1920
+ [data-theme="dark"] .sidebar {
1921
+ background: var(--octc-color-bg-alt);
1922
+ }
1923
+ @media (prefers-color-scheme: dark) {
1924
+ :root:not([data-theme="light"]) .sidebar {
1925
+ background: var(--octc-color-bg-alt);
1926
+ }
1927
+ }
1928
+ .sidebar::before {
1929
+ display: none;
1930
+ }
1931
+ .sidebar.open {
1932
+ transform: translateY(0);
1933
+ visibility: visible;
1934
+ pointer-events: auto;
1935
+ }
1936
+ .sidebar .nav-link {
1937
+ min-height: var(--octc-touch-target);
1938
+ display: flex;
1939
+ align-items: center;
1940
+ padding-block: 0.625rem;
1941
+ line-height: 1.35;
1942
+ }
1943
+ .sidebar .nav-title--summary {
1944
+ min-height: var(--octc-touch-target);
1945
+ align-items: center;
1946
+ }
1947
+ .sidebar .nav-title--summary::before,
1948
+ .sidebar .nav-details > .nav-summary::before {
1949
+ margin-block-start: 0;
1950
+ }
1951
+ .main {
1952
+ margin-left: 0;
1953
+ padding: 0.9rem var(--octc-mobile-gutter);
1954
+ padding-left: max(var(--octc-mobile-gutter), env(safe-area-inset-left, 0px));
1955
+ padding-right: max(var(--octc-mobile-gutter), env(safe-area-inset-right, 0px));
1956
+ padding-bottom: calc(
1957
+ var(--octc-mobile-footer-height) + env(safe-area-inset-bottom, 0px) + 0.9rem
1958
+ );
1959
+ }
1960
+ .content {
1961
+ padding: 0;
1962
+ }
1963
+ .ox-breadcrumbs-item:not(:last-child)::after {
1964
+ margin-inline: 0.25rem;
1965
+ }
1966
+ /* The desktop rhythm scaled for a phone: body blocks 0.875rem apart, framed
1967
+ * blocks 1rem, headings still clearing more above than below. The steps keep
1968
+ * the same relationships, just sized for a 360-420px column. */
1969
+ .content h1 {
1970
+ font-size: 1.5rem;
1971
+ /* 1.08 is a display line-height for a title that never wraps. A mobile
1972
+ * title almost always wraps, and at 24px those lines collide. */
1973
+ line-height: 1.25;
1974
+ letter-spacing: -0.02em;
1975
+ margin-bottom: 0.75rem;
1976
+ }
1977
+ .content h2 {
1978
+ font-size: 1.25rem;
1979
+ margin-top: 2rem;
1980
+ margin-bottom: 0.6rem;
1981
+ }
1982
+ /* h2 was scaled down here and h3 was not, so an h3 rendered larger than the
1983
+ * h2 above it and the section hierarchy read backwards. */
1984
+ .content h3 {
1985
+ font-size: 1.0625rem;
1986
+ margin-top: 1.5rem;
1987
+ margin-bottom: 0.4rem;
1988
+ }
1989
+ .content h2 + h3 {
1990
+ margin-top: 1rem;
1991
+ }
1992
+ .content h4 {
1993
+ font-size: 0.9375rem;
1994
+ margin-top: 1.15rem;
1995
+ margin-bottom: 0.3rem;
1996
+ }
1997
+ .content p {
1998
+ margin-bottom: 0.875rem;
1999
+ }
2000
+ .content ul,
2001
+ .content ol {
2002
+ margin: 0.875rem 0;
2003
+ padding-left: 1.25rem;
2004
+ }
2005
+ .content blockquote,
2006
+ .content table,
2007
+ .content figure,
2008
+ /* The code wrapper is also styled by a sheet concatenated after this one, so
2009
+ * it needs the extra specificity to win. */
2010
+ .content .ox-code {
2011
+ margin-block: 1rem;
2012
+ }
2013
+ .content code {
2014
+ font-size: 0.82em;
2015
+ padding: 0.16em 0.34em;
2016
+ }
2017
+ .content pre {
2018
+ font-size: 0.78rem;
2019
+ margin: 1rem 0;
2020
+ border-radius: 8px;
2021
+ line-height: 1.6;
2022
+ }
2023
+ .content pre code {
2024
+ font-size: 0.78rem;
2025
+ }
2026
+ .content .ox-api-controls {
2027
+ justify-content: flex-start;
2028
+ gap: 0.625rem;
2029
+ flex-wrap: wrap;
2030
+ margin-bottom: 0.85rem;
2031
+ }
2032
+ .content .ox-api-controls__button {
2033
+ padding: 0.45rem 0.7rem;
2034
+ border-radius: 10px;
2035
+ font-size: 0.74rem;
2036
+ }
2037
+ .content .ox-api-entry summary,
2038
+ .content .ox-api-module summary {
2039
+ padding: 0.95rem 0.125rem 0.95rem 0;
2040
+ }
2041
+ .content .ox-api-entry summary {
2042
+ display: flex;
2043
+ flex-wrap: wrap;
2044
+ align-items: center;
2045
+ gap: 0.65rem 0.75rem;
2046
+ }
2047
+ .content .ox-api-module summary {
2048
+ display: flex;
2049
+ flex-wrap: wrap;
2050
+ align-items: center;
2051
+ gap: 0.65rem 0.75rem;
2052
+ }
2053
+ .content .ox-api-entry summary::after,
2054
+ .content .ox-api-module summary::after {
2055
+ order: 2;
2056
+ display: inline-flex;
2057
+ align-items: center;
2058
+ justify-content: center;
2059
+ width: 1.95rem;
2060
+ height: 1.95rem;
2061
+ margin-left: auto;
2062
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 82%, transparent);
2063
+ border-radius: 10px;
2064
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 84%, var(--octc-color-bg));
2065
+ font-size: 1rem;
2066
+ line-height: 1;
2067
+ flex: 0 0 auto;
2068
+ align-self: center;
2069
+ }
2070
+ .content .ox-api-entry__kind {
2071
+ order: 1;
2072
+ width: auto;
2073
+ padding: 0.28rem 0.55rem;
2074
+ border: 1px solid color-mix(in srgb, var(--octc-color-border) 82%, transparent);
2075
+ border-radius: 8px;
2076
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 80%, var(--octc-color-bg));
2077
+ font-size: 0.72rem;
2078
+ line-height: 1;
2079
+ align-self: center;
2080
+ }
2081
+ .content .ox-api-entry__summary-main {
2082
+ order: 3;
2083
+ flex: 1 1 100%;
2084
+ gap: 0.35rem;
2085
+ }
2086
+ .content .ox-api-module__item {
2087
+ order: 1;
2088
+ flex: 1 1 100%;
2089
+ min-width: 0;
2090
+ }
2091
+ .content .ox-api-module__count {
2092
+ order: 2;
2093
+ width: auto;
2094
+ max-width: 100%;
2095
+ padding: 0.28rem 0.55rem;
2096
+ border-radius: 8px;
2097
+ }
2098
+ .content .ox-api-entry__body {
2099
+ margin-left: 0;
2100
+ margin-top: 0.65rem;
2101
+ padding: 1rem 0.2rem 1.45rem;
2102
+ border-top: 0;
2103
+ border-left: 0;
2104
+ border-right: 0;
2105
+ border-bottom: 0;
2106
+ border-radius: 0;
2107
+ background: transparent;
2108
+ }
2109
+ .content .ox-api-entry__name,
2110
+ .content .ox-api-entry__signature,
2111
+ .content .ox-api-module__name,
2112
+ .content .ox-api-module__signature {
2113
+ font-size: 0.84rem;
2114
+ line-height: 1.5;
2115
+ }
2116
+ .content .ox-api-entry__description,
2117
+ .content .ox-api-module__summary {
2118
+ font-size: 0.82rem;
2119
+ line-height: 1.55;
2120
+ }
2121
+ .content .ox-api-entry__section {
2122
+ grid-template-columns: 1fr;
2123
+ gap: 0.5rem;
2124
+ }
2125
+ .content .ox-api-entry__tags li,
2126
+ .content .ox-api-module__list li {
2127
+ grid-template-columns: 1fr;
2128
+ }
2129
+ .content .ox-api-module__list li {
2130
+ gap: 0.4rem;
2131
+ padding: 0.85rem 0.1rem;
2132
+ }
2133
+ .content .ox-api-module__kind {
2134
+ width: auto;
2135
+ padding: 0;
2136
+ font-size: 0.72rem;
2137
+ }
2138
+ .content .ox-api-entry__signature {
2139
+ width: 100%;
2140
+ }
2141
+ .content code.ox-highlight-inline.ox-api-entry__signature--highlighted,
2142
+ .content code.ox-highlight-inline.ox-api-module__signature--highlighted {
2143
+ padding: 0.5rem 0.65rem !important;
2144
+ border-radius: 8px !important;
2145
+ font-size: 0.82rem !important;
2146
+ }
2147
+ .content pre.ox-code-block.line-numbers-mode .line {
2148
+ padding-left: 2.85rem;
2149
+ }
2150
+ .content pre.ox-code-block.line-numbers-mode .line::before {
2151
+ width: 1.65rem;
2152
+ }
2153
+ .content table {
2154
+ margin: 1rem 0;
2155
+ font-size: 0.8125rem;
2156
+ }
2157
+ .content th,
2158
+ .content td {
2159
+ white-space: nowrap;
2160
+ vertical-align: top;
2161
+ }
2162
+ .header {
2163
+ padding-left: max(var(--octc-mobile-gutter), env(safe-area-inset-left, 0px));
2164
+ padding-right: max(var(--octc-mobile-gutter), env(safe-area-inset-right, 0px));
2165
+ }
2166
+ .header-title {
2167
+ font-size: 1rem;
2168
+ }
2169
+ .header-title--logo-only .header-logo {
2170
+ width: 152px;
2171
+ height: auto;
2172
+ }
2173
+ .overlay {
2174
+ display: none;
2175
+ position: fixed;
2176
+ top: var(--octc-header-height);
2177
+ left: 0;
2178
+ right: 0;
2179
+ bottom: calc(var(--octc-mobile-footer-height) + env(safe-area-inset-bottom, 0px));
2180
+ background: color-mix(in srgb, var(--octc-color-bg) 72%, transparent);
2181
+ backdrop-filter: blur(2px);
2182
+ -webkit-backdrop-filter: blur(2px);
2183
+ overscroll-behavior: contain;
2184
+ touch-action: none;
2185
+ z-index: 98;
2186
+ }
2187
+ .overlay.open {
2188
+ display: block;
2189
+ }
2190
+ }
2191
+
2192
+ @media (any-hover: hover) and (any-pointer: fine) {
2193
+ .mobile-footer-btn:hover {
2194
+ background: color-mix(in srgb, var(--octc-color-bg-alt) 82%, var(--octc-color-primary) 12%);
2195
+ color: var(--octc-color-text);
2196
+ text-decoration: none;
2197
+ }
2198
+ }
2199
+
2200
+ @media (any-hover: none) and (any-pointer: coarse) {
2201
+ .mobile-footer-btn:focus {
2202
+ outline: none;
2203
+ }
2204
+ }
2205
+
2206
+ @media (max-width: 480px) {
2207
+ :root {
2208
+ --octc-code-pad-block: 0.78rem;
2209
+ --octc-code-pad-inline: 0.85rem;
2210
+ --octc-code-title-pad-block: 0.6rem;
2211
+ --octc-code-title-gap: 0.72rem;
2212
+ --octc-table-cell-pad-block: 0.375rem;
2213
+ --octc-table-cell-pad-inline: 0.5rem;
2214
+ }
2215
+ .main {
2216
+ padding-block-start: 0.75rem;
2217
+ padding-bottom: calc(
2218
+ var(--octc-mobile-footer-height) + env(safe-area-inset-bottom, 0px) + 0.75rem
2219
+ );
2220
+ }
2221
+ .content h1 {
2222
+ font-size: 1.35rem;
2223
+ }
2224
+ .content h2 {
2225
+ font-size: 1.15rem;
2226
+ margin-top: 1.75rem;
2227
+ }
2228
+ .content h3 {
2229
+ font-size: 1rem;
2230
+ margin-top: 1.25rem;
2231
+ }
2232
+ .content h4 {
2233
+ font-size: 0.9rem;
2234
+ }
2235
+ .content code {
2236
+ font-size: 0.8em;
2237
+ }
2238
+ .content pre {
2239
+ font-size: 0.72rem;
2240
+ }
2241
+ .content pre code {
2242
+ font-size: 0.72rem;
2243
+ }
2244
+ .content .ox-api-entry summary::after,
2245
+ .content .ox-api-module summary::after {
2246
+ width: 1.85rem;
2247
+ height: 1.85rem;
2248
+ }
2249
+ .content .ox-api-entry__kind,
2250
+ .content .ox-api-module__count {
2251
+ font-size: 0.68rem;
2252
+ }
2253
+ .content table {
2254
+ font-size: 0.75rem;
2255
+ }
2256
+ }
2257
+
2258
+ :focus-visible {
2259
+ outline: var(--octc-focus-ring);
2260
+ outline-offset: var(--octc-focus-offset);
2261
+ }