docyard 0.6.0 → 0.8.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 (177) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -1
  3. data/CHANGELOG.md +34 -1
  4. data/lib/docyard/build/asset_bundler.rb +22 -7
  5. data/lib/docyard/build/file_copier.rb +49 -27
  6. data/lib/docyard/build/sitemap_generator.rb +6 -6
  7. data/lib/docyard/build/static_generator.rb +82 -50
  8. data/lib/docyard/builder.rb +20 -10
  9. data/lib/docyard/cli.rb +6 -3
  10. data/lib/docyard/components/aliases.rb +29 -0
  11. data/lib/docyard/components/processors/callout_processor.rb +124 -0
  12. data/lib/docyard/components/processors/code_block_diff_preprocessor.rb +106 -0
  13. data/lib/docyard/components/processors/code_block_focus_preprocessor.rb +79 -0
  14. data/lib/docyard/components/processors/code_block_options_preprocessor.rb +78 -0
  15. data/lib/docyard/components/processors/code_block_processor.rb +175 -0
  16. data/lib/docyard/components/processors/code_snippet_import_preprocessor.rb +127 -0
  17. data/lib/docyard/components/processors/heading_anchor_processor.rb +39 -0
  18. data/lib/docyard/components/processors/icon_processor.rb +53 -0
  19. data/lib/docyard/components/processors/table_of_contents_processor.rb +68 -0
  20. data/lib/docyard/components/processors/table_wrapper_processor.rb +22 -0
  21. data/lib/docyard/components/processors/tabs_processor.rb +48 -0
  22. data/lib/docyard/components/support/code_block/feature_extractor.rb +117 -0
  23. data/lib/docyard/components/support/code_block/icon_detector.rb +44 -0
  24. data/lib/docyard/components/support/code_block/line_parser.rb +84 -0
  25. data/lib/docyard/components/support/code_block/line_wrapper.rb +50 -0
  26. data/lib/docyard/components/support/code_block/patterns.rb +55 -0
  27. data/lib/docyard/components/support/code_detector.rb +61 -0
  28. data/lib/docyard/components/support/tabs/icon_detector.rb +62 -0
  29. data/lib/docyard/components/support/tabs/parser.rb +195 -0
  30. data/lib/docyard/components/support/tabs/range_finder.rb +46 -0
  31. data/lib/docyard/config/branding_resolver.rb +183 -0
  32. data/lib/docyard/{constants.rb → config/constants.rb} +7 -4
  33. data/lib/docyard/config/validator.rb +122 -99
  34. data/lib/docyard/config.rb +38 -36
  35. data/lib/docyard/initializer.rb +15 -76
  36. data/lib/docyard/navigation/breadcrumb_builder.rb +133 -0
  37. data/lib/docyard/{prev_next_builder.rb → navigation/prev_next_builder.rb} +6 -3
  38. data/lib/docyard/navigation/sidebar/children_discoverer.rb +51 -0
  39. data/lib/docyard/navigation/sidebar/config_parser.rb +208 -0
  40. data/lib/docyard/navigation/sidebar/file_resolver.rb +78 -0
  41. data/lib/docyard/{sidebar → navigation/sidebar}/file_system_scanner.rb +2 -1
  42. data/lib/docyard/navigation/sidebar/item.rb +96 -0
  43. data/lib/docyard/navigation/sidebar/local_config_loader.rb +51 -0
  44. data/lib/docyard/navigation/sidebar/metadata_extractor.rb +69 -0
  45. data/lib/docyard/navigation/sidebar/metadata_reader.rb +47 -0
  46. data/lib/docyard/navigation/sidebar/path_prefixer.rb +34 -0
  47. data/lib/docyard/navigation/sidebar/renderer.rb +144 -0
  48. data/lib/docyard/navigation/sidebar/sorter.rb +21 -0
  49. data/lib/docyard/navigation/sidebar/tree_builder.rb +139 -0
  50. data/lib/docyard/navigation/sidebar/tree_filter.rb +55 -0
  51. data/lib/docyard/navigation/sidebar_builder.rb +159 -0
  52. data/lib/docyard/rendering/icon_helpers.rb +13 -0
  53. data/lib/docyard/{icons → rendering/icons}/phosphor.rb +26 -1
  54. data/lib/docyard/{markdown.rb → rendering/markdown.rb} +19 -13
  55. data/lib/docyard/rendering/renderer.rb +163 -0
  56. data/lib/docyard/rendering/template_resolver.rb +172 -0
  57. data/lib/docyard/routing/fallback_resolver.rb +92 -0
  58. data/lib/docyard/search/build_indexer.rb +74 -0
  59. data/lib/docyard/search/dev_indexer.rb +155 -0
  60. data/lib/docyard/search/pagefind_support.rb +33 -0
  61. data/lib/docyard/{asset_handler.rb → server/asset_handler.rb} +24 -19
  62. data/lib/docyard/{server.rb → server/dev_server.rb} +32 -9
  63. data/lib/docyard/server/pagefind_handler.rb +63 -0
  64. data/lib/docyard/{preview_server.rb → server/preview_server.rb} +2 -2
  65. data/lib/docyard/server/rack_application.rb +192 -0
  66. data/lib/docyard/server/resolution_result.rb +29 -0
  67. data/lib/docyard/{router.rb → server/router.rb} +4 -4
  68. data/lib/docyard/templates/assets/css/code.css +18 -51
  69. data/lib/docyard/templates/assets/css/components/breadcrumbs.css +143 -0
  70. data/lib/docyard/templates/assets/css/components/callout.css +67 -67
  71. data/lib/docyard/templates/assets/css/components/code-block.css +180 -282
  72. data/lib/docyard/templates/assets/css/components/heading-anchor.css +28 -15
  73. data/lib/docyard/templates/assets/css/components/icon.css +0 -1
  74. data/lib/docyard/templates/assets/css/components/logo.css +0 -2
  75. data/lib/docyard/templates/assets/css/components/nav-menu.css +237 -0
  76. data/lib/docyard/templates/assets/css/components/navigation.css +186 -167
  77. data/lib/docyard/templates/assets/css/components/prev-next.css +76 -47
  78. data/lib/docyard/templates/assets/css/components/search.css +561 -0
  79. data/lib/docyard/templates/assets/css/components/tab-bar.css +163 -0
  80. data/lib/docyard/templates/assets/css/components/table-of-contents.css +127 -114
  81. data/lib/docyard/templates/assets/css/components/tabs.css +119 -160
  82. data/lib/docyard/templates/assets/css/components/theme-toggle.css +48 -44
  83. data/lib/docyard/templates/assets/css/landing.css +815 -0
  84. data/lib/docyard/templates/assets/css/layout.css +503 -87
  85. data/lib/docyard/templates/assets/css/main.css +1 -3
  86. data/lib/docyard/templates/assets/css/markdown.css +111 -93
  87. data/lib/docyard/templates/assets/css/reset.css +0 -3
  88. data/lib/docyard/templates/assets/css/typography.css +43 -41
  89. data/lib/docyard/templates/assets/css/variables.css +268 -208
  90. data/lib/docyard/templates/assets/favicon.svg +7 -8
  91. data/lib/docyard/templates/assets/fonts/Inter-Variable.ttf +0 -0
  92. data/lib/docyard/templates/assets/js/components/code-block.js +24 -42
  93. data/lib/docyard/templates/assets/js/components/heading-anchor.js +26 -24
  94. data/lib/docyard/templates/assets/js/components/navigation.js +181 -70
  95. data/lib/docyard/templates/assets/js/components/search.js +610 -0
  96. data/lib/docyard/templates/assets/js/components/sidebar-toggle.js +29 -0
  97. data/lib/docyard/templates/assets/js/components/tab-navigation.js +145 -0
  98. data/lib/docyard/templates/assets/js/components/table-of-contents.js +153 -66
  99. data/lib/docyard/templates/assets/js/components/tabs.js +31 -69
  100. data/lib/docyard/templates/assets/js/theme.js +0 -3
  101. data/lib/docyard/templates/assets/logo-dark.svg +8 -2
  102. data/lib/docyard/templates/assets/logo.svg +7 -4
  103. data/lib/docyard/templates/config/docyard.yml.erb +37 -34
  104. data/lib/docyard/templates/errors/404.html.erb +1 -1
  105. data/lib/docyard/templates/errors/500.html.erb +1 -1
  106. data/lib/docyard/templates/layouts/default.html.erb +19 -56
  107. data/lib/docyard/templates/layouts/splash.html.erb +176 -0
  108. data/lib/docyard/templates/partials/_breadcrumbs.html.erb +24 -0
  109. data/lib/docyard/templates/partials/_code_block.html.erb +6 -4
  110. data/lib/docyard/templates/partials/_doc_footer.html.erb +25 -0
  111. data/lib/docyard/templates/partials/_features.html.erb +15 -0
  112. data/lib/docyard/templates/partials/_footer.html.erb +42 -0
  113. data/lib/docyard/templates/partials/_head.html.erb +22 -0
  114. data/lib/docyard/templates/partials/_header.html.erb +49 -0
  115. data/lib/docyard/templates/partials/_heading_anchor.html.erb +3 -1
  116. data/lib/docyard/templates/partials/_hero.html.erb +27 -0
  117. data/lib/docyard/templates/partials/_nav_group.html.erb +25 -11
  118. data/lib/docyard/templates/partials/_nav_leaf.html.erb +1 -1
  119. data/lib/docyard/templates/partials/_nav_menu.html.erb +42 -0
  120. data/lib/docyard/templates/partials/_nav_nested_section.html.erb +11 -0
  121. data/lib/docyard/templates/partials/_nav_section.html.erb +1 -1
  122. data/lib/docyard/templates/partials/_prev_next.html.erb +9 -3
  123. data/lib/docyard/templates/partials/_scripts.html.erb +7 -0
  124. data/lib/docyard/templates/partials/_search_modal.html.erb +41 -0
  125. data/lib/docyard/templates/partials/_search_trigger.html.erb +18 -0
  126. data/lib/docyard/templates/partials/_sidebar.html.erb +21 -4
  127. data/lib/docyard/templates/partials/_tab_bar.html.erb +25 -0
  128. data/lib/docyard/templates/partials/_table_of_contents.html.erb +12 -12
  129. data/lib/docyard/templates/partials/_table_of_contents_toggle.html.erb +1 -3
  130. data/lib/docyard/templates/partials/_tabs.html.erb +2 -2
  131. data/lib/docyard/templates/partials/_theme_toggle.html.erb +2 -11
  132. data/lib/docyard/utils/html_helpers.rb +14 -0
  133. data/lib/docyard/utils/path_resolver.rb +2 -1
  134. data/lib/docyard/utils/url_helpers.rb +20 -0
  135. data/lib/docyard/version.rb +1 -1
  136. data/lib/docyard.rb +22 -15
  137. metadata +89 -50
  138. data/lib/docyard/components/callout_processor.rb +0 -121
  139. data/lib/docyard/components/code_block_diff_preprocessor.rb +0 -104
  140. data/lib/docyard/components/code_block_feature_extractor.rb +0 -113
  141. data/lib/docyard/components/code_block_focus_preprocessor.rb +0 -77
  142. data/lib/docyard/components/code_block_icon_detector.rb +0 -40
  143. data/lib/docyard/components/code_block_line_wrapper.rb +0 -46
  144. data/lib/docyard/components/code_block_options_preprocessor.rb +0 -76
  145. data/lib/docyard/components/code_block_patterns.rb +0 -51
  146. data/lib/docyard/components/code_block_processor.rb +0 -176
  147. data/lib/docyard/components/code_detector.rb +0 -59
  148. data/lib/docyard/components/code_line_parser.rb +0 -80
  149. data/lib/docyard/components/code_snippet_import_preprocessor.rb +0 -125
  150. data/lib/docyard/components/heading_anchor_processor.rb +0 -34
  151. data/lib/docyard/components/icon_detector.rb +0 -57
  152. data/lib/docyard/components/icon_processor.rb +0 -51
  153. data/lib/docyard/components/table_of_contents_processor.rb +0 -64
  154. data/lib/docyard/components/table_wrapper_processor.rb +0 -18
  155. data/lib/docyard/components/tabs_parser.rb +0 -191
  156. data/lib/docyard/components/tabs_processor.rb +0 -44
  157. data/lib/docyard/components/tabs_range_finder.rb +0 -42
  158. data/lib/docyard/rack_application.rb +0 -172
  159. data/lib/docyard/renderer.rb +0 -120
  160. data/lib/docyard/routing/resolution_result.rb +0 -31
  161. data/lib/docyard/sidebar/config_parser.rb +0 -180
  162. data/lib/docyard/sidebar/item.rb +0 -58
  163. data/lib/docyard/sidebar/renderer.rb +0 -137
  164. data/lib/docyard/sidebar/tree_builder.rb +0 -59
  165. data/lib/docyard/sidebar_builder.rb +0 -102
  166. data/lib/docyard/templates/markdown/getting-started/installation.md.erb +0 -77
  167. data/lib/docyard/templates/markdown/guides/configuration.md.erb +0 -202
  168. data/lib/docyard/templates/markdown/guides/markdown-features.md.erb +0 -247
  169. data/lib/docyard/templates/markdown/index.md.erb +0 -82
  170. /data/lib/docyard/{sidebar → navigation/sidebar}/title_extractor.rb +0 -0
  171. /data/lib/docyard/{icons → rendering/icons}/LICENSE.phosphor +0 -0
  172. /data/lib/docyard/{icons → rendering/icons}/file_types.rb +0 -0
  173. /data/lib/docyard/{icons.rb → rendering/icons.rb} +0 -0
  174. /data/lib/docyard/{language_mapping.rb → rendering/language_mapping.rb} +0 -0
  175. /data/lib/docyard/{file_watcher.rb → server/file_watcher.rb} +0 -0
  176. /data/lib/docyard/{errors.rb → utils/errors.rb} +0 -0
  177. /data/lib/docyard/{logging.rb → utils/logging.rb} +0 -0
@@ -1,6 +1,3 @@
1
- /* Docyard Default Theme */
2
-
3
- /* Import order matters - each layer builds on the previous */
4
1
  @import url('reset.css');
5
2
  @import url('variables.css');
6
3
  @import url('typography.css');
@@ -8,3 +5,4 @@
8
5
  @import url('components.css');
9
6
  @import url('markdown.css');
10
7
  @import url('code.css');
8
+ @import url('landing.css');
@@ -1,38 +1,58 @@
1
- /* Markdown/Prose Styles */
2
-
3
- /* Content area for markdown-rendered content */
4
1
  .content {
5
- color: var(--color-text);
2
+ color: oklch(from var(--foreground) l c h / 85%);
3
+ }
4
+
5
+ .content h1,
6
+ .content h2,
7
+ .content h3,
8
+ .content h4,
9
+ .content h5,
10
+ .content h6 {
11
+ color: var(--foreground);
6
12
  }
7
13
 
8
- /* Inline code */
9
14
  .content code:not(.highlight code) {
10
- padding: 0.2em 0.4em;
11
- background-color: var(--color-code-bg);
12
- color: var(--color-primary);
15
+ padding: 0.125rem 0.5rem;
16
+ background-color: oklch(from var(--muted) l c h / 80%);
17
+ color: var(--foreground);
13
18
  border-radius: var(--radius-sm);
14
- font-size: 0.9em;
15
- font-weight: var(--font-weight-medium);
16
- border: 1px solid var(--color-border);
19
+ font-size: 0.875em;
20
+ font-weight: var(--font-medium);
21
+ font-variant-ligatures: none;
17
22
  }
18
23
 
19
- /* Lists */
20
24
  .content ul,
21
25
  .content ol {
22
- margin: var(--space-4) 0;
23
- padding-left: var(--space-6);
26
+ margin: var(--spacing-5) 0;
27
+ padding-left: var(--spacing-6);
28
+ }
29
+
30
+ .content ul {
31
+ list-style-type: disc;
32
+ }
33
+
34
+ .content ul ul {
35
+ list-style-type: circle;
36
+ }
37
+
38
+ .content ul ul ul {
39
+ list-style-type: square;
24
40
  }
25
41
 
26
42
  .content li {
27
- margin: var(--space-2) 0;
43
+ margin: var(--spacing-2-5) 0;
44
+ padding-left: var(--spacing-1);
45
+ }
46
+
47
+ .content li::marker {
48
+ color: var(--muted-foreground);
28
49
  }
29
50
 
30
51
  .content li>ul,
31
52
  .content li>ol {
32
- margin: var(--space-2) 0;
53
+ margin: var(--spacing-2) 0;
33
54
  }
34
55
 
35
- /* Task lists (GitHub Flavored Markdown) */
36
56
  .content ul.task-list {
37
57
  list-style: none;
38
58
  padding-left: 0;
@@ -41,121 +61,121 @@
41
61
  .content ul.task-list li {
42
62
  display: flex;
43
63
  align-items: flex-start;
44
- gap: var(--space-2);
64
+ gap: var(--spacing-2-5);
45
65
  }
46
66
 
47
67
  .content ul.task-list input[type="checkbox"] {
48
- margin-top: 0.25em;
68
+ appearance: none;
69
+ -webkit-appearance: none;
70
+ margin-top: 0.3em;
49
71
  flex-shrink: 0;
72
+ width: 1rem;
73
+ height: 1rem;
74
+ border: 1.5px solid var(--input);
75
+ border-radius: var(--radius-sm);
76
+ background-color: var(--background);
77
+ }
78
+
79
+ .content ul.task-list input[type="checkbox"]:checked {
80
+ background-color: var(--primary);
81
+ border-color: var(--primary);
82
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");
83
+ background-size: 0.75rem;
84
+ background-position: center;
85
+ background-repeat: no-repeat;
50
86
  }
51
87
 
52
- /* Blockquotes */
53
88
  .content blockquote {
54
- margin: var(--space-6) 0;
55
- padding: var(--space-4);
56
- padding-left: var(--space-5);
57
- border-left: 3px solid var(--color-primary);
58
- background-color: var(--color-bg-secondary);
59
- border-radius: 0 var(--radius-md) var(--radius-md) 0;
60
- color: var(--color-text-secondary);
89
+ margin: var(--spacing-6) 0;
90
+ padding-left: var(--spacing-6);
91
+ border-left: 4px solid var(--border);
92
+ color: var(--muted-foreground);
61
93
  }
62
94
 
63
95
  .content blockquote p {
64
- margin: var(--space-2) 0;
96
+ margin: var(--spacing-2) 0;
65
97
  }
66
98
 
67
- /* Horizontal rule */
68
99
  .content hr {
69
- margin: var(--space-8) 0;
100
+ margin: var(--spacing-8) 0;
70
101
  border: none;
71
- border-top: 1px solid var(--color-border);
102
+ border-top: 1px solid var(--hr-color);
72
103
  }
73
104
 
74
- /* Tables */
75
105
  .content .table-wrapper {
76
- margin: var(--space-6) 0;
106
+ position: relative;
107
+ width: 100%;
108
+ margin: var(--spacing-6) 0;
77
109
  overflow-x: auto;
78
- -webkit-overflow-scrolling: touch;
79
- border: 1px solid var(--color-border);
80
- border-radius: var(--radius-lg);
110
+ overscroll-behavior-x: contain;
111
+ border-radius: var(--radius-2xl);
112
+ border: 1px solid var(--table-border);
81
113
  }
82
114
 
83
115
  .content table {
84
116
  width: 100%;
85
117
  border-collapse: collapse;
86
- font-size: var(--font-size-sm);
118
+ caption-bottom: 1em;
119
+ font-size: var(--text-sm);
87
120
  margin: 0;
88
121
  }
89
122
 
90
123
  .content thead {
91
- background-color: var(--color-bg-tertiary);
124
+ background-color: var(--table-header-bg);
92
125
  }
93
126
 
94
127
  .content th {
95
- padding: var(--space-3) var(--space-4);
128
+ height: 2.75rem;
129
+ padding: 0 var(--spacing-4);
96
130
  text-align: left;
97
- font-weight: var(--font-weight-semibold);
98
- color: var(--color-text);
99
- border-bottom: 2px solid var(--color-border);
100
- white-space: nowrap;
131
+ font-weight: var(--font-semibold);
132
+ font-size: var(--text-sm);
133
+ color: var(--foreground);
134
+ vertical-align: middle;
101
135
  }
102
136
 
103
137
  .content td {
104
- padding: var(--space-3) var(--space-4);
105
- border-bottom: 1px solid var(--color-border);
106
- white-space: nowrap;
107
- }
108
-
109
- .content tbody tr {
110
- transition: background-color var(--transition-fast);
138
+ padding: var(--spacing-3) var(--spacing-4);
139
+ vertical-align: middle;
140
+ border-top: 1px solid var(--table-row-border);
111
141
  }
112
142
 
113
143
  .content tbody tr:hover {
114
- background-color: var(--color-bg-secondary);
144
+ background-color: oklch(from var(--muted) l c h / 40%);
115
145
  }
116
146
 
117
- .content tbody tr:last-child td {
118
- border-bottom: none;
119
- }
120
-
121
- /* Images */
122
147
  .content img {
123
148
  max-width: 100%;
124
149
  height: auto;
125
- border-radius: var(--radius-lg);
126
- margin: var(--space-6) 0;
127
- box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1);
150
+ border-radius: var(--radius-xl);
151
+ margin: var(--spacing-4) 0;
152
+ border: 1px solid var(--border);
128
153
  }
129
154
 
130
- /* Links in content */
131
- .content a {
132
- color: var(--color-link);
133
- text-decoration: underline;
134
- text-decoration-color: var(--color-link);
135
- text-decoration-thickness: 1px;
136
- text-underline-offset: 2px;
137
- transition: color var(--transition-fast);
155
+ .content a:not(.heading-anchor):not(.pager-link):not(.breadcrumb-link):not(.site-footer__link):not(.site-footer__attribution) {
156
+ color: var(--foreground);
157
+ font-weight: var(--font-semibold);
158
+ text-decoration: none;
159
+ border-bottom: 1px solid oklch(from var(--primary) l c h / 40%);
160
+ transition: border-bottom var(--transition-fast);
138
161
  }
139
162
 
140
- .content a:hover {
141
- color: var(--color-link-hover);
142
- text-decoration-color: var(--color-link-hover);
163
+ .content a:not(.heading-anchor):not(.pager-link):not(.breadcrumb-link):not(.site-footer__link):not(.site-footer__attribution):hover {
164
+ border-bottom: 2px solid var(--primary);
143
165
  }
144
166
 
145
- /* Heading anchors */
146
167
  .content h2[id],
147
168
  .content h3[id],
148
169
  .content h4[id],
149
170
  .content h5[id],
150
171
  .content h6[id] {
151
- scroll-margin-top: var(--space-8);
172
+ scroll-margin-top: var(--spacing-8);
152
173
  }
153
174
 
154
- /* Improve spacing between prose elements */
155
175
  .content h2+h3,
156
176
  .content h3+h4,
157
177
  .content h4+h5 {
158
- margin-top: var(--space-4);
178
+ margin-top: var(--spacing-4);
159
179
  }
160
180
 
161
181
  .content>*:first-child {
@@ -166,43 +186,41 @@
166
186
  margin-bottom: 0;
167
187
  }
168
188
 
169
- /* Definition lists */
170
189
  .content dl {
171
- margin: var(--space-4) 0;
190
+ margin: var(--spacing-4) 0;
172
191
  }
173
192
 
174
193
  .content dt {
175
- font-weight: var(--font-weight-semibold);
176
- margin-top: var(--space-4);
194
+ font-weight: var(--font-semibold);
195
+ margin-top: var(--spacing-4);
177
196
  }
178
197
 
179
198
  .content dd {
180
- margin-left: var(--space-6);
181
- margin-top: var(--space-2);
199
+ margin-left: var(--spacing-6);
200
+ margin-top: var(--spacing-2);
182
201
  }
183
202
 
184
- /* Keyboard */
185
203
  .content kbd {
186
- display: inline-block;
187
- padding: 0.125em 0.375em;
204
+ display: inline-flex;
205
+ align-items: center;
206
+ justify-content: center;
207
+ padding: 0.25em 0.5em;
188
208
  font-family: var(--font-mono);
189
- font-size: 0.875em;
190
- color: var(--color-text);
191
- background-color: var(--color-bg-secondary);
192
- border: 1px solid var(--color-border);
193
- border-radius: var(--radius-sm);
194
- box-shadow: 0 1px 0 var(--color-border);
209
+ font-size: 0.75em;
210
+ font-weight: var(--font-medium);
211
+ color: var(--muted-foreground);
212
+ background-color: var(--muted);
213
+ border: none;
214
+ border-radius: var(--radius-md);
195
215
  }
196
216
 
197
- /* Mark/Highlight */
198
217
  .content mark {
199
- background-color: var(--color-warning-bg);
200
- color: var(--color-text);
218
+ background-color: var(--warning-background);
219
+ color: var(--foreground);
201
220
  padding: 0.125em 0.25em;
202
221
  border-radius: var(--radius-sm);
203
222
  }
204
223
 
205
- /* Abbreviations */
206
224
  .content abbr {
207
225
  text-decoration: underline dotted;
208
226
  cursor: help;
@@ -1,6 +1,3 @@
1
- /* Modern CSS Reset */
2
- /* Based on https://piccalil.li/blog/a-more-modern-css-reset/ */
3
-
4
1
  *,
5
2
  *::before,
6
3
  *::after {
@@ -1,95 +1,97 @@
1
- /* Base Typography */
2
1
  body {
3
2
  font-family: var(--font-sans);
4
- font-size: var(--font-size-base);
5
- line-height: var(--line-height-normal);
6
- color: var(--color-text);
7
- background-color: var(--color-bg);
3
+ font-size: var(--text-base);
4
+ line-height: 1.6;
5
+ color: var(--foreground);
6
+ background-color: var(--background);
8
7
  -webkit-font-smoothing: antialiased;
9
8
  -moz-osx-font-smoothing: grayscale;
9
+ font-feature-settings: "rlig" 1, "calt" 1;
10
10
  }
11
11
 
12
- /* Headings */
13
12
  h1, h2, h3, h4, h5, h6 {
14
- font-weight: var(--font-weight-semibold);
15
- line-height: var(--line-height-tight);
16
- color: var(--color-text);
13
+ font-weight: var(--font-semibold);
14
+ line-height: var(--leading-tight);
15
+ color: var(--foreground);
17
16
  }
18
17
 
19
18
  h1 {
20
- font-size: var(--font-size-4xl);
21
- margin-bottom: var(--space-6);
19
+ font-size: var(--text-4xl);
20
+ font-weight: var(--font-semibold);
21
+ letter-spacing: -0.035em;
22
+ margin-bottom: var(--spacing-4);
22
23
  }
23
24
 
24
25
  h2 {
25
- font-size: var(--font-size-3xl);
26
- margin-top: var(--space-12);
27
- margin-bottom: var(--space-4);
26
+ font-size: var(--text-3xl);
27
+ letter-spacing: -0.025em;
28
+ margin-top: var(--spacing-12);
29
+ margin-bottom: var(--spacing-5);
28
30
  }
29
31
 
30
32
  h3 {
31
- font-size: var(--font-size-2xl);
32
- margin-top: var(--space-10);
33
- margin-bottom: var(--space-3);
33
+ font-size: var(--text-2xl);
34
+ letter-spacing: -0.02em;
35
+ margin-top: var(--spacing-10);
36
+ margin-bottom: var(--spacing-4);
34
37
  }
35
38
 
36
39
  h4 {
37
- font-size: var(--font-size-xl);
38
- margin-top: var(--space-8);
39
- margin-bottom: var(--space-3);
40
+ font-size: var(--text-xl);
41
+ letter-spacing: -0.015em;
42
+ font-weight: var(--font-medium);
43
+ margin-top: var(--spacing-6);
44
+ margin-bottom: var(--spacing-2);
40
45
  }
41
46
 
42
47
  h5 {
43
- font-size: var(--font-size-lg);
44
- margin-top: var(--space-6);
45
- margin-bottom: var(--space-2);
48
+ font-size: var(--text-lg);
49
+ letter-spacing: -0.01em;
50
+ font-weight: var(--font-medium);
51
+ margin-top: var(--spacing-5);
52
+ margin-bottom: var(--spacing-2);
46
53
  }
47
54
 
48
55
  h6 {
49
- font-size: var(--font-size-base);
50
- margin-top: var(--space-6);
51
- margin-bottom: var(--space-2);
52
- font-weight: var(--font-weight-semibold);
56
+ font-size: var(--text-base);
57
+ letter-spacing: -0.01em;
58
+ font-weight: var(--font-medium);
59
+ margin-top: var(--spacing-4);
60
+ margin-bottom: var(--spacing-2);
53
61
  }
54
62
 
55
- /* Paragraphs */
56
63
  p {
57
- margin-bottom: var(--space-4);
64
+ margin-bottom: var(--spacing-5);
58
65
  }
59
66
 
60
- /* Links */
61
67
  a {
62
- color: var(--color-link);
68
+ color: var(--primary);
63
69
  text-decoration: none;
64
70
  transition: color var(--transition-fast);
65
71
  }
66
72
 
67
73
  a:hover {
68
- color: var(--color-link-hover);
69
- text-decoration: underline;
74
+ color: var(--primary);
70
75
  }
71
76
 
72
77
  a:focus-visible {
73
- outline: 2px solid var(--color-primary);
74
- outline-offset: 2px;
78
+ outline: none;
75
79
  border-radius: var(--radius-sm);
80
+ box-shadow: 0 0 0 var(--ring-width) oklch(from var(--ring) l c h / 50%);
76
81
  }
77
82
 
78
- /* Code */
79
83
  code {
80
84
  font-family: var(--font-mono);
81
85
  font-size: 0.9em;
82
86
  }
83
87
 
84
- /* Small text */
85
88
  small {
86
- font-size: var(--font-size-sm);
87
- color: var(--color-text-secondary);
89
+ font-size: var(--text-sm);
90
+ color: var(--muted-foreground);
88
91
  }
89
92
 
90
- /* Strong and emphasis */
91
93
  strong, b {
92
- font-weight: var(--font-weight-semibold);
94
+ font-weight: var(--font-semibold);
93
95
  }
94
96
 
95
97
  em, i {