rdoc 6.15.0 → 7.0.1

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. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +187 -0
  3. data/History.rdoc +1 -1
  4. data/LEGAL.rdoc +6 -0
  5. data/README.md +20 -3
  6. data/lib/rdoc/code_object/any_method.rb +15 -7
  7. data/lib/rdoc/code_object/class_module.rb +13 -0
  8. data/lib/rdoc/code_object/constant.rb +9 -0
  9. data/lib/rdoc/code_object/method_attr.rb +13 -1
  10. data/lib/rdoc/code_object/top_level.rb +31 -18
  11. data/lib/rdoc/comment.rb +190 -8
  12. data/lib/rdoc/generator/aliki.rb +183 -0
  13. data/lib/rdoc/generator/darkfish.rb +5 -1
  14. data/lib/rdoc/generator/template/aliki/_aside_toc.rhtml +8 -0
  15. data/lib/rdoc/generator/template/aliki/_footer.rhtml +23 -0
  16. data/lib/rdoc/generator/template/aliki/_head.rhtml +158 -0
  17. data/lib/rdoc/generator/template/aliki/_header.rhtml +56 -0
  18. data/lib/rdoc/generator/template/aliki/_icons.rhtml +208 -0
  19. data/lib/rdoc/generator/template/aliki/_sidebar_ancestors.rhtml +16 -0
  20. data/lib/rdoc/generator/template/aliki/_sidebar_classes.rhtml +15 -0
  21. data/lib/rdoc/generator/template/aliki/_sidebar_extends.rhtml +25 -0
  22. data/lib/rdoc/generator/template/aliki/_sidebar_includes.rhtml +25 -0
  23. data/lib/rdoc/generator/template/aliki/_sidebar_installed.rhtml +16 -0
  24. data/lib/rdoc/generator/template/aliki/_sidebar_methods.rhtml +41 -0
  25. data/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +67 -0
  26. data/lib/rdoc/generator/template/aliki/_sidebar_search.rhtml +15 -0
  27. data/lib/rdoc/generator/template/aliki/_sidebar_sections.rhtml +21 -0
  28. data/lib/rdoc/generator/template/aliki/_sidebar_toggle.rhtml +3 -0
  29. data/lib/rdoc/generator/template/aliki/class.rhtml +218 -0
  30. data/lib/rdoc/generator/template/aliki/css/rdoc.css +1944 -0
  31. data/lib/rdoc/generator/template/aliki/index.rhtml +22 -0
  32. data/lib/rdoc/generator/template/aliki/js/aliki.js +498 -0
  33. data/lib/rdoc/generator/template/aliki/js/c_highlighter.js +299 -0
  34. data/lib/rdoc/generator/template/aliki/js/search_controller.js +120 -0
  35. data/lib/rdoc/generator/template/aliki/js/search_navigation.js +105 -0
  36. data/lib/rdoc/generator/template/aliki/js/search_ranker.js +239 -0
  37. data/lib/rdoc/generator/template/aliki/js/theme-toggle.js +112 -0
  38. data/lib/rdoc/generator/template/aliki/page.rhtml +18 -0
  39. data/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +14 -0
  40. data/lib/rdoc/generator/template/aliki/servlet_root.rhtml +65 -0
  41. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +3 -3
  42. data/lib/rdoc/generator/template/darkfish/_head.rhtml +14 -19
  43. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +8 -8
  44. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +8 -8
  45. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +7 -6
  46. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +6 -6
  47. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +19 -19
  48. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +2 -2
  49. data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +1 -0
  50. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +3 -3
  51. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +14 -14
  52. data/lib/rdoc/generator/template/darkfish/class.rhtml +62 -62
  53. data/lib/rdoc/generator/template/darkfish/index.rhtml +4 -3
  54. data/lib/rdoc/generator/template/darkfish/page.rhtml +2 -1
  55. data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +2 -1
  56. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +19 -19
  57. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +19 -17
  58. data/lib/rdoc/generator/template/json_index/js/searcher.js +43 -6
  59. data/lib/rdoc/generator.rb +1 -0
  60. data/lib/rdoc/markup/pre_process.rb +34 -10
  61. data/lib/rdoc/markup/to_ansi.rb +4 -0
  62. data/lib/rdoc/markup/to_bs.rb +4 -0
  63. data/lib/rdoc/markup/to_html.rb +6 -4
  64. data/lib/rdoc/markup/to_rdoc.rb +11 -3
  65. data/lib/rdoc/options.rb +21 -10
  66. data/lib/rdoc/parser/c.rb +15 -46
  67. data/lib/rdoc/parser/prism_ruby.rb +121 -113
  68. data/lib/rdoc/parser/ruby.rb +8 -8
  69. data/lib/rdoc/parser/ruby_tools.rb +5 -7
  70. data/lib/rdoc/parser/simple.rb +4 -21
  71. data/lib/rdoc/rdoc.rb +1 -0
  72. data/lib/rdoc/rubygems_hook.rb +3 -3
  73. data/lib/rdoc/text.rb +1 -1
  74. data/lib/rdoc/token_stream.rb +13 -1
  75. data/lib/rdoc/tom_doc.rb +1 -1
  76. data/lib/rdoc/version.rb +1 -1
  77. data/rdoc.gemspec +1 -1
  78. metadata +33 -5
  79. data/CONTRIBUTING.rdoc +0 -219
@@ -0,0 +1,1944 @@
1
+ /*
2
+ * Aliki Theme Stylesheet
3
+ * Modern RDoc theme by Stan Lo
4
+ *
5
+ * Features:
6
+ * - Three-column responsive layout (navigation, content, table of contents)
7
+ * - Dark mode support with localStorage persistence
8
+ * - Auto-generated right sidebar TOC with scroll spy
9
+ * - Mobile-optimized search modal
10
+ * - Enhanced syntax highlighting for both light and dark themes
11
+ * - Code-copying functionality
12
+ */
13
+
14
+ /* 1. Design System - CSS Variables and Tokens */
15
+
16
+ /* Light Theme (Default) */
17
+ :root {
18
+ /* Color Palette - Primary */
19
+ --color-primary-50: #fdeae9;
20
+ --color-primary-100: #fadad3;
21
+ --color-primary-200: #f8bfbd;
22
+ --color-primary-300: #f5a9a7;
23
+ --color-primary-400: #f07f7b;
24
+ --color-primary-500: #eb544f;
25
+ --color-primary-600: #e62923;
26
+ --color-primary-700: #b8211c;
27
+ --color-primary-800: #8a1915;
28
+ --color-primary-900: #5c100e;
29
+
30
+ /* Color Palette - Neutral */
31
+ --color-neutral-50: #fafaf9;
32
+ --color-neutral-100: #f5f5f4;
33
+ --color-neutral-200: #e7e5e4;
34
+ --color-neutral-300: #d6d3d1;
35
+ --color-neutral-400: #a8a29e;
36
+ --color-neutral-500: #78716c;
37
+ --color-neutral-600: #57534e;
38
+ --color-neutral-700: #44403c;
39
+ --color-neutral-800: #292524;
40
+ --color-neutral-900: #1c1917;
41
+
42
+ /* Code highlighting colors */
43
+ --code-blue: #1d4ed8;
44
+ --code-green: #047857;
45
+ --code-orange: #d97706;
46
+ --code-purple: #7e22ce;
47
+ --code-red: #dc2626;
48
+
49
+ /* C syntax highlighting */
50
+ --c-keyword: #b91c1c;
51
+ --c-type: #0891b2;
52
+ --c-macro: #ea580c;
53
+ --c-function: #7c3aed;
54
+ --c-identifier: #475569;
55
+ --c-operator: #059669;
56
+ --c-preprocessor: #a21caf;
57
+ --c-value: #92400e;
58
+ --c-string: #15803d;
59
+ --c-comment: #78716c;
60
+
61
+ /* Color Palette - Green (for success states) */
62
+ --color-green-400: #4ade80;
63
+ --color-green-500: #22c55e;
64
+ --color-green-600: #16a34a;
65
+
66
+ /* Semantic Colors - Light Theme */
67
+ --color-text-primary: var(--color-neutral-900);
68
+ --color-text-secondary: var(--color-neutral-600);
69
+ --color-text-tertiary: var(--color-neutral-500);
70
+ --color-background-primary: #fff;
71
+ --color-background-secondary: var(--color-neutral-50);
72
+ --color-background-tertiary: var(--color-neutral-100);
73
+ --color-border-default: var(--color-neutral-300);
74
+ --color-border-subtle: var(--color-neutral-200);
75
+ --color-border-emphasis: var(--color-neutral-400);
76
+ --color-link-default: var(--color-text-primary);
77
+ --color-link-hover: var(--color-primary-600);
78
+ --color-accent-primary: var(--color-primary-600);
79
+ --color-accent-hover: var(--color-primary-700);
80
+ --color-accent-subtle: var(--color-primary-50);
81
+ --color-code-bg: #f6f8fa;
82
+ --color-code-border: var(--color-neutral-300);
83
+ --color-nav-bg: #fff;
84
+ --color-nav-text: var(--color-neutral-700);
85
+ --color-th-background: var(--color-neutral-100);
86
+ --color-td-background: var(--color-neutral-50);
87
+
88
+ /* Search Type Badge Colors */
89
+ --color-search-type-class-bg: #e6f0ff;
90
+ --color-search-type-class-text: #0050a0;
91
+ --color-search-type-module-bg: #e6ffe6;
92
+ --color-search-type-module-text: #060;
93
+ --color-search-type-constant-bg: #fff0e6;
94
+ --color-search-type-constant-text: #995200;
95
+ --color-search-type-method-bg: #f0e6ff;
96
+ --color-search-type-method-text: #5200a0;
97
+
98
+ /* RGBA Colors (theme-agnostic) */
99
+ --color-overlay: rgb(0 0 0 / 50%);
100
+ --color-emphasis-bg: rgb(255 111 97 / 10%);
101
+ --color-emphasis-decoration: rgb(52 48 64 / 25%);
102
+ --color-search-highlight-bg: rgb(224 108 117 / 10%);
103
+ --color-success-bg: rgb(34 197 94 / 10%);
104
+
105
+ /* Typography Scale */
106
+ --font-size-xs: 0.75rem; /* 12px */
107
+ --font-size-sm: 0.875rem; /* 14px */
108
+ --font-size-base: 1rem; /* 16px */
109
+ --font-size-lg: 1.125rem; /* 18px */
110
+ --font-size-xl: 1.25rem; /* 20px */
111
+ --font-size-2xl: 1.5rem; /* 24px */
112
+ --font-size-3xl: 1.875rem; /* 30px */
113
+ --font-size-4xl: 2.25rem; /* 36px */
114
+ --font-size-5xl: 3rem; /* 48px */
115
+
116
+ /* Font Families */
117
+ --font-family-base: -apple-system, blinkmacsystemfont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif;
118
+ --font-family-heading: var(--font-family-base);
119
+ --font-family-mono: ui-monospace, 'SFMono-Regular', 'SF Mono', 'Menlo', 'Consolas', 'Liberation Mono', monospace;
120
+
121
+ /* Font Weights */
122
+ --font-weight-normal: 400;
123
+ --font-weight-medium: 500;
124
+ --font-weight-semibold: 600;
125
+ --font-weight-bold: 700;
126
+
127
+ /* Font Shortcuts */
128
+ --font-primary: var(--font-family-base);
129
+ --font-heading: var(--font-family-heading);
130
+ --font-code: var(--font-family-mono);
131
+
132
+ /* Line Heights */
133
+ --line-height-tight: 1.25;
134
+ --line-height-normal: 1.5;
135
+ --line-height-relaxed: 1.625;
136
+
137
+ /* Spacing Scale */
138
+ --space-1: 0.25rem; /* 4px */
139
+ --space-2: 0.5rem; /* 8px */
140
+ --space-3: 0.75rem; /* 12px */
141
+ --space-4: 1rem; /* 16px */
142
+ --space-5: 1.25rem; /* 20px */
143
+ --space-6: 1.5rem; /* 24px */
144
+ --space-8: 2rem; /* 32px */
145
+ --space-12: 3rem; /* 48px */
146
+ --space-16: 4rem; /* 64px */
147
+
148
+ /* Border Radius */
149
+ --radius-sm: 0.25rem; /* 4px */
150
+ --radius-md: 0.375rem; /* 6px */
151
+ --radius-lg: 0.5rem; /* 8px */
152
+
153
+ /* Shadows */
154
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 10%), 0 1px 2px -1px rgb(0 0 0 / 10%);
155
+ --shadow-md: 0 2px 8px rgb(0 0 0 / 10%);
156
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 10%), 0 4px 6px -4px rgb(0 0 0 / 10%);
157
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 10%), 0 8px 10px -6px rgb(0 0 0 / 10%);
158
+
159
+ /* Layout Dimensions */
160
+ --layout-sidebar-width: 300px;
161
+ --layout-sidebar-width-min: 300px;
162
+ --layout-sidebar-width-max: 15%;
163
+ --layout-toc-width-min: 240px;
164
+ --layout-toc-width-max: 18%;
165
+ --layout-content-max-width: 800px;
166
+ --layout-header-height: 64px;
167
+ --layout-search-width: 400px;
168
+
169
+ /* Transitions */
170
+ --transition-fast: 150ms ease-in-out;
171
+ --transition-base: 200ms ease-in-out;
172
+ --transition-slow: 350ms ease-in-out;
173
+ --ease-out-smooth: cubic-bezier(0.4, 0, 0.2, 1);
174
+
175
+ /* Animation Durations */
176
+ --duration-fast: 250ms;
177
+ --duration-base: 300ms;
178
+ --duration-medium: 350ms;
179
+
180
+ /* Z-Index Scale */
181
+ --z-fixed: 300;
182
+ --z-modal: 400;
183
+ --z-popover: 500;
184
+
185
+ }
186
+
187
+ /* Dark Theme */
188
+ [data-theme="dark"] {
189
+ /* Code highlighting colors */
190
+ --code-blue: #93c5fd;
191
+ --code-green: #34d399;
192
+ --code-orange: #fbbf24;
193
+ --code-purple: #c084fc;
194
+ --code-red: #f87171;
195
+
196
+ /* C syntax highlighting */
197
+ --c-keyword: #f87171;
198
+ --c-type: #22d3ee;
199
+ --c-macro: #fb923c;
200
+ --c-function: #a78bfa;
201
+ --c-identifier: #94a3b8;
202
+ --c-operator: #6ee7b7;
203
+ --c-preprocessor: #e879f9;
204
+ --c-value: #fcd34d;
205
+ --c-string: #4ade80;
206
+ --c-comment: #a8a29e;
207
+
208
+ /* Semantic Colors - Dark Theme */
209
+ --color-text-primary: var(--color-neutral-50);
210
+ --color-text-secondary: var(--color-neutral-200);
211
+ --color-text-tertiary: var(--color-neutral-400);
212
+ --color-background-primary: var(--color-neutral-900);
213
+ --color-background-secondary: var(--color-neutral-800);
214
+ --color-background-tertiary: var(--color-neutral-700);
215
+ --color-border-default: var(--color-neutral-600);
216
+ --color-border-subtle: var(--color-neutral-700);
217
+ --color-border-emphasis: var(--color-neutral-300);
218
+ --color-link-default: var(--color-neutral-50);
219
+ --color-link-hover: var(--color-primary-500);
220
+ --color-accent-primary: var(--color-primary-500);
221
+ --color-accent-hover: var(--color-primary-400);
222
+ --color-accent-subtle: rgb(235 84 79 / 10%);
223
+ --color-accent-subtle-hover: rgb(235 84 79 / 20%);
224
+ --color-code-bg: var(--color-neutral-800);
225
+ --color-code-border: var(--color-neutral-700);
226
+ --color-nav-bg: var(--color-neutral-900);
227
+ --color-nav-text: var(--color-neutral-50);
228
+ --color-th-background: var(--color-background-tertiary);
229
+ --color-td-background: var(--color-background-secondary);
230
+
231
+ /* Search Type Badge Colors - Dark Theme */
232
+ --color-search-type-class-bg: #1e3a5f;
233
+ --color-search-type-class-text: #93c5fd;
234
+ --color-search-type-module-bg: #14532d;
235
+ --color-search-type-module-text: #86efac;
236
+ --color-search-type-constant-bg: #451a03;
237
+ --color-search-type-constant-text: #fcd34d;
238
+ --color-search-type-method-bg: #3b0764;
239
+ --color-search-type-method-text: #d8b4fe;
240
+
241
+ /* Dark theme shadows (slightly more subtle) */
242
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 40%), 0 1px 2px -1px rgb(0 0 0 / 40%);
243
+ --shadow-md: 0 2px 8px rgb(0 0 0 / 40%);
244
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 40%), 0 4px 6px -4px rgb(0 0 0 / 40%);
245
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 40%), 0 8px 10px -6px rgb(0 0 0 / 40%);
246
+
247
+ }
248
+
249
+ /* 2. Global Styles & Layout */
250
+ body {
251
+ background: var(--color-background-primary);
252
+ font-family: var(--font-primary);
253
+ font-weight: 400;
254
+ color: var(--color-text-primary);
255
+ line-height: var(--line-height-relaxed);
256
+ margin: 0;
257
+ overflow-wrap: break-word; /* Avoid overflow on mobile */
258
+
259
+ /* Grid layout with header, sidebar, main, and footer */
260
+ display: grid;
261
+ grid-template: "header header" var(--layout-header-height) "nav main" 1fr "nav footer" auto / var(--layout-sidebar-width) 1fr;
262
+ min-height: 100vh;
263
+ }
264
+
265
+ /* Three-column layout when TOC is present */
266
+ body.has-toc {
267
+ grid-template: "header header header" var(--layout-header-height) "nav main toc" 1fr "nav footer toc" auto / var(--layout-sidebar-width) 1fr minmax(var(--layout-toc-width-min), var(--layout-toc-width-max));
268
+ min-height: 100vh;
269
+ }
270
+
271
+ /* Mobile: stack everything vertically */
272
+ @media (width <= 1023px) {
273
+ body,
274
+ body.has-toc {
275
+ display: flex;
276
+ flex-direction: column;
277
+ grid-template: none;
278
+ }
279
+ }
280
+
281
+ /* 3. Typography */
282
+
283
+ /* 4. Links */
284
+ a {
285
+ color: var(--color-link-default);
286
+ transition: color var(--transition-base);
287
+ text-decoration: underline;
288
+ text-underline-offset: 0.2em; /* Make sure it doesn't overlap with underscores in a method name. */
289
+ }
290
+
291
+ /* 5. Code and Pre */
292
+
293
+ /* Code blocks */
294
+ pre {
295
+ font-family: var(--font-code);
296
+ background-color: var(--color-code-bg);
297
+ border: 1px solid var(--color-code-border);
298
+ border-radius: var(--radius-md);
299
+ padding: var(--space-4);
300
+ overflow-x: auto;
301
+ font-size: var(--font-size-sm);
302
+ line-height: var(--line-height-normal);
303
+ margin: var(--space-4) 0;
304
+ position: relative;
305
+ }
306
+
307
+ /* Code block wrapper for copy button */
308
+ .code-block-wrapper {
309
+ position: relative;
310
+ margin: var(--space-4) 0;
311
+ }
312
+
313
+ /* Copy button styling */
314
+ .copy-code-button {
315
+ position: absolute;
316
+ top: var(--space-2);
317
+ right: var(--space-2);
318
+ padding: var(--space-2);
319
+ background: var(--color-background-secondary);
320
+ border: 1px solid var(--color-border-default);
321
+ border-radius: var(--radius-sm);
322
+ cursor: pointer;
323
+ opacity: 0.6;
324
+ transition:
325
+ opacity var(--transition-fast),
326
+ background var(--transition-fast),
327
+ border-color var(--transition-fast),
328
+ transform var(--transition-fast),
329
+ box-shadow var(--transition-fast);
330
+ display: flex;
331
+ align-items: center;
332
+ justify-content: center;
333
+ width: 2rem;
334
+ height: 2rem;
335
+ z-index: 10;
336
+ }
337
+
338
+ .copy-code-button:hover,
339
+ .copy-code-button:focus {
340
+ opacity: 1;
341
+ background: var(--color-background-tertiary);
342
+ border-color: var(--color-border-emphasis);
343
+ transform: translateY(-1px);
344
+ box-shadow: var(--shadow-md);
345
+ }
346
+
347
+ .copy-code-button:focus {
348
+ outline: none;
349
+ box-shadow: 0 0 0 3px var(--color-accent-subtle);
350
+ }
351
+
352
+ .copy-code-button:active {
353
+ transform: scale(0.92);
354
+ box-shadow: none;
355
+ }
356
+
357
+ .copy-code-button svg {
358
+ width: 1rem;
359
+ height: 1rem;
360
+ fill: none;
361
+ stroke: currentcolor;
362
+ stroke-width: 2;
363
+ stroke-linecap: round;
364
+ stroke-linejoin: round;
365
+ color: var(--color-text-secondary);
366
+ transition: color var(--transition-fast), transform var(--transition-base);
367
+ }
368
+
369
+ .copy-code-button:hover svg {
370
+ color: var(--color-text-primary);
371
+ }
372
+
373
+ /* Copied state - subtle green checkmark */
374
+ .copy-code-button.copied {
375
+ background: var(--color-success-bg);
376
+ border-color: var(--color-green-500);
377
+ opacity: 1;
378
+ }
379
+
380
+ .copy-code-button.copied svg {
381
+ color: var(--color-green-600);
382
+ }
383
+
384
+ [data-theme="dark"] .copy-code-button.copied {
385
+ border-color: var(--color-green-400);
386
+ }
387
+
388
+ [data-theme="dark"] .copy-code-button.copied svg {
389
+ color: var(--color-green-400);
390
+ }
391
+
392
+ /* Mobile adjustments */
393
+ @media (hover: none) {
394
+ .copy-code-button {
395
+ opacity: 0.7;
396
+ }
397
+
398
+ .copy-code-button:active {
399
+ opacity: 1;
400
+ }
401
+ }
402
+
403
+ /* Inline code */
404
+ code {
405
+ font-family: var(--font-code);
406
+ background-color: var(--color-code-bg);
407
+ border: 1px solid var(--color-border-subtle);
408
+ padding: 0.125rem 0.375rem;
409
+ border-radius: var(--radius-sm);
410
+ font-size: 0.9em;
411
+ }
412
+
413
+ pre code {
414
+ background: none;
415
+ border: none;
416
+ padding: 0;
417
+ font-size: inherit;
418
+ }
419
+
420
+ a code:hover {
421
+ color: var(--color-link-hover);
422
+ }
423
+
424
+ /* Tables */
425
+ table {
426
+ margin: 0;
427
+ border-spacing: 0;
428
+ border-collapse: collapse;
429
+ }
430
+
431
+ table tr th, table tr td {
432
+ padding: 0.2em 0.4em;
433
+ border: 1px solid var(--color-border-default);
434
+ }
435
+
436
+ table tr th {
437
+ background-color: var(--color-th-background);
438
+ }
439
+
440
+ table tr:nth-child(even) td {
441
+ background-color: var(--color-td-background);
442
+ }
443
+
444
+ /* 6. Header (Top Navbar) */
445
+ header.top-navbar {
446
+ grid-area: header;
447
+ position: sticky;
448
+ top: 0;
449
+ z-index: var(--z-fixed);
450
+ background: var(--color-background-primary);
451
+ border-bottom: 1px solid var(--color-border-default);
452
+ display: flex;
453
+ align-items: center;
454
+ justify-content: flex-start;
455
+ padding: 0 var(--space-6);
456
+ gap: var(--space-8);
457
+ height: var(--layout-header-height);
458
+ box-shadow: var(--shadow-sm);
459
+ }
460
+
461
+ header.top-navbar .navbar-brand {
462
+ font-size: var(--font-size-xl);
463
+ font-weight: var(--font-weight-semibold);
464
+ color: var(--color-text-primary);
465
+ text-decoration: none;
466
+ white-space: nowrap;
467
+ }
468
+
469
+ header.top-navbar .navbar-brand:hover {
470
+ color: var(--color-accent-primary);
471
+ }
472
+
473
+ header.top-navbar .navbar-search {
474
+ position: relative;
475
+ flex: 0 1 auto;
476
+ width: var(--layout-search-width);
477
+ }
478
+
479
+ header.top-navbar .navbar-search form {
480
+ margin: 0;
481
+ padding: 0;
482
+ }
483
+
484
+
485
+
486
+ /* Mobile search icon button (hidden on desktop) */
487
+ .navbar-search-mobile {
488
+ display: none;
489
+ }
490
+
491
+ /* Theme toggle button */
492
+ .theme-toggle {
493
+ display: flex;
494
+ align-items: center;
495
+ justify-content: center;
496
+ padding: var(--space-2);
497
+ margin-left: auto;
498
+ background: transparent;
499
+ border: 1px solid var(--color-border-default);
500
+ border-radius: var(--radius-md);
501
+ color: var(--color-text-primary);
502
+ cursor: pointer;
503
+ transition:
504
+ background var(--transition-fast),
505
+ border-color var(--transition-fast),
506
+ color var(--transition-fast),
507
+ transform var(--transition-fast);
508
+ font-size: var(--font-size-lg);
509
+ line-height: 1;
510
+ width: 2.5rem;
511
+ height: 2.5rem;
512
+ }
513
+
514
+ .theme-toggle:hover {
515
+ background: var(--color-background-secondary);
516
+ border-color: var(--color-accent-primary);
517
+ color: var(--color-accent-primary);
518
+ transform: scale(1.05);
519
+ }
520
+
521
+ .theme-toggle:focus {
522
+ outline: none;
523
+ border-color: var(--color-accent-primary);
524
+ box-shadow: 0 0 0 3px var(--color-accent-subtle);
525
+ }
526
+
527
+ .theme-toggle:active {
528
+ transform: scale(0.95);
529
+ }
530
+
531
+ .theme-toggle-icon {
532
+ display: inline-block;
533
+ transition: transform var(--duration-base) var(--ease-out-smooth);
534
+ }
535
+
536
+ .theme-toggle:hover .theme-toggle-icon {
537
+ transform: rotate(15deg) scale(1.1);
538
+ }
539
+
540
+ /* Mobile navbar */
541
+ @media (width <= 1023px) {
542
+ header.top-navbar {
543
+ display: flex;
544
+ align-items: center;
545
+ padding: 0 var(--space-4);
546
+ gap: var(--space-4);
547
+ }
548
+
549
+ /* Hide desktop search bar on mobile */
550
+ header.top-navbar .navbar-search-desktop {
551
+ display: none;
552
+ }
553
+
554
+ /* Show mobile search icon */
555
+ .navbar-search-mobile {
556
+ display: flex;
557
+ align-items: center;
558
+ justify-content: center;
559
+ padding: 0.5rem;
560
+ background: transparent;
561
+ border: none;
562
+ font-size: 1.25rem;
563
+ color: var(--color-text-primary);
564
+ cursor: pointer;
565
+ transition: color var(--transition-fast);
566
+ }
567
+
568
+ .navbar-search-mobile:hover {
569
+ color: var(--color-accent-primary);
570
+ }
571
+
572
+ /* Brand needs left margin for hamburger button */
573
+ header.top-navbar .navbar-brand {
574
+ margin-left: 2.5rem;
575
+ flex: 1;
576
+ font-size: var(--font-size-lg);
577
+ overflow: hidden;
578
+ text-overflow: ellipsis;
579
+ white-space: nowrap;
580
+ }
581
+ }
582
+
583
+ /* 7. Navigation (Left Sidebar) */
584
+ nav {
585
+ grid-area: nav;
586
+ font-family: var(--font-heading);
587
+ font-size: var(--font-size-base);
588
+ border-right: 1px solid var(--color-border-default);
589
+ background: var(--color-nav-bg);
590
+ color: var(--color-nav-text);
591
+ overflow: hidden auto;
592
+ overscroll-behavior: contain;
593
+ display: flex;
594
+ flex-direction: column;
595
+ position: sticky;
596
+ top: var(--layout-header-height);
597
+ height: calc(100vh - var(--layout-header-height));
598
+ scrollbar-width: thin;
599
+ scrollbar-color: var(--color-border-default) transparent;
600
+ }
601
+
602
+ /* Custom scrollbar for WebKit browsers */
603
+ nav::-webkit-scrollbar {
604
+ width: 6px;
605
+ }
606
+
607
+ nav::-webkit-scrollbar-track {
608
+ background: transparent;
609
+ }
610
+
611
+ nav::-webkit-scrollbar-thumb {
612
+ background: var(--color-border-default);
613
+ border-radius: var(--radius-sm);
614
+ transition: background var(--transition-fast);
615
+ }
616
+
617
+ nav::-webkit-scrollbar-thumb:hover {
618
+ background: var(--color-border-emphasis);
619
+ }
620
+
621
+ /* Mobile navigation */
622
+ @media (width <= 1023px) {
623
+ nav {
624
+ position: fixed;
625
+ top: var(--layout-header-height);
626
+ bottom: 0;
627
+ left: 0;
628
+ width: var(--layout-sidebar-width);
629
+ z-index: calc(var(--z-fixed) - 10); /* Below header */
630
+ box-shadow: var(--shadow-lg);
631
+
632
+ /* Don't set height - let top/bottom define it */
633
+ }
634
+
635
+ nav[hidden] {
636
+ display: none;
637
+ }
638
+
639
+ /* Backdrop for mobile nav */
640
+ body::before {
641
+ content: '';
642
+ position: fixed;
643
+ inset: var(--layout-header-height) 0 0 0;
644
+ background: var(--color-overlay);
645
+ z-index: calc(var(--z-fixed) - 20);
646
+ opacity: 0;
647
+ pointer-events: none;
648
+ transition: opacity var(--transition-base);
649
+ }
650
+
651
+ /* Show backdrop when nav is open */
652
+ body.nav-open::before {
653
+ opacity: 1;
654
+ pointer-events: auto;
655
+ }
656
+ }
657
+
658
+ /* Desktop: hide nav when [hidden] attribute is set */
659
+ @media (width >= 1024px) {
660
+ nav[hidden] {
661
+ display: none;
662
+ }
663
+ }
664
+
665
+ nav .nav-section {
666
+ margin-top: var(--space-6);
667
+ padding: 0 var(--space-6);
668
+ }
669
+
670
+ nav h2, nav h3 {
671
+ font-size: var(--font-size-lg);
672
+ font-weight: var(--font-weight-semibold);
673
+ margin: 0 0 var(--space-4);
674
+ padding: var(--space-2) 0;
675
+ color: var(--color-accent-primary);
676
+ border-bottom: 1px solid var(--color-border-default);
677
+ }
678
+
679
+ nav ul,
680
+ nav dl,
681
+ nav p {
682
+ padding: 0;
683
+ list-style: none;
684
+ margin: var(--space-3) 0;
685
+ }
686
+
687
+ nav ul li {
688
+ margin-bottom: var(--space-2);
689
+ line-height: var(--line-height-relaxed);
690
+ }
691
+
692
+ nav ul li a {
693
+ padding: var(--space-1) 0;
694
+ transition:
695
+ color var(--transition-fast),
696
+ transform var(--transition-fast),
697
+ padding var(--transition-fast);
698
+ }
699
+
700
+ nav ul li a:hover {
701
+ padding-left: var(--space-1);
702
+ }
703
+
704
+ nav ul ul {
705
+ padding-left: var(--space-5);
706
+ margin-top: var(--space-2);
707
+ }
708
+
709
+ nav ul ul ul {
710
+ padding-left: var(--space-5);
711
+ }
712
+
713
+ nav ul ul ul ul {
714
+ padding-left: var(--space-5);
715
+ }
716
+
717
+ nav a {
718
+ text-decoration: none;
719
+ }
720
+
721
+ /* Truncation for direct nav links (not links inside code tags) */
722
+ nav .nav-list > li > a,
723
+ nav .nav-section > ul > li > a,
724
+ nav .nav-section > dl > dd > a {
725
+ display: block;
726
+ max-width: 100%;
727
+ overflow: hidden;
728
+ text-overflow: ellipsis;
729
+ white-space: nowrap;
730
+ }
731
+
732
+ nav footer {
733
+ padding: var(--space-4);
734
+ border-top: 1px solid var(--color-border-default);
735
+ }
736
+
737
+ nav footer a {
738
+ color: var(--color-accent-hover);
739
+ }
740
+
741
+ #navigation-toggle {
742
+ display: none; /* Hidden by default, shown on mobile */
743
+ }
744
+
745
+ /* Mobile toggle button */
746
+ @media (width <= 1023px) {
747
+ #navigation-toggle {
748
+ display: flex;
749
+ align-items: center;
750
+ justify-content: center;
751
+ position: fixed;
752
+ top: calc(var(--layout-header-height) / 2);
753
+ transform: translateY(-50%);
754
+ left: 1rem;
755
+ z-index: var(--z-fixed);
756
+ font-size: 1.5rem;
757
+ background: transparent;
758
+ border: none;
759
+ color: var(--color-text-primary);
760
+ cursor: pointer;
761
+ transition: color var(--transition-fast);
762
+ line-height: 1;
763
+ user-select: none;
764
+ -webkit-user-select: none;
765
+ }
766
+
767
+ #navigation-toggle:hover {
768
+ color: var(--color-accent-primary);
769
+ }
770
+ }
771
+
772
+ /*
773
+ * Shared Collapsible Animation using ::details-content pseudo-element.
774
+ * This is the modern CSS approach for animating <details> elements.
775
+ * Uses block-size animation with interpolate-size for smooth height transitions.
776
+ * Both nav-section-collapsible and nested link-list details share this pattern.
777
+ */
778
+ nav details {
779
+ interpolate-size: allow-keywords;
780
+ }
781
+
782
+ nav details::details-content {
783
+ overflow: hidden;
784
+ block-size: 0;
785
+ transition: block-size 200ms ease, content-visibility 200ms ease allow-discrete;
786
+ }
787
+
788
+ nav details[open]::details-content {
789
+ block-size: auto;
790
+ }
791
+
792
+ /* Collapsible Navigation Section Headers */
793
+
794
+ nav .nav-section-header {
795
+ display: flex;
796
+ align-items: center;
797
+ gap: var(--space-3);
798
+ padding: var(--space-3) 0;
799
+ cursor: pointer;
800
+ list-style: none;
801
+ user-select: none;
802
+ -webkit-user-select: none;
803
+ border-bottom: 1px solid var(--color-border-default);
804
+ margin-bottom: var(--space-3);
805
+ transition: color var(--transition-fast);
806
+ }
807
+
808
+ nav .nav-section-header::-webkit-details-marker {
809
+ display: none;
810
+ }
811
+
812
+ nav .nav-section-header:hover {
813
+ color: var(--color-accent-primary);
814
+ }
815
+
816
+ nav .nav-section-icon {
817
+ display: flex;
818
+ align-items: center;
819
+ justify-content: center;
820
+ width: 1.25rem;
821
+ height: 1.25rem;
822
+ flex-shrink: 0;
823
+ color: var(--color-accent-primary);
824
+ }
825
+
826
+ nav .nav-section-icon svg {
827
+ width: 100%;
828
+ height: 100%;
829
+ }
830
+
831
+ nav .nav-section-title {
832
+ font-size: var(--font-size-base);
833
+ font-weight: var(--font-weight-semibold);
834
+ color: inherit;
835
+ flex: 1;
836
+ min-width: 0;
837
+ overflow: hidden;
838
+ text-overflow: ellipsis;
839
+ white-space: nowrap;
840
+ }
841
+
842
+ nav .nav-section-chevron {
843
+ display: flex;
844
+ align-items: center;
845
+ justify-content: center;
846
+ width: 1rem;
847
+ height: 1rem;
848
+ flex-shrink: 0;
849
+ color: var(--color-text-tertiary);
850
+ transition: transform var(--transition-base);
851
+ }
852
+
853
+ nav .nav-section-chevron svg {
854
+ width: 100%;
855
+ height: 100%;
856
+ }
857
+
858
+ /* Rotate chevron when open */
859
+ nav .nav-section-collapsible[open] > .nav-section-header .nav-section-chevron {
860
+ transform: rotate(90deg);
861
+ }
862
+
863
+ nav .nav-section-collapsible > ul,
864
+ nav .nav-section-collapsible > dl,
865
+ nav .nav-section-collapsible > p {
866
+ margin-top: 0;
867
+ }
868
+
869
+ nav .nav-section-collapsible > .nav-list {
870
+ padding-left: var(--space-5);
871
+ border-left: 1px solid var(--color-border-subtle);
872
+ margin-left: 9px; /* Align with the section icon center */
873
+ }
874
+
875
+ nav .nav-section-collapsible .nav-list .link-list {
876
+ border-left: none;
877
+ margin-left: 0;
878
+ padding-left: var(--space-5);
879
+ }
880
+
881
+ /*
882
+ Improve chevron styling for details under link-list, using SVG chevron that matches nav-section-chevron
883
+ We need to avoid adding the element in class content generation so it doesn't break darkfish styles
884
+ */
885
+ nav li details:has(.link-list) > summary {
886
+ display: inline-flex;
887
+ align-items: center;
888
+ gap: var(--space-2);
889
+ cursor: pointer;
890
+ }
891
+
892
+ nav li details:has(.link-list) > summary::after {
893
+ content: '';
894
+ position: static;
895
+ display: inline-block;
896
+ width: 1rem;
897
+ height: 1rem;
898
+ flex-shrink: 0;
899
+ margin-left: 0;
900
+ background-color: var(--color-text-secondary);
901
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E");
902
+ mask-size: contain;
903
+ mask-repeat: no-repeat;
904
+ mask-position: center;
905
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E");
906
+ -webkit-mask-size: contain;
907
+ -webkit-mask-repeat: no-repeat;
908
+ -webkit-mask-position: center;
909
+ transition: transform var(--transition-base), background-color var(--transition-fast);
910
+ }
911
+
912
+ nav li details:has(.link-list) > summary:hover::after {
913
+ background-color: var(--color-accent-primary);
914
+ }
915
+
916
+ nav li details:has(.link-list)[open] > summary::after {
917
+ transform: rotate(90deg);
918
+ background-color: var(--color-accent-primary);
919
+ }
920
+
921
+ /* 8. Main Content (Center Column) */
922
+ main {
923
+ grid-area: main;
924
+ width: 100%;
925
+ max-width: var(--layout-content-max-width);
926
+ margin: 0 auto;
927
+ padding: var(--space-12) var(--space-8);
928
+ font-size: var(--font-size-base);
929
+ line-height: var(--line-height-relaxed);
930
+ color: var(--color-text-primary);
931
+ box-sizing: border-box;
932
+ }
933
+
934
+ /* Desktop: hide hamburger */
935
+ @media (width >= 1024px) {
936
+ #navigation-toggle {
937
+ display: none;
938
+ }
939
+ }
940
+
941
+ /* Mobile: full width with padding */
942
+ @media (width <= 1023px) {
943
+ main {
944
+ padding: var(--space-6) var(--space-4);
945
+ padding-top: var(--space-8);
946
+ width: 100%;
947
+ }
948
+
949
+ footer.site-footer {
950
+ padding: var(--space-8) var(--space-4);
951
+ }
952
+
953
+ footer.site-footer .footer-content {
954
+ grid-template-columns: 1fr;
955
+ gap: var(--space-6);
956
+ }
957
+ }
958
+
959
+ main h1[class] {
960
+ margin-top: 0;
961
+ margin-bottom: 1em;
962
+ font-size: 2.5em;
963
+ color: var(--color-accent-primary);
964
+ }
965
+
966
+ main h1,
967
+ main h2,
968
+ main h3,
969
+ main h4,
970
+ main h5,
971
+ main h6 {
972
+ font-family: var(--font-heading);
973
+ color: var(--color-accent-primary);
974
+ scroll-margin-top: calc(var(--layout-header-height) + 2rem);
975
+ }
976
+
977
+ /* Heading size hierarchy */
978
+ main h1 {
979
+ font-size: var(--font-size-3xl);
980
+ font-weight: var(--font-weight-bold);
981
+ margin-bottom: var(--space-4);
982
+ line-height: var(--line-height-tight);
983
+ }
984
+
985
+ main h2 {
986
+ font-size: var(--font-size-2xl);
987
+ font-weight: var(--font-weight-semibold);
988
+ margin-top: var(--space-8);
989
+ margin-bottom: var(--space-4);
990
+ line-height: var(--line-height-tight);
991
+ }
992
+
993
+ main h3 {
994
+ font-size: var(--font-size-xl);
995
+ font-weight: var(--font-weight-semibold);
996
+ margin-top: var(--space-6);
997
+ margin-bottom: var(--space-3);
998
+ line-height: var(--line-height-tight);
999
+ }
1000
+
1001
+ main h4 {
1002
+ font-size: var(--font-size-lg);
1003
+ font-weight: var(--font-weight-medium);
1004
+ margin-top: var(--space-4);
1005
+ margin-bottom: var(--space-2);
1006
+ }
1007
+
1008
+ main h5, main h6 {
1009
+ font-size: var(--font-size-base);
1010
+ font-weight: var(--font-weight-medium);
1011
+ margin-top: var(--space-3);
1012
+ margin-bottom: var(--space-2);
1013
+ }
1014
+
1015
+ /* Heading links */
1016
+ main h1 a,
1017
+ main h2 a,
1018
+ main h3 a,
1019
+ main h4 a,
1020
+ main h5 a,
1021
+ main h6 a {
1022
+ color: inherit;
1023
+ text-decoration: none;
1024
+ }
1025
+
1026
+ main h1 a:hover,
1027
+ main h2 a:hover,
1028
+ main h3 a:hover,
1029
+ main h4 a:hover,
1030
+ main h5 a:hover,
1031
+ main h6 a:hover {
1032
+ text-decoration: underline;
1033
+ }
1034
+
1035
+ /* Syntax Highlighting - Light Theme */
1036
+ .ruby-constant { color: var(--code-orange); }
1037
+ .ruby-keyword { color: var(--code-red); }
1038
+ .ruby-ivar { color: var(--code-orange); }
1039
+ .ruby-operator { color: var(--code-green); }
1040
+ .ruby-identifier { color: var(--code-blue); }
1041
+ .ruby-node { color: var(--code-purple); }
1042
+
1043
+ .ruby-comment {
1044
+ color: var(--color-neutral-500);
1045
+ font-style: italic;
1046
+ }
1047
+ .ruby-regexp { color: var(--code-purple); }
1048
+ .ruby-value { color: var(--code-orange); }
1049
+ .ruby-string { color: var(--code-green); }
1050
+
1051
+ /* Syntax Highlighting - Dark Theme */
1052
+ [data-theme="dark"] .ruby-constant { color: var(--code-orange); }
1053
+ [data-theme="dark"] .ruby-keyword { color: var(--code-red); }
1054
+ [data-theme="dark"] .ruby-ivar { color: var(--code-orange); }
1055
+ [data-theme="dark"] .ruby-operator { color: var(--code-green); }
1056
+ [data-theme="dark"] .ruby-identifier { color: var(--code-blue); }
1057
+ [data-theme="dark"] .ruby-node { color: var(--code-purple); }
1058
+
1059
+ [data-theme="dark"] .ruby-comment {
1060
+ color: var(--color-neutral-400);
1061
+ font-style: italic;
1062
+ }
1063
+ [data-theme="dark"] .ruby-regexp { color: var(--code-purple); }
1064
+ [data-theme="dark"] .ruby-value { color: var(--code-orange); }
1065
+ [data-theme="dark"] .ruby-string { color: var(--code-green); }
1066
+
1067
+ /* C Syntax Highlighting */
1068
+ .c-keyword { color: var(--c-keyword); }
1069
+ .c-type { color: var(--c-type); }
1070
+ .c-macro { color: var(--c-macro); }
1071
+ .c-function { color: var(--c-function); }
1072
+ .c-identifier { color: var(--c-identifier); }
1073
+ .c-operator { color: var(--c-operator); }
1074
+ .c-preprocessor { color: var(--c-preprocessor); }
1075
+ .c-value { color: var(--c-value); }
1076
+ .c-string { color: var(--c-string); }
1077
+
1078
+ .c-comment {
1079
+ color: var(--c-comment);
1080
+ font-style: italic;
1081
+ }
1082
+
1083
+ /* Emphasis */
1084
+ em {
1085
+ text-decoration-color: var(--color-emphasis-decoration);
1086
+ text-decoration-line: underline;
1087
+ text-decoration-style: dotted;
1088
+ }
1089
+
1090
+ strong,
1091
+ em {
1092
+ color: var(--color-accent-primary);
1093
+ background-color: var(--color-emphasis-bg);
1094
+ }
1095
+
1096
+ /* Paragraphs */
1097
+ main p {
1098
+ line-height: var(--line-height-relaxed);
1099
+ font-weight: 400;
1100
+ margin-bottom: var(--space-4);
1101
+ }
1102
+
1103
+ /* Preformatted Text */
1104
+ main pre {
1105
+ margin: 1.2em 0.5em;
1106
+ padding: 1em;
1107
+ font-size: 0.8em;
1108
+ }
1109
+
1110
+ .code-block-wrapper pre {
1111
+ margin: 0;
1112
+ }
1113
+
1114
+ /* Horizontal Rules */
1115
+ main hr {
1116
+ margin: 1.5em 1em;
1117
+ border: 2px solid var(--color-border-default);
1118
+ }
1119
+
1120
+ /* Blockquotes */
1121
+ main blockquote {
1122
+ margin: 0 2em 1.2em 1.2em;
1123
+ padding-left: 0.5em;
1124
+ border-left: 2px solid var(--color-border-default);
1125
+ }
1126
+
1127
+ /* Lists */
1128
+ main li > p {
1129
+ margin: 0.5em;
1130
+ }
1131
+
1132
+ /* Definition Lists */
1133
+ main dl {
1134
+ margin: 1em 0.5em;
1135
+ }
1136
+
1137
+ main dt {
1138
+ line-height: 1.5;
1139
+ font-weight: bold;
1140
+ }
1141
+
1142
+ main dl.note-list dt {
1143
+ margin-right: 1em;
1144
+ float: left;
1145
+ }
1146
+
1147
+ main dl.note-list dt:has(+ dt) {
1148
+ margin-right: 0.25em;
1149
+ }
1150
+
1151
+ main dl.note-list dt:has(+ dt)::after {
1152
+ content: ', ';
1153
+ font-weight: normal;
1154
+ }
1155
+
1156
+ main dd {
1157
+ margin: 0 0 1em 1em;
1158
+ }
1159
+
1160
+ main dd p:first-child {
1161
+ margin-top: 0;
1162
+ }
1163
+
1164
+ /* Headers within Main */
1165
+ main header h2 {
1166
+ margin-top: 2em;
1167
+ border-width: 0;
1168
+ border-top: 4px solid var(--color-border-default);
1169
+ font-size: 130%;
1170
+ }
1171
+
1172
+ main header h3 {
1173
+ margin: 2em 0 1.5em;
1174
+ border-width: 0;
1175
+ border-top: 3px solid var(--color-border-default);
1176
+ font-size: 120%;
1177
+ }
1178
+
1179
+ h1:target,
1180
+ h2:target,
1181
+ h3:target,
1182
+ h4:target,
1183
+ h5:target,
1184
+ h6:target {
1185
+ margin-left: calc(-1 * var(--space-5));
1186
+ padding-left: calc(var(--space-5) / 2);
1187
+ border-left: calc(var(--space-5) / 2) solid var(--color-border-default);
1188
+ }
1189
+
1190
+ main .anchor-link:target {
1191
+ scroll-margin-top: calc(var(--layout-header-height) + 2rem);
1192
+ }
1193
+
1194
+
1195
+ /* Utility Classes */
1196
+ .hide { display: none !important; }
1197
+ .initially-hidden { display: none; }
1198
+
1199
+ /* Screen reader only */
1200
+ .sr-only {
1201
+ position: absolute;
1202
+ width: 1px;
1203
+ height: 1px;
1204
+ padding: 0;
1205
+ margin: -1px;
1206
+ overflow: hidden;
1207
+ clip-path: inset(50%);
1208
+ white-space: nowrap;
1209
+ border-width: 0;
1210
+ }
1211
+
1212
+
1213
+
1214
+ /* Method Details */
1215
+ main .method-source-code {
1216
+ visibility: hidden;
1217
+ max-height: 0;
1218
+ overflow: hidden;
1219
+ opacity: 0;
1220
+ transform: translateY(-8px);
1221
+ transition:
1222
+ max-height var(--duration-medium) var(--ease-out-smooth),
1223
+ visibility var(--duration-medium),
1224
+ opacity var(--duration-fast) ease-out,
1225
+ transform var(--duration-fast) ease-out;
1226
+ }
1227
+
1228
+ main .method-source-code pre {
1229
+ border-color: var(--color-accent-hover);
1230
+ border-left: 3px solid var(--color-accent-primary);
1231
+ width: 100%;
1232
+ box-sizing: border-box;
1233
+ transition: border-color var(--transition-fast);
1234
+ scrollbar-width: thin;
1235
+ scrollbar-color: var(--color-border-default) transparent;
1236
+ }
1237
+
1238
+ main .method-source-code pre::-webkit-scrollbar {
1239
+ width: 6px;
1240
+ height: 6px;
1241
+ }
1242
+
1243
+ main .method-source-code pre::-webkit-scrollbar-track {
1244
+ background: transparent;
1245
+ }
1246
+
1247
+ main .method-source-code pre::-webkit-scrollbar-thumb {
1248
+ background: var(--color-border-default);
1249
+ border-radius: var(--radius-sm);
1250
+ }
1251
+
1252
+ main .method-source-code pre::-webkit-scrollbar-thumb:hover {
1253
+ background: var(--color-border-emphasis);
1254
+ }
1255
+
1256
+ main .method-source-code pre::-webkit-scrollbar-corner {
1257
+ background: transparent;
1258
+ }
1259
+
1260
+ main .method-source-code.active-menu {
1261
+ visibility: visible;
1262
+ max-height: 100vh;
1263
+ overflow: auto;
1264
+ opacity: 1;
1265
+ transform: translateY(0);
1266
+ }
1267
+
1268
+ main .method-description .method-calls-super {
1269
+ color: var(--color-text-primary);
1270
+ font-weight: bold;
1271
+ }
1272
+
1273
+ main .method-detail {
1274
+ margin-bottom: 2.5em;
1275
+ }
1276
+
1277
+ main .method-detail:target {
1278
+ margin-left: calc(-1 * var(--space-5));
1279
+ padding-left: calc(var(--space-5) / 2);
1280
+ border-left: calc(var(--space-5) / 2) solid var(--color-border-default);
1281
+ }
1282
+
1283
+ main .method-header {
1284
+ display: inline-block;
1285
+ max-width: calc(100% - 6em); /* 6em is the width of the source code toggle */
1286
+ }
1287
+
1288
+ main .method-heading {
1289
+ position: relative;
1290
+ font-family: var(--font-code);
1291
+ font-size: var(--font-size-lg);
1292
+ font-weight: var(--font-weight-semibold);
1293
+ margin-bottom: var(--space-3);
1294
+ }
1295
+
1296
+ main .method-heading .method-name {
1297
+ font-weight: var(--font-weight-semibold);
1298
+ }
1299
+
1300
+ main .method-heading .method-args {
1301
+ font-weight: var(--font-weight-normal);
1302
+ }
1303
+
1304
+ main .method-controls {
1305
+ float: right;
1306
+ }
1307
+
1308
+ main .method-controls summary {
1309
+ display: inline-block;
1310
+ line-height: 20px;
1311
+ color: var(--color-accent-primary);
1312
+ cursor: pointer;
1313
+ padding: var(--space-1) var(--space-3);
1314
+ border-radius: var(--radius-sm);
1315
+ font-size: var(--font-size-sm);
1316
+ font-weight: var(--font-weight-medium);
1317
+ background: var(--color-accent-subtle);
1318
+ border: 1px solid transparent;
1319
+ transition:
1320
+ color var(--transition-fast),
1321
+ background var(--transition-fast),
1322
+ border-color var(--transition-fast),
1323
+ transform var(--transition-fast);
1324
+ user-select: none;
1325
+ -webkit-user-select: none;
1326
+ list-style: none;
1327
+ }
1328
+
1329
+ main .method-controls summary::-webkit-details-marker {
1330
+ display: none;
1331
+ }
1332
+
1333
+ main .method-controls summary:hover {
1334
+ background: var(--color-primary-100);
1335
+ border-color: var(--color-primary-300);
1336
+ transform: translateY(-1px);
1337
+ }
1338
+
1339
+ main .method-controls summary:active {
1340
+ transform: scale(0.96);
1341
+ }
1342
+
1343
+ [data-theme="dark"] main .method-controls summary:hover {
1344
+ background: var(--color-accent-subtle-hover);
1345
+ border-color: var(--color-primary-500);
1346
+ }
1347
+
1348
+ main .method-description,
1349
+ main .aliases {
1350
+ margin-top: 0.75em;
1351
+ color: var(--color-text-primary);
1352
+ }
1353
+
1354
+ main .aliases {
1355
+ padding-top: 4px;
1356
+ font-style: italic;
1357
+ cursor: default;
1358
+ }
1359
+
1360
+ main .aliases a {
1361
+ color: var(--color-accent-hover);
1362
+ }
1363
+
1364
+ main .mixin-from {
1365
+ font-size: 80%;
1366
+ font-style: italic;
1367
+ margin-bottom: 0.75em;
1368
+ }
1369
+
1370
+ main .method-description ul {
1371
+ margin-left: 1.5em;
1372
+ }
1373
+
1374
+ main #attribute-method-details .method-detail:hover {
1375
+ background-color: transparent;
1376
+ cursor: default;
1377
+ }
1378
+
1379
+ main .attribute-access-type {
1380
+ text-transform: uppercase;
1381
+ }
1382
+
1383
+ /* Small screen adjustments */
1384
+ @media (width <= 480px) {
1385
+ nav {
1386
+ width: 85%;
1387
+ max-width: 320px;
1388
+ }
1389
+
1390
+ main {
1391
+ margin: 0;
1392
+ padding: var(--space-4);
1393
+ max-width: 100%;
1394
+ }
1395
+
1396
+ table {
1397
+ display: block;
1398
+ overflow-x: auto;
1399
+ white-space: nowrap;
1400
+ }
1401
+
1402
+ main .method-controls {
1403
+ margin-top: 10px;
1404
+ float: none;
1405
+ }
1406
+ }
1407
+
1408
+
1409
+
1410
+ /* 9. Search Modal (Mobile) */
1411
+ .search-modal {
1412
+ position: fixed;
1413
+ inset: 0;
1414
+ z-index: var(--z-modal);
1415
+ display: none;
1416
+ }
1417
+
1418
+ .search-modal:not([hidden]) {
1419
+ display: flex;
1420
+ align-items: flex-start;
1421
+ justify-content: center;
1422
+ padding: var(--space-16) var(--space-4);
1423
+ }
1424
+
1425
+ /* Reduce padding on very small screens */
1426
+ @media (width <= 420px) {
1427
+ .search-modal:not([hidden]) {
1428
+ padding: var(--space-4) var(--space-3);
1429
+ }
1430
+
1431
+ .search-modal-content {
1432
+ border-radius: var(--radius-md);
1433
+ }
1434
+
1435
+ .search-modal-header {
1436
+ padding: var(--space-3);
1437
+ }
1438
+
1439
+ .search-modal-body {
1440
+ padding: var(--space-3);
1441
+ }
1442
+
1443
+ .search-modal-form input {
1444
+ font-size: var(--font-size-base);
1445
+ min-width: 0; /* Allow input to shrink */
1446
+ }
1447
+
1448
+ .search-modal-form {
1449
+ gap: var(--space-2);
1450
+ }
1451
+
1452
+ .search-modal-close {
1453
+ padding: var(--space-1) var(--space-3);
1454
+ font-size: 0.75rem;
1455
+ }
1456
+ }
1457
+
1458
+ .search-modal-backdrop {
1459
+ position: absolute;
1460
+ inset: 0;
1461
+ background: var(--color-overlay);
1462
+ z-index: 1;
1463
+ }
1464
+
1465
+ .search-modal-content {
1466
+ position: relative;
1467
+ z-index: 2;
1468
+ background: var(--color-background-primary);
1469
+ border-radius: var(--radius-lg);
1470
+ box-shadow: var(--shadow-xl);
1471
+ width: 100%;
1472
+ max-width: 600px;
1473
+ max-height: 80vh;
1474
+ display: flex;
1475
+ flex-direction: column;
1476
+ }
1477
+
1478
+ .search-modal-header {
1479
+ padding: var(--space-6);
1480
+ border-bottom: 1px solid var(--color-border-default);
1481
+ }
1482
+
1483
+ .search-modal-form {
1484
+ display: flex;
1485
+ align-items: center;
1486
+ gap: var(--space-3);
1487
+ }
1488
+
1489
+ .search-modal-icon {
1490
+ font-size: 1.5rem;
1491
+ color: var(--color-text-secondary);
1492
+ flex-shrink: 0;
1493
+ }
1494
+
1495
+ .search-modal-form input {
1496
+ flex: 1;
1497
+ border: none;
1498
+ outline: none;
1499
+ background: transparent;
1500
+ font-size: var(--font-size-lg);
1501
+ color: var(--color-text-primary);
1502
+ padding: 0;
1503
+ }
1504
+
1505
+ .search-modal-form input::placeholder {
1506
+ color: var(--color-text-tertiary);
1507
+ }
1508
+
1509
+ .search-modal-close {
1510
+ padding: var(--space-2) var(--space-4);
1511
+ background: var(--color-background-secondary);
1512
+ border: 1px solid var(--color-border-default);
1513
+ border-radius: var(--radius-md);
1514
+ font-size: var(--font-size-sm);
1515
+ color: var(--color-text-secondary);
1516
+ cursor: pointer;
1517
+ transition: background var(--transition-fast), border-color var(--transition-fast);
1518
+ flex-shrink: 0;
1519
+ }
1520
+
1521
+ .search-modal-close:hover {
1522
+ background: var(--color-background-tertiary);
1523
+ border-color: var(--color-border-default);
1524
+ }
1525
+
1526
+ .search-modal-body {
1527
+ padding: var(--space-6);
1528
+ overflow-y: auto;
1529
+ flex: 1;
1530
+ }
1531
+
1532
+ .search-modal-empty {
1533
+ text-align: center;
1534
+ color: var(--color-text-tertiary);
1535
+ padding: var(--space-12) 0;
1536
+ }
1537
+
1538
+ .search-modal-results {
1539
+ list-style: none;
1540
+ margin: 0;
1541
+ padding: 0;
1542
+ }
1543
+
1544
+ .search-modal-results.initially-hidden {
1545
+ display: block !important; /* Override initially-hidden */
1546
+ }
1547
+
1548
+ .search-modal-results li {
1549
+ padding: var(--space-3) var(--space-4);
1550
+ border-radius: var(--radius-md);
1551
+ cursor: pointer;
1552
+ transition: background var(--transition-fast);
1553
+ margin-bottom: var(--space-2);
1554
+ }
1555
+
1556
+ .search-modal-results li:hover {
1557
+ background: var(--color-background-secondary);
1558
+ }
1559
+
1560
+ .search-modal-results a {
1561
+ color: var(--color-text-primary);
1562
+ }
1563
+
1564
+ .search-modal-results .search-match {
1565
+ margin: 0;
1566
+ font-size: var(--font-size-base);
1567
+ }
1568
+
1569
+ .search-modal-results .search-match a {
1570
+ text-decoration: none;
1571
+ }
1572
+
1573
+ .search-modal-results .search-namespace {
1574
+ margin: var(--space-1) 0 0 0;
1575
+ font-size: var(--font-size-sm);
1576
+ color: var(--color-text-secondary);
1577
+ }
1578
+
1579
+ .search-modal-results .search-snippet {
1580
+ margin: var(--space-1) 0 0 0;
1581
+ font-size: var(--font-size-sm);
1582
+ color: var(--color-text-tertiary);
1583
+ }
1584
+
1585
+ /* 10. Right Sidebar - Table of Contents */
1586
+ aside.table-of-contents {
1587
+ grid-area: toc;
1588
+ align-self: start;
1589
+ position: sticky;
1590
+ top: var(--layout-header-height);
1591
+ padding: var(--space-8) var(--space-6);
1592
+ border: none;
1593
+ border-left: 1px solid var(--color-border-default);
1594
+ font-size: var(--font-size-base);
1595
+ }
1596
+
1597
+ aside.table-of-contents * {
1598
+ border-right: none !important;
1599
+ outline: none !important;
1600
+ }
1601
+
1602
+ aside.table-of-contents .toc-sticky {
1603
+ display: flex;
1604
+ flex-direction: column;
1605
+
1606
+ /* Exclude header height and top/bottom padding of aside.table-of-contents */
1607
+ height: calc(100vh - var(--layout-header-height) - var(--space-8) * 2);
1608
+ }
1609
+
1610
+ aside.table-of-contents .toc-sticky nav {
1611
+ height: auto;
1612
+ }
1613
+
1614
+ aside.table-of-contents .toc-list > .toc-h2 {
1615
+ margin-left: var(--space-4);
1616
+ }
1617
+
1618
+ aside.table-of-contents .toc-list > .toc-h3 {
1619
+ margin-left: var(--space-8);
1620
+ }
1621
+
1622
+ /* Hide TOC on mobile/tablet */
1623
+ @media (width <= 1279px) {
1624
+ aside.table-of-contents {
1625
+ display: none;
1626
+ }
1627
+
1628
+ body.has-toc {
1629
+ grid-template-columns: var(--layout-sidebar-width) 1fr;
1630
+ grid-template-areas:
1631
+ "header header"
1632
+ "nav main"
1633
+ "footer footer";
1634
+ }
1635
+ }
1636
+
1637
+ /* Tablet adjustments (between mobile and desktop) */
1638
+ @media (width >= 768px) and (width <= 1023px) {
1639
+ header.top-navbar {
1640
+ padding: 0 var(--space-6);
1641
+ }
1642
+
1643
+ main {
1644
+ padding: var(--space-8) var(--space-6);
1645
+ max-width: 100%;
1646
+ }
1647
+ }
1648
+
1649
+ .table-of-contents h3 {
1650
+ font-size: var(--font-size-lg);
1651
+ font-weight: var(--font-weight-semibold);
1652
+ margin: 0 0 var(--space-5) 0;
1653
+ color: var(--color-text-primary);
1654
+ }
1655
+
1656
+ .table-of-contents ul {
1657
+ margin: 0;
1658
+ padding: 0;
1659
+ list-style: none;
1660
+ }
1661
+
1662
+ .table-of-contents ul ul {
1663
+ margin-top: var(--space-3);
1664
+ margin-left: var(--space-5);
1665
+ border-left: 1px solid var(--color-border-default);
1666
+ padding-left: var(--space-4);
1667
+ }
1668
+
1669
+ .table-of-contents li {
1670
+ margin-bottom: var(--space-3);
1671
+ }
1672
+
1673
+ .table-of-contents a {
1674
+ display: block;
1675
+ color: var(--color-text-secondary);
1676
+ text-decoration: none;
1677
+ transition: color var(--transition-fast);
1678
+ line-height: var(--line-height-relaxed);
1679
+ overflow-wrap: break-word;
1680
+ hyphens: auto;
1681
+ }
1682
+
1683
+ /* Nav hover styles sit here to keep specificity ordering with TOC links */
1684
+ nav a:hover {
1685
+ color: var(--color-link-hover);
1686
+ text-decoration: underline;
1687
+ }
1688
+
1689
+ .table-of-contents a:hover {
1690
+ color: var(--color-link-hover);
1691
+ }
1692
+
1693
+ .table-of-contents a.active {
1694
+ color: var(--color-accent-primary);
1695
+ font-weight: var(--font-weight-medium);
1696
+ }
1697
+
1698
+ ol.breadcrumb {
1699
+ display: flex;
1700
+ padding: 0;
1701
+ margin: 0 0 1em;
1702
+ }
1703
+
1704
+ ol.breadcrumb li {
1705
+ display: block;
1706
+ list-style: none;
1707
+ font-size: 125%;
1708
+ }
1709
+
1710
+ /* 11. Footer */
1711
+ footer.site-footer {
1712
+ grid-area: footer;
1713
+ background: var(--color-background-secondary);
1714
+ border-top: 1px solid var(--color-border-default);
1715
+ padding: var(--space-12) var(--space-6);
1716
+ }
1717
+
1718
+ footer.site-footer .footer-content {
1719
+ max-width: 1200px;
1720
+ margin: 0 auto;
1721
+ display: grid;
1722
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
1723
+ gap: var(--space-8);
1724
+ }
1725
+
1726
+ footer.site-footer h3 {
1727
+ font-size: var(--font-size-sm);
1728
+ font-weight: var(--font-weight-semibold);
1729
+ color: var(--color-text-primary);
1730
+ margin: 0 0 var(--space-4) 0;
1731
+ letter-spacing: 0.05em;
1732
+ }
1733
+
1734
+ footer.site-footer ul {
1735
+ list-style: none;
1736
+ margin: 0;
1737
+ padding: 0;
1738
+ }
1739
+
1740
+ footer.site-footer li {
1741
+ margin-bottom: var(--space-2);
1742
+ }
1743
+
1744
+ footer.site-footer a {
1745
+ color: var(--color-text-secondary);
1746
+ text-decoration: none;
1747
+ font-size: var(--font-size-sm);
1748
+ transition: color var(--transition-fast);
1749
+ }
1750
+
1751
+ footer.site-footer a:hover {
1752
+ color: var(--color-link-hover);
1753
+ }
1754
+
1755
+ footer.site-footer .footer-bottom {
1756
+ margin-top: var(--space-8);
1757
+ padding-top: var(--space-6);
1758
+ border-top: 1px solid var(--color-border-default);
1759
+ text-align: center;
1760
+ font-size: var(--font-size-xs);
1761
+ color: var(--color-text-tertiary);
1762
+ }
1763
+
1764
+ footer.site-footer .footer-bottom:first-child {
1765
+ margin-top: 0;
1766
+ padding-top: 0;
1767
+ border-top: none;
1768
+ }
1769
+
1770
+ /* Search */
1771
+ #search-section {
1772
+ padding: var(--space-6);
1773
+ background-color: var(--color-background-primary);
1774
+ border-bottom: 1px solid var(--color-border-default);
1775
+ }
1776
+
1777
+ #search-field-wrapper {
1778
+ position: relative;
1779
+ display: flex;
1780
+ align-items: center;
1781
+ }
1782
+
1783
+ #search-field {
1784
+ width: 100%;
1785
+ padding: var(--space-2) var(--space-4) var(--space-2) 2.5rem;
1786
+ border: 1px solid var(--color-border-default);
1787
+ border-radius: 1.25rem;
1788
+ font-size: var(--font-size-sm);
1789
+ outline: none;
1790
+ transition: border-color var(--transition-base);
1791
+ color: var(--color-text-primary);
1792
+ }
1793
+
1794
+ #search-field:focus {
1795
+ border-color: var(--color-accent-primary);
1796
+ }
1797
+
1798
+ #search-field::placeholder {
1799
+ color: var(--color-text-primary);
1800
+ }
1801
+
1802
+ #search-field-wrapper::before {
1803
+ content: "\1F50D";
1804
+ position: absolute;
1805
+ left: var(--space-3);
1806
+ top: 50%;
1807
+ transform: translateY(-50%);
1808
+ font-size: var(--font-size-sm);
1809
+ color: var(--color-text-primary);
1810
+ opacity: 0.6;
1811
+ }
1812
+
1813
+ /* Search Results */
1814
+ .search-results {
1815
+ font-family: var(--font-primary);
1816
+ font-weight: 300;
1817
+ }
1818
+
1819
+ .search-results a {
1820
+ color: var(--color-text-primary);
1821
+ }
1822
+
1823
+ .search-results a:hover {
1824
+ color: var(--color-accent-primary);
1825
+ }
1826
+
1827
+ .search-results .search-match {
1828
+ font-family: var(--font-heading);
1829
+ font-weight: normal;
1830
+ }
1831
+
1832
+ .search-results .search-selected {
1833
+ background: var(--color-code-bg);
1834
+ border-bottom: 1px solid transparent;
1835
+ }
1836
+
1837
+ .search-results li {
1838
+ list-style: none;
1839
+ border-bottom: 1px solid var(--color-border-default);
1840
+ margin-bottom: 0.5em;
1841
+ }
1842
+
1843
+ .search-results li:last-child {
1844
+ border-bottom: none;
1845
+ margin-bottom: 0;
1846
+ }
1847
+
1848
+ .search-results li p {
1849
+ padding: 0;
1850
+ margin: 0.5em;
1851
+ }
1852
+
1853
+ .search-results .search-namespace {
1854
+ font-weight: bold;
1855
+ }
1856
+
1857
+ .search-results .search-type {
1858
+ display: inline-block;
1859
+ margin-left: var(--space-2);
1860
+ padding: 0 var(--space-2);
1861
+ font-size: var(--font-size-xs);
1862
+ font-weight: 500;
1863
+ border-radius: var(--radius-sm);
1864
+ vertical-align: middle;
1865
+ background: var(--color-background-tertiary);
1866
+ color: var(--color-text-secondary);
1867
+ }
1868
+
1869
+ .search-results .search-type-class {
1870
+ background: var(--color-search-type-class-bg);
1871
+ color: var(--color-search-type-class-text);
1872
+ }
1873
+
1874
+ .search-results .search-type-module {
1875
+ background: var(--color-search-type-module-bg);
1876
+ color: var(--color-search-type-module-text);
1877
+ }
1878
+
1879
+ .search-results .search-type-constant {
1880
+ background: var(--color-search-type-constant-bg);
1881
+ color: var(--color-search-type-constant-text);
1882
+ }
1883
+
1884
+ .search-results .search-type-instance-method,
1885
+ .search-results .search-type-class-method {
1886
+ background: var(--color-search-type-method-bg);
1887
+ color: var(--color-search-type-method-text);
1888
+ }
1889
+
1890
+ .search-results li em {
1891
+ background-color: var(--color-search-highlight-bg);
1892
+ font-style: normal;
1893
+ }
1894
+
1895
+ .search-results pre {
1896
+ margin: 0.5em;
1897
+ font-family: var(--font-code);
1898
+ }
1899
+
1900
+ header.top-navbar #search-field {
1901
+ width: 100%;
1902
+ padding: var(--space-2) var(--space-4);
1903
+ border: 1px solid var(--color-border-default);
1904
+ border-radius: var(--radius-md);
1905
+ font-size: var(--font-size-base);
1906
+ background: var(--color-background-primary);
1907
+ color: var(--color-text-primary);
1908
+ transition: border-color var(--transition-fast);
1909
+ }
1910
+
1911
+ header.top-navbar #search-field:focus {
1912
+ outline: none;
1913
+ border-color: var(--color-accent-primary);
1914
+ box-shadow: 0 0 0 3px var(--color-accent-subtle);
1915
+ }
1916
+
1917
+ header.top-navbar #search-field::placeholder {
1918
+ color: var(--color-text-tertiary);
1919
+ }
1920
+
1921
+ /* Search results dropdown in navbar */
1922
+ header.top-navbar #search-results-desktop {
1923
+ position: absolute;
1924
+ top: calc(100% + var(--space-2));
1925
+ left: 0;
1926
+ width: var(--layout-search-width);
1927
+ max-height: 60vh;
1928
+ background: var(--color-background-primary);
1929
+ border: 1px solid var(--color-border-default);
1930
+ border-radius: var(--radius-lg);
1931
+ box-shadow: var(--shadow-lg);
1932
+ overflow-y: auto;
1933
+ z-index: var(--z-popover);
1934
+ margin: 0;
1935
+ padding: 0;
1936
+ }
1937
+
1938
+ header.top-navbar #search-results-desktop.initially-hidden {
1939
+ display: none;
1940
+ }
1941
+
1942
+ header.top-navbar #search-results-desktop[aria-expanded="false"] {
1943
+ display: none;
1944
+ }