docyard 0.7.0 → 0.9.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 (155) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -1
  3. data/CHANGELOG.md +43 -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 +85 -12
  8. data/lib/docyard/builder.rb +6 -6
  9. data/lib/docyard/components/aliases.rb +12 -0
  10. data/lib/docyard/components/processors/abbreviation_processor.rb +72 -0
  11. data/lib/docyard/components/processors/accordion_processor.rb +81 -0
  12. data/lib/docyard/components/processors/badge_processor.rb +72 -0
  13. data/lib/docyard/components/processors/callout_processor.rb +8 -2
  14. data/lib/docyard/components/processors/cards_processor.rb +100 -0
  15. data/lib/docyard/components/processors/code_block_options_preprocessor.rb +23 -2
  16. data/lib/docyard/components/processors/code_block_processor.rb +6 -0
  17. data/lib/docyard/components/processors/code_group_processor.rb +198 -0
  18. data/lib/docyard/components/processors/code_snippet_import_preprocessor.rb +6 -1
  19. data/lib/docyard/components/processors/custom_anchor_processor.rb +42 -0
  20. data/lib/docyard/components/processors/file_tree_processor.rb +151 -0
  21. data/lib/docyard/components/processors/image_caption_processor.rb +96 -0
  22. data/lib/docyard/components/processors/include_processor.rb +86 -0
  23. data/lib/docyard/components/processors/steps_processor.rb +89 -0
  24. data/lib/docyard/components/processors/tabs_processor.rb +9 -1
  25. data/lib/docyard/components/processors/tooltip_processor.rb +57 -0
  26. data/lib/docyard/components/processors/video_embed_processor.rb +196 -0
  27. data/lib/docyard/components/support/code_group/html_builder.rb +122 -0
  28. data/lib/docyard/components/support/markdown_code_block_helper.rb +56 -0
  29. data/lib/docyard/config/branding_resolver.rb +121 -17
  30. data/lib/docyard/config/constants.rb +6 -4
  31. data/lib/docyard/config/logo_detector.rb +39 -0
  32. data/lib/docyard/config/validator.rb +122 -99
  33. data/lib/docyard/config.rb +40 -42
  34. data/lib/docyard/initializer.rb +15 -76
  35. data/lib/docyard/navigation/breadcrumb_builder.rb +133 -0
  36. data/lib/docyard/navigation/prev_next_builder.rb +4 -1
  37. data/lib/docyard/navigation/sidebar/children_discoverer.rb +51 -0
  38. data/lib/docyard/navigation/sidebar/config_parser.rb +136 -108
  39. data/lib/docyard/navigation/sidebar/file_resolver.rb +90 -0
  40. data/lib/docyard/navigation/sidebar/file_system_scanner.rb +2 -1
  41. data/lib/docyard/navigation/sidebar/item.rb +50 -7
  42. data/lib/docyard/navigation/sidebar/local_config_loader.rb +51 -0
  43. data/lib/docyard/navigation/sidebar/metadata_extractor.rb +71 -0
  44. data/lib/docyard/navigation/sidebar/metadata_reader.rb +51 -0
  45. data/lib/docyard/navigation/sidebar/path_prefixer.rb +34 -0
  46. data/lib/docyard/navigation/sidebar/renderer.rb +60 -38
  47. data/lib/docyard/navigation/sidebar/sorter.rb +21 -0
  48. data/lib/docyard/navigation/sidebar/tree_builder.rb +100 -26
  49. data/lib/docyard/navigation/sidebar/tree_filter.rb +55 -0
  50. data/lib/docyard/navigation/sidebar_builder.rb +105 -36
  51. data/lib/docyard/rendering/icon_helpers.rb +13 -0
  52. data/lib/docyard/rendering/icons/phosphor.rb +26 -1
  53. data/lib/docyard/rendering/markdown.rb +29 -1
  54. data/lib/docyard/rendering/renderer.rb +75 -34
  55. data/lib/docyard/rendering/template_resolver.rb +172 -0
  56. data/lib/docyard/routing/fallback_resolver.rb +92 -0
  57. data/lib/docyard/search/build_indexer.rb +1 -1
  58. data/lib/docyard/search/dev_indexer.rb +51 -6
  59. data/lib/docyard/search/pagefind_support.rb +2 -0
  60. data/lib/docyard/server/asset_handler.rb +25 -19
  61. data/lib/docyard/server/pagefind_handler.rb +63 -0
  62. data/lib/docyard/server/preview_server.rb +1 -1
  63. data/lib/docyard/server/rack_application.rb +81 -64
  64. data/lib/docyard/templates/assets/css/code.css +18 -51
  65. data/lib/docyard/templates/assets/css/components/abbreviation.css +86 -0
  66. data/lib/docyard/templates/assets/css/components/accordion.css +138 -0
  67. data/lib/docyard/templates/assets/css/components/badges.css +47 -0
  68. data/lib/docyard/templates/assets/css/components/banner.css +202 -0
  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/cards.css +100 -0
  72. data/lib/docyard/templates/assets/css/components/code-block.css +190 -282
  73. data/lib/docyard/templates/assets/css/components/code-group.css +281 -0
  74. data/lib/docyard/templates/assets/css/components/figure.css +22 -0
  75. data/lib/docyard/templates/assets/css/components/file-tree.css +124 -0
  76. data/lib/docyard/templates/assets/css/components/heading-anchor.css +36 -15
  77. data/lib/docyard/templates/assets/css/components/icon.css +0 -1
  78. data/lib/docyard/templates/assets/css/components/lightbox.css +65 -0
  79. data/lib/docyard/templates/assets/css/components/logo.css +0 -2
  80. data/lib/docyard/templates/assets/css/components/nav-menu.css +237 -0
  81. data/lib/docyard/templates/assets/css/components/navigation.css +193 -167
  82. data/lib/docyard/templates/assets/css/components/prev-next.css +68 -48
  83. data/lib/docyard/templates/assets/css/components/search.css +186 -174
  84. data/lib/docyard/templates/assets/css/components/steps.css +122 -0
  85. data/lib/docyard/templates/assets/css/components/tab-bar.css +163 -0
  86. data/lib/docyard/templates/assets/css/components/table-of-contents.css +127 -114
  87. data/lib/docyard/templates/assets/css/components/tabs.css +119 -160
  88. data/lib/docyard/templates/assets/css/components/theme-toggle.css +48 -44
  89. data/lib/docyard/templates/assets/css/components/tooltip.css +113 -0
  90. data/lib/docyard/templates/assets/css/components/video.css +41 -0
  91. data/lib/docyard/templates/assets/css/landing.css +815 -0
  92. data/lib/docyard/templates/assets/css/layout.css +489 -87
  93. data/lib/docyard/templates/assets/css/main.css +1 -3
  94. data/lib/docyard/templates/assets/css/markdown.css +113 -93
  95. data/lib/docyard/templates/assets/css/reset.css +0 -3
  96. data/lib/docyard/templates/assets/css/typography.css +43 -41
  97. data/lib/docyard/templates/assets/css/variables.css +268 -208
  98. data/lib/docyard/templates/assets/favicon.svg +7 -8
  99. data/lib/docyard/templates/assets/fonts/Inter-Variable.ttf +0 -0
  100. data/lib/docyard/templates/assets/js/components/abbreviation.js +85 -0
  101. data/lib/docyard/templates/assets/js/components/banner.js +81 -0
  102. data/lib/docyard/templates/assets/js/components/code-block.js +24 -42
  103. data/lib/docyard/templates/assets/js/components/code-group.js +283 -0
  104. data/lib/docyard/templates/assets/js/components/file-tree.js +39 -0
  105. data/lib/docyard/templates/assets/js/components/heading-anchor.js +26 -24
  106. data/lib/docyard/templates/assets/js/components/lightbox.js +72 -0
  107. data/lib/docyard/templates/assets/js/components/navigation.js +181 -70
  108. data/lib/docyard/templates/assets/js/components/search.js +0 -75
  109. data/lib/docyard/templates/assets/js/components/sidebar-toggle.js +29 -0
  110. data/lib/docyard/templates/assets/js/components/tab-navigation.js +145 -0
  111. data/lib/docyard/templates/assets/js/components/table-of-contents.js +153 -66
  112. data/lib/docyard/templates/assets/js/components/tabs.js +31 -69
  113. data/lib/docyard/templates/assets/js/components/tooltip.js +118 -0
  114. data/lib/docyard/templates/assets/js/theme.js +0 -3
  115. data/lib/docyard/templates/assets/logo-dark.svg +8 -2
  116. data/lib/docyard/templates/assets/logo.svg +7 -4
  117. data/lib/docyard/templates/config/docyard.yml.erb +37 -34
  118. data/lib/docyard/templates/errors/404.html.erb +1 -1
  119. data/lib/docyard/templates/errors/500.html.erb +1 -1
  120. data/lib/docyard/templates/layouts/default.html.erb +19 -67
  121. data/lib/docyard/templates/layouts/splash.html.erb +177 -0
  122. data/lib/docyard/templates/partials/_accordion.html.erb +9 -0
  123. data/lib/docyard/templates/partials/_banner.html.erb +27 -0
  124. data/lib/docyard/templates/partials/_breadcrumbs.html.erb +24 -0
  125. data/lib/docyard/templates/partials/_card.html.erb +23 -0
  126. data/lib/docyard/templates/partials/_code_block.html.erb +5 -3
  127. data/lib/docyard/templates/partials/_doc_footer.html.erb +25 -0
  128. data/lib/docyard/templates/partials/_features.html.erb +15 -0
  129. data/lib/docyard/templates/partials/_footer.html.erb +42 -0
  130. data/lib/docyard/templates/partials/_head.html.erb +22 -0
  131. data/lib/docyard/templates/partials/_header.html.erb +49 -0
  132. data/lib/docyard/templates/partials/_heading_anchor.html.erb +3 -1
  133. data/lib/docyard/templates/partials/_hero.html.erb +27 -0
  134. data/lib/docyard/templates/partials/_nav_group.html.erb +31 -11
  135. data/lib/docyard/templates/partials/_nav_leaf.html.erb +4 -1
  136. data/lib/docyard/templates/partials/_nav_menu.html.erb +42 -0
  137. data/lib/docyard/templates/partials/_nav_nested_section.html.erb +11 -0
  138. data/lib/docyard/templates/partials/_nav_section.html.erb +1 -1
  139. data/lib/docyard/templates/partials/_prev_next.html.erb +8 -2
  140. data/lib/docyard/templates/partials/_scripts.html.erb +7 -0
  141. data/lib/docyard/templates/partials/_search_modal.html.erb +2 -6
  142. data/lib/docyard/templates/partials/_search_trigger.html.erb +2 -6
  143. data/lib/docyard/templates/partials/_sidebar.html.erb +21 -4
  144. data/lib/docyard/templates/partials/_step.html.erb +14 -0
  145. data/lib/docyard/templates/partials/_tab_bar.html.erb +25 -0
  146. data/lib/docyard/templates/partials/_table_of_contents.html.erb +12 -12
  147. data/lib/docyard/templates/partials/_table_of_contents_toggle.html.erb +1 -3
  148. data/lib/docyard/templates/partials/_tabs.html.erb +2 -2
  149. data/lib/docyard/templates/partials/_theme_toggle.html.erb +2 -11
  150. data/lib/docyard/version.rb +1 -1
  151. metadata +70 -5
  152. data/lib/docyard/templates/markdown/getting-started/installation.md.erb +0 -77
  153. data/lib/docyard/templates/markdown/guides/configuration.md.erb +0 -202
  154. data/lib/docyard/templates/markdown/guides/markdown-features.md.erb +0 -247
  155. data/lib/docyard/templates/markdown/index.md.erb +0 -82
@@ -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,123 @@
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 {
148
+ display: block;
123
149
  max-width: 100%;
124
150
  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);
151
+ border-radius: var(--radius-xl);
152
+ margin: var(--spacing-4) auto;
153
+ border: 1px solid var(--border);
154
+ cursor: zoom-in;
128
155
  }
129
156
 
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);
157
+ .content a:not(.heading-anchor):not(.pager-link):not(.breadcrumb-link):not(.site-footer__link):not(.site-footer__attribution):not(.docyard-card):not(.docyard-announcement__link):not(.docyard-announcement__button) {
158
+ color: var(--foreground);
159
+ font-weight: var(--font-semibold);
160
+ text-decoration: none;
161
+ border-bottom: 1px solid oklch(from var(--primary) l c h / 40%);
162
+ transition: border-bottom var(--transition-fast);
138
163
  }
139
164
 
140
- .content a:hover {
141
- color: var(--color-link-hover);
142
- text-decoration-color: var(--color-link-hover);
165
+ .content a:not(.heading-anchor):not(.pager-link):not(.breadcrumb-link):not(.site-footer__link):not(.site-footer__attribution):not(.docyard-card):not(.docyard-announcement__link):not(.docyard-announcement__button):hover {
166
+ border-bottom: 2px solid var(--primary);
143
167
  }
144
168
 
145
- /* Heading anchors */
146
169
  .content h2[id],
147
170
  .content h3[id],
148
171
  .content h4[id],
149
172
  .content h5[id],
150
173
  .content h6[id] {
151
- scroll-margin-top: var(--space-8);
174
+ scroll-margin-top: var(--spacing-8);
152
175
  }
153
176
 
154
- /* Improve spacing between prose elements */
155
177
  .content h2+h3,
156
178
  .content h3+h4,
157
179
  .content h4+h5 {
158
- margin-top: var(--space-4);
180
+ margin-top: var(--spacing-4);
159
181
  }
160
182
 
161
183
  .content>*:first-child {
@@ -166,43 +188,41 @@
166
188
  margin-bottom: 0;
167
189
  }
168
190
 
169
- /* Definition lists */
170
191
  .content dl {
171
- margin: var(--space-4) 0;
192
+ margin: var(--spacing-4) 0;
172
193
  }
173
194
 
174
195
  .content dt {
175
- font-weight: var(--font-weight-semibold);
176
- margin-top: var(--space-4);
196
+ font-weight: var(--font-semibold);
197
+ margin-top: var(--spacing-4);
177
198
  }
178
199
 
179
200
  .content dd {
180
- margin-left: var(--space-6);
181
- margin-top: var(--space-2);
201
+ margin-left: var(--spacing-6);
202
+ margin-top: var(--spacing-2);
182
203
  }
183
204
 
184
- /* Keyboard */
185
205
  .content kbd {
186
- display: inline-block;
187
- padding: 0.125em 0.375em;
206
+ display: inline-flex;
207
+ align-items: center;
208
+ justify-content: center;
209
+ padding: 0.25em 0.5em;
188
210
  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);
211
+ font-size: 0.75em;
212
+ font-weight: var(--font-medium);
213
+ color: var(--muted-foreground);
214
+ background-color: var(--muted);
215
+ border: none;
216
+ border-radius: var(--radius-md);
195
217
  }
196
218
 
197
- /* Mark/Highlight */
198
219
  .content mark {
199
- background-color: var(--color-warning-bg);
200
- color: var(--color-text);
220
+ background-color: var(--warning-background);
221
+ color: var(--foreground);
201
222
  padding: 0.125em 0.25em;
202
223
  border-radius: var(--radius-sm);
203
224
  }
204
225
 
205
- /* Abbreviations */
206
226
  .content abbr {
207
227
  text-decoration: underline dotted;
208
228
  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 {