@agenetix/docs 1.0.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 (189) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +282 -0
  3. package/dist/components/BlogCard.d.ts +7 -0
  4. package/dist/components/BlogCard.d.ts.map +1 -0
  5. package/dist/components/BlogCard.js +10 -0
  6. package/dist/components/BlogCard.js.map +1 -0
  7. package/dist/components/BlogCategories.d.ts +8 -0
  8. package/dist/components/BlogCategories.d.ts.map +1 -0
  9. package/dist/components/BlogCategories.js +23 -0
  10. package/dist/components/BlogCategories.js.map +1 -0
  11. package/dist/components/BlogDirectoryPage.d.ts +10 -0
  12. package/dist/components/BlogDirectoryPage.d.ts.map +1 -0
  13. package/dist/components/BlogDirectoryPage.js +9 -0
  14. package/dist/components/BlogDirectoryPage.js.map +1 -0
  15. package/dist/components/BlogPagination.d.ts +10 -0
  16. package/dist/components/BlogPagination.d.ts.map +1 -0
  17. package/dist/components/BlogPagination.js +23 -0
  18. package/dist/components/BlogPagination.js.map +1 -0
  19. package/dist/components/BlogPostPage.d.ts +11 -0
  20. package/dist/components/BlogPostPage.d.ts.map +1 -0
  21. package/dist/components/BlogPostPage.js +17 -0
  22. package/dist/components/BlogPostPage.js.map +1 -0
  23. package/dist/components/BlogSearch.d.ts +7 -0
  24. package/dist/components/BlogSearch.d.ts.map +1 -0
  25. package/dist/components/BlogSearch.js +5 -0
  26. package/dist/components/BlogSearch.js.map +1 -0
  27. package/dist/components/CopyPageButton.d.ts +4 -0
  28. package/dist/components/CopyPageButton.d.ts.map +1 -0
  29. package/dist/components/CopyPageButton.js +71 -0
  30. package/dist/components/CopyPageButton.js.map +1 -0
  31. package/dist/components/DocsHomePage.d.ts +12 -0
  32. package/dist/components/DocsHomePage.d.ts.map +1 -0
  33. package/dist/components/DocsHomePage.js +45 -0
  34. package/dist/components/DocsHomePage.js.map +1 -0
  35. package/dist/components/DocsLayout.d.ts +3 -0
  36. package/dist/components/DocsLayout.d.ts.map +1 -0
  37. package/dist/components/DocsLayout.js +6 -0
  38. package/dist/components/DocsLayout.js.map +1 -0
  39. package/dist/components/DocsPage.d.ts +14 -0
  40. package/dist/components/DocsPage.d.ts.map +1 -0
  41. package/dist/components/DocsPage.js +16 -0
  42. package/dist/components/DocsPage.js.map +1 -0
  43. package/dist/components/DocsPageMobileToc.d.ts +6 -0
  44. package/dist/components/DocsPageMobileToc.d.ts.map +1 -0
  45. package/dist/components/DocsPageMobileToc.js +15 -0
  46. package/dist/components/DocsPageMobileToc.js.map +1 -0
  47. package/dist/components/DocsSearch.d.ts +8 -0
  48. package/dist/components/DocsSearch.d.ts.map +1 -0
  49. package/dist/components/DocsSearch.js +44 -0
  50. package/dist/components/DocsSearch.js.map +1 -0
  51. package/dist/components/DocsSearchCommand.d.ts +9 -0
  52. package/dist/components/DocsSearchCommand.d.ts.map +1 -0
  53. package/dist/components/DocsSearchCommand.js +43 -0
  54. package/dist/components/DocsSearchCommand.js.map +1 -0
  55. package/dist/components/DocsSearchPalette.d.ts +11 -0
  56. package/dist/components/DocsSearchPalette.d.ts.map +1 -0
  57. package/dist/components/DocsSearchPalette.js +28 -0
  58. package/dist/components/DocsSearchPalette.js.map +1 -0
  59. package/dist/components/DocsSearchResults.d.ts +13 -0
  60. package/dist/components/DocsSearchResults.d.ts.map +1 -0
  61. package/dist/components/DocsSearchResults.js +26 -0
  62. package/dist/components/DocsSearchResults.js.map +1 -0
  63. package/dist/components/DocsSearchTrigger.d.ts +6 -0
  64. package/dist/components/DocsSearchTrigger.d.ts.map +1 -0
  65. package/dist/components/DocsSearchTrigger.js +7 -0
  66. package/dist/components/DocsSearchTrigger.js.map +1 -0
  67. package/dist/components/DocsShell.d.ts +3 -0
  68. package/dist/components/DocsShell.d.ts.map +1 -0
  69. package/dist/components/DocsShell.js +98 -0
  70. package/dist/components/DocsShell.js.map +1 -0
  71. package/dist/components/DocsSidebar.d.ts +10 -0
  72. package/dist/components/DocsSidebar.d.ts.map +1 -0
  73. package/dist/components/DocsSidebar.js +48 -0
  74. package/dist/components/DocsSidebar.js.map +1 -0
  75. package/dist/components/DocsToc.d.ts +6 -0
  76. package/dist/components/DocsToc.d.ts.map +1 -0
  77. package/dist/components/DocsToc.js +42 -0
  78. package/dist/components/DocsToc.js.map +1 -0
  79. package/dist/components/HeadingLinks.d.ts +2 -0
  80. package/dist/components/HeadingLinks.d.ts.map +1 -0
  81. package/dist/components/HeadingLinks.js +54 -0
  82. package/dist/components/HeadingLinks.js.map +1 -0
  83. package/dist/components/MobileDocsChrome.d.ts +9 -0
  84. package/dist/components/MobileDocsChrome.d.ts.map +1 -0
  85. package/dist/components/MobileDocsChrome.js +6 -0
  86. package/dist/components/MobileDocsChrome.js.map +1 -0
  87. package/dist/components/StickyAside.d.ts +7 -0
  88. package/dist/components/StickyAside.d.ts.map +1 -0
  89. package/dist/components/StickyAside.js +5 -0
  90. package/dist/components/StickyAside.js.map +1 -0
  91. package/dist/components/blog-utils.d.ts +8 -0
  92. package/dist/components/blog-utils.d.ts.map +1 -0
  93. package/dist/components/blog-utils.js +28 -0
  94. package/dist/components/blog-utils.js.map +1 -0
  95. package/dist/components/mdx/Accordion.d.ts +13 -0
  96. package/dist/components/mdx/Accordion.d.ts.map +1 -0
  97. package/dist/components/mdx/Accordion.js +8 -0
  98. package/dist/components/mdx/Accordion.js.map +1 -0
  99. package/dist/components/mdx/Banner.d.ts +12 -0
  100. package/dist/components/mdx/Banner.d.ts.map +1 -0
  101. package/dist/components/mdx/Banner.js +10 -0
  102. package/dist/components/mdx/Banner.js.map +1 -0
  103. package/dist/components/mdx/Callout.d.ts +9 -0
  104. package/dist/components/mdx/Callout.d.ts.map +1 -0
  105. package/dist/components/mdx/Callout.js +11 -0
  106. package/dist/components/mdx/Callout.js.map +1 -0
  107. package/dist/components/mdx/Card.d.ts +16 -0
  108. package/dist/components/mdx/Card.d.ts.map +1 -0
  109. package/dist/components/mdx/Card.js +13 -0
  110. package/dist/components/mdx/Card.js.map +1 -0
  111. package/dist/components/mdx/CodeBlock.d.ts +11 -0
  112. package/dist/components/mdx/CodeBlock.d.ts.map +1 -0
  113. package/dist/components/mdx/CodeBlock.js +61 -0
  114. package/dist/components/mdx/CodeBlock.js.map +1 -0
  115. package/dist/components/mdx/CopyCodeButton.d.ts +4 -0
  116. package/dist/components/mdx/CopyCodeButton.d.ts.map +1 -0
  117. package/dist/components/mdx/CopyCodeButton.js +18 -0
  118. package/dist/components/mdx/CopyCodeButton.js.map +1 -0
  119. package/dist/components/mdx/Files.d.ts +19 -0
  120. package/dist/components/mdx/Files.d.ts.map +1 -0
  121. package/dist/components/mdx/Files.js +11 -0
  122. package/dist/components/mdx/Files.js.map +1 -0
  123. package/dist/components/mdx/InlineToc.d.ts +12 -0
  124. package/dist/components/mdx/InlineToc.d.ts.map +1 -0
  125. package/dist/components/mdx/InlineToc.js +26 -0
  126. package/dist/components/mdx/InlineToc.js.map +1 -0
  127. package/dist/components/mdx/Mermaid.d.ts +9 -0
  128. package/dist/components/mdx/Mermaid.d.ts.map +1 -0
  129. package/dist/components/mdx/Mermaid.js +63 -0
  130. package/dist/components/mdx/Mermaid.js.map +1 -0
  131. package/dist/components/mdx/Steps.d.ts +12 -0
  132. package/dist/components/mdx/Steps.d.ts.map +1 -0
  133. package/dist/components/mdx/Steps.js +8 -0
  134. package/dist/components/mdx/Steps.js.map +1 -0
  135. package/dist/components/mdx/Tabs.d.ts +22 -0
  136. package/dist/components/mdx/Tabs.d.ts.map +1 -0
  137. package/dist/components/mdx/Tabs.js +27 -0
  138. package/dist/components/mdx/Tabs.js.map +1 -0
  139. package/dist/components/mdx/index.d.ts +11 -0
  140. package/dist/components/mdx/index.d.ts.map +1 -0
  141. package/dist/components/mdx/index.js +11 -0
  142. package/dist/components/mdx/index.js.map +1 -0
  143. package/dist/components/mdx/lazy.d.ts +11 -0
  144. package/dist/components/mdx/lazy.d.ts.map +1 -0
  145. package/dist/components/mdx/lazy.js +9 -0
  146. package/dist/components/mdx/lazy.js.map +1 -0
  147. package/dist/components/useDocsSearch.d.ts +27 -0
  148. package/dist/components/useDocsSearch.d.ts.map +1 -0
  149. package/dist/components/useDocsSearch.js +119 -0
  150. package/dist/components/useDocsSearch.js.map +1 -0
  151. package/dist/index.d.ts +33 -0
  152. package/dist/index.d.ts.map +1 -0
  153. package/dist/index.js +33 -0
  154. package/dist/index.js.map +1 -0
  155. package/dist/mdx.d.ts +14 -0
  156. package/dist/mdx.d.ts.map +1 -0
  157. package/dist/mdx.js +107 -0
  158. package/dist/mdx.js.map +1 -0
  159. package/dist/server/blog.d.ts +3 -0
  160. package/dist/server/blog.d.ts.map +1 -0
  161. package/dist/server/blog.js +552 -0
  162. package/dist/server/blog.js.map +1 -0
  163. package/dist/server/docs.d.ts +5 -0
  164. package/dist/server/docs.d.ts.map +1 -0
  165. package/dist/server/docs.js +389 -0
  166. package/dist/server/docs.js.map +1 -0
  167. package/dist/server/search.d.ts +3 -0
  168. package/dist/server/search.d.ts.map +1 -0
  169. package/dist/server/search.js +216 -0
  170. package/dist/server/search.js.map +1 -0
  171. package/dist/styles.css +3337 -0
  172. package/dist/theme-provider.d.ts +19 -0
  173. package/dist/theme-provider.d.ts.map +1 -0
  174. package/dist/theme-provider.js +54 -0
  175. package/dist/theme-provider.js.map +1 -0
  176. package/dist/theme.d.ts +11 -0
  177. package/dist/theme.d.ts.map +1 -0
  178. package/dist/theme.js +602 -0
  179. package/dist/theme.js.map +1 -0
  180. package/dist/types.d.ts +379 -0
  181. package/dist/types.d.ts.map +1 -0
  182. package/dist/types.js +2 -0
  183. package/dist/types.js.map +1 -0
  184. package/dist/utils.d.ts +34 -0
  185. package/dist/utils.d.ts.map +1 -0
  186. package/dist/utils.js +85 -0
  187. package/dist/utils.js.map +1 -0
  188. package/package.json +133 -0
  189. package/styles.css +1 -0
@@ -0,0 +1,3337 @@
1
+ /* ============================================
2
+ EmcyDocs - shadcn-compatible styles
3
+ ============================================ */
4
+
5
+ /* Theme Variables */
6
+ :root {
7
+ --radius: 0.625rem;
8
+
9
+ /* Light mode (default) — aurora cyan + violet dev palette */
10
+ --emcydocs-background: 222 32% 98%;
11
+ --emcydocs-foreground: 230 28% 12%;
12
+ --emcydocs-card: 222 40% 100%;
13
+ --emcydocs-card-foreground: 230 28% 12%;
14
+ --emcydocs-popover: 222 40% 100%;
15
+ --emcydocs-popover-foreground: 230 28% 12%;
16
+ --emcydocs-primary: 178 86% 38%;
17
+ --emcydocs-primary-foreground: 0 0% 100%;
18
+ --emcydocs-secondary: 225 30% 96%;
19
+ --emcydocs-secondary-foreground: 230 28% 12%;
20
+ --emcydocs-muted: 225 24% 95%;
21
+ --emcydocs-muted-foreground: 230 12% 44%;
22
+ --emcydocs-accent: 178 88% 93%;
23
+ --emcydocs-accent-foreground: 178 72% 22%;
24
+ --emcydocs-destructive: 0 84.2% 60.2%;
25
+ --emcydocs-border: 225 22% 86%;
26
+ --emcydocs-input: 225 22% 84%;
27
+ --emcydocs-ring: 178 92% 44%;
28
+ --emcydocs-glow: 178 100% 50%;
29
+ --emcydocs-glow-secondary: 265 90% 62%;
30
+
31
+ /* Semantic colors */
32
+ --emcydocs-info: 217 90% 56%;
33
+ --emcydocs-info-soft: 217 92% 92% / 0.65;
34
+ --emcydocs-warning: 38 92% 50%;
35
+ --emcydocs-warning-soft: 38 94% 88% / 0.72;
36
+ --emcydocs-error: 0 82% 58%;
37
+ --emcydocs-error-soft: 0 86% 92% / 0.68;
38
+ --emcydocs-success: 145 72% 36%;
39
+ --emcydocs-success-soft: 145 74% 90% / 0.64;
40
+
41
+ /* Layout */
42
+ --emcydocs-header-height: 3.5rem;
43
+ --emcydocs-layout-width: 1400px;
44
+ --emcydocs-content-width: 48rem;
45
+ --emcydocs-sidebar-width: 16rem;
46
+ --emcydocs-toc-width: 14rem;
47
+
48
+ /* Spacing */
49
+ --emcydocs-page-padding: 1.5rem;
50
+ --emcydocs-sidebar-padding: 1rem;
51
+ --emcydocs-section-gap: 1.25rem;
52
+ --emcydocs-nav-gap: 0.125rem;
53
+ --emcydocs-card-padding: 1rem;
54
+ --emcydocs-control-padding-y: 0.5rem;
55
+ --emcydocs-control-padding-x: 0.75rem;
56
+ --emcydocs-toc-padding-y: 0.375rem;
57
+ --emcydocs-toc-padding-x: 0.75rem;
58
+ --emcydocs-page-grid-gap: 2rem;
59
+
60
+ /* Theme surface details */
61
+ --emcydocs-surface: 220 28% 100%;
62
+ --emcydocs-bg: 220 20% 99%;
63
+ --emcydocs-border-strong: 225 21% 80%;
64
+ --emcydocs-accent-soft: 270 96% 94% / 0.56;
65
+ --emcydocs-shadow-sm: 0 1px 2px hsl(230 28% 12% / 0.04);
66
+ --emcydocs-shadow-lg: 0 24px 80px hsl(178 60% 30% / 0.12), 0 8px 24px hsl(230 28% 12% / 0.06);
67
+ --emcydocs-shadow-glow: 0 0 0 1px hsl(var(--emcydocs-primary) / 0.15), 0 0 40px hsl(var(--emcydocs-glow) / 0.12);
68
+ --emcydocs-code-bg: 225 30% 96%;
69
+ --emcydocs-code-border: 225 22% 82%;
70
+ --emcydocs-font-sans: var(--font-geist-sans, ui-sans-serif, system-ui, sans-serif);
71
+ --emcydocs-font-mono: var(--font-geist-mono, ui-monospace, monospace);
72
+ }
73
+
74
+ /* Dark mode */
75
+ [data-emcydocs-mode="dark"] {
76
+ --emcydocs-background: 232 32% 6%;
77
+ --emcydocs-foreground: 210 40% 98%;
78
+ --emcydocs-card: 232 28% 10%;
79
+ --emcydocs-card-foreground: 210 40% 98%;
80
+ --emcydocs-popover: 232 28% 10%;
81
+ --emcydocs-popover-foreground: 210 40% 98%;
82
+ --emcydocs-primary: 178 80% 52%;
83
+ --emcydocs-primary-foreground: 232 32% 6%;
84
+ --emcydocs-secondary: 232 22% 14%;
85
+ --emcydocs-secondary-foreground: 210 40% 98%;
86
+ --emcydocs-muted: 232 18% 14%;
87
+ --emcydocs-muted-foreground: 220 14% 62%;
88
+ --emcydocs-accent: 178 50% 16%;
89
+ --emcydocs-accent-foreground: 178 85% 88%;
90
+ --emcydocs-destructive: 0 62.8% 30.6%;
91
+ --emcydocs-border: 232 16% 22%;
92
+ --emcydocs-input: 232 16% 24%;
93
+ --emcydocs-ring: 178 85% 55%;
94
+ --emcydocs-glow: 178 95% 55%;
95
+ --emcydocs-glow-secondary: 265 85% 68%;
96
+
97
+ /* Theme surface details */
98
+ --emcydocs-surface: 232 28% 10%;
99
+ --emcydocs-bg: 232 32% 6%;
100
+ --emcydocs-border-strong: 232 18% 28%;
101
+ --emcydocs-accent-soft: 178 90% 50% / 0.18;
102
+ --emcydocs-shadow-sm: 0 1px 2px hsl(0 0% 0% / 0.4);
103
+ --emcydocs-shadow-lg: 0 24px 80px hsl(0 0% 0% / 0.55), 0 0 60px hsl(var(--emcydocs-glow) / 0.08);
104
+ --emcydocs-shadow-glow: 0 0 0 1px hsl(var(--emcydocs-primary) / 0.35), 0 0 48px hsl(var(--emcydocs-glow) / 0.2);
105
+ --emcydocs-code-bg: 232 24% 12%;
106
+ --emcydocs-code-border: 232 16% 26%;
107
+ }
108
+
109
+ /* ============================================
110
+ Base Shell & Layout
111
+ ============================================ */
112
+
113
+ .emcydocs-shell {
114
+ position: relative;
115
+ isolation: isolate;
116
+ min-height: 100vh;
117
+ background: hsl(var(--emcydocs-bg));
118
+ color: hsl(var(--emcydocs-foreground));
119
+ font-family: var(--emcydocs-font-sans);
120
+ }
121
+
122
+ .emcydocs-shell::before {
123
+ content: "";
124
+ position: fixed;
125
+ inset: 0;
126
+ z-index: 0;
127
+ pointer-events: none;
128
+ background:
129
+ radial-gradient(ellipse 90% 60% at 10% -10%, hsl(var(--emcydocs-glow) / 0.09), transparent 55%),
130
+ radial-gradient(ellipse 70% 50% at 100% 0%, hsl(var(--emcydocs-glow-secondary) / 0.07), transparent 50%),
131
+ linear-gradient(hsl(var(--emcydocs-border) / 0.35) 1px, transparent 1px),
132
+ linear-gradient(90deg, hsl(var(--emcydocs-border) / 0.35) 1px, transparent 1px);
133
+ background-size: auto, auto, 72px 72px, 72px 72px;
134
+ mask-image: radial-gradient(ellipse 120% 80% at 50% -20%, black 20%, transparent 75%);
135
+ }
136
+
137
+ .emcydocs-shell > * {
138
+ position: relative;
139
+ z-index: 1;
140
+ }
141
+
142
+ .emcydocs-shell *,
143
+ .emcydocs-shell *::before,
144
+ .emcydocs-shell *::after {
145
+ box-sizing: border-box;
146
+ }
147
+
148
+ .emcydocs-shell a {
149
+ color: inherit;
150
+ text-decoration: none;
151
+ }
152
+
153
+ /* ============================================
154
+ Header
155
+ ============================================ */
156
+
157
+ .emcydocs-header {
158
+ position: sticky;
159
+ top: 0;
160
+ z-index: 50;
161
+ display: none;
162
+ width: 100%;
163
+ border-bottom: 1px solid hsl(var(--emcydocs-primary) / 0.12);
164
+ background: hsl(var(--emcydocs-surface) / 0.72);
165
+ box-shadow: var(--emcydocs-shadow-sm);
166
+ backdrop-filter: blur(16px) saturate(1.2);
167
+ }
168
+
169
+ @supports (backdrop-filter: blur(16px)) {
170
+ .emcydocs-header {
171
+ background: hsl(var(--emcydocs-surface) / 0.65);
172
+ }
173
+ }
174
+
175
+ .emcydocs-header-inner {
176
+ display: flex;
177
+ align-items: center;
178
+ gap: 1rem;
179
+ width: min(100%, var(--emcydocs-layout-width));
180
+ height: var(--emcydocs-header-height);
181
+ margin: 0 auto;
182
+ padding: 0 1.5rem;
183
+ }
184
+
185
+ .emcydocs-header-brand {
186
+ display: flex;
187
+ align-items: center;
188
+ gap: 0.5rem;
189
+ font-size: 0.875rem;
190
+ font-weight: 600;
191
+ }
192
+
193
+ .emcydocs-header-brand svg {
194
+ width: 1.5rem;
195
+ height: 1.5rem;
196
+ }
197
+
198
+ .emcydocs-header-search {
199
+ flex: 1;
200
+ max-width: 24rem;
201
+ }
202
+
203
+ .emcydocs-header-theme,
204
+ .emcydocs-header-language {
205
+ display: flex;
206
+ align-items: center;
207
+ }
208
+
209
+ .emcydocs-header-theme {
210
+ margin-left: auto;
211
+ }
212
+
213
+ .emcydocs-header-links {
214
+ display: flex;
215
+ align-items: center;
216
+ gap: 0.25rem;
217
+ }
218
+
219
+ .emcydocs-header-links a {
220
+ display: inline-flex;
221
+ align-items: center;
222
+ padding: var(--emcydocs-control-padding-y) var(--emcydocs-control-padding-x);
223
+ border-radius: var(--radius);
224
+ font-size: 0.875rem;
225
+ font-weight: 500;
226
+ color: hsl(var(--emcydocs-muted-foreground));
227
+ transition: color 0.15s, background 0.15s;
228
+ }
229
+
230
+ .emcydocs-header-links a:hover {
231
+ color: hsl(var(--emcydocs-foreground));
232
+ background: hsl(var(--emcydocs-accent));
233
+ }
234
+
235
+ /* ============================================
236
+ Frame & Desktop Layout
237
+ ============================================ */
238
+
239
+ .emcydocs-frame {
240
+ width: min(100%, var(--emcydocs-layout-width));
241
+ margin: 0 auto;
242
+ }
243
+
244
+ .emcydocs-desktop-nav {
245
+ display: none;
246
+ }
247
+
248
+ .emcydocs-main {
249
+ min-width: 0;
250
+ position: relative;
251
+ }
252
+
253
+ @media (min-width: 1024px) {
254
+ .emcydocs-header {
255
+ display: block;
256
+ }
257
+
258
+ .emcydocs-frame {
259
+ display: grid;
260
+ grid-template-columns: var(--emcydocs-sidebar-width) minmax(0, 1fr);
261
+ padding: 0 1.5rem;
262
+ }
263
+
264
+ .emcydocs-desktop-nav {
265
+ display: flex;
266
+ flex-direction: column;
267
+ position: sticky;
268
+ top: var(--emcydocs-header-height);
269
+ height: calc(100vh - var(--emcydocs-header-height));
270
+ overflow: visible;
271
+ padding: 1rem 0 1.5rem;
272
+ }
273
+
274
+ .emcydocs-desktop-nav .emcydocs-sidebar {
275
+ margin-right: 0.75rem;
276
+ border: 1px solid hsl(var(--emcydocs-primary) / 0.1);
277
+ border-radius: calc(var(--radius) + 2px);
278
+ background: hsl(var(--emcydocs-card) / 0.55);
279
+ box-shadow: var(--emcydocs-shadow-sm);
280
+ backdrop-filter: blur(12px);
281
+ }
282
+ }
283
+
284
+ /* ============================================
285
+ Mobile Chrome
286
+ ============================================ */
287
+
288
+ .emcydocs-mobile-wrap {
289
+ position: sticky;
290
+ top: 0;
291
+ z-index: 40;
292
+ background: hsl(var(--emcydocs-surface) / 0.95);
293
+ box-shadow: var(--emcydocs-shadow-sm);
294
+ backdrop-filter: blur(8px);
295
+ }
296
+
297
+ @supports (backdrop-filter: blur(8px)) {
298
+ .emcydocs-mobile-wrap {
299
+ background: hsl(var(--emcydocs-surface) / 0.8);
300
+ }
301
+ }
302
+
303
+ .emcydocs-mobile-inner {
304
+ width: min(100%, var(--emcydocs-layout-width));
305
+ margin: 0 auto;
306
+ }
307
+
308
+ .emcydocs-mobile {
309
+ border-bottom: 1px solid hsl(var(--emcydocs-border-strong));
310
+ padding: calc(var(--emcydocs-control-padding-y) + 0.125rem) var(--emcydocs-page-padding);
311
+ }
312
+
313
+ .emcydocs-mobile-row {
314
+ display: flex;
315
+ align-items: center;
316
+ justify-content: space-between;
317
+ gap: 0.75rem;
318
+ }
319
+
320
+ .emcydocs-mobile-title {
321
+ flex: 1;
322
+ min-width: 0;
323
+ overflow: hidden;
324
+ color: hsl(var(--emcydocs-foreground));
325
+ text-overflow: ellipsis;
326
+ white-space: nowrap;
327
+ font-size: 0.875rem;
328
+ font-weight: 600;
329
+ }
330
+
331
+ .emcydocs-mobile-actions {
332
+ display: flex;
333
+ align-items: center;
334
+ gap: 0.5rem;
335
+ flex-shrink: 0;
336
+ }
337
+
338
+ .emcydocs-mobile-toggle {
339
+ display: inline-flex;
340
+ align-items: center;
341
+ justify-content: center;
342
+ width: 2.25rem;
343
+ height: 2.25rem;
344
+ padding: 0;
345
+ border: 1px solid hsl(var(--emcydocs-border));
346
+ border-radius: var(--radius);
347
+ background: transparent;
348
+ color: hsl(var(--emcydocs-foreground));
349
+ cursor: pointer;
350
+ transition: background 0.15s, border-color 0.15s;
351
+ }
352
+
353
+ .emcydocs-mobile-toggle:hover {
354
+ background: hsl(var(--emcydocs-accent));
355
+ }
356
+
357
+ .emcydocs-mobile-toggle svg {
358
+ width: 1.25rem;
359
+ height: 1.25rem;
360
+ flex-shrink: 0;
361
+ }
362
+
363
+ .emcydocs-mobile-theme,
364
+ .emcydocs-mobile-language {
365
+ display: flex;
366
+ align-items: center;
367
+ }
368
+
369
+ .emcydocs-mobile-nav-panel {
370
+ max-height: 0;
371
+ overflow: hidden;
372
+ opacity: 0;
373
+ pointer-events: none;
374
+ transform: translateY(-4px);
375
+ transition: all 0.2s ease;
376
+ }
377
+
378
+ .emcydocs-mobile-nav-panel.is-open {
379
+ max-height: min(70vh, 32rem);
380
+ overflow: auto;
381
+ opacity: 1;
382
+ pointer-events: auto;
383
+ transform: translateY(0);
384
+ border-top: 1px solid hsl(var(--emcydocs-border-strong));
385
+ }
386
+
387
+ @media (min-width: 1024px) {
388
+ .emcydocs-mobile-wrap {
389
+ display: none;
390
+ }
391
+ }
392
+
393
+ /* ============================================
394
+ Embedded Mode
395
+ ============================================ */
396
+
397
+ .emcydocs-shell-embedded {
398
+ min-height: auto;
399
+ }
400
+
401
+ .emcydocs-embedded-mobile-bar {
402
+ position: sticky;
403
+ top: 0;
404
+ z-index: 40;
405
+ display: block;
406
+ background: hsl(var(--emcydocs-surface) / 0.95);
407
+ backdrop-filter: blur(8px);
408
+ border-bottom: 1px solid hsl(var(--emcydocs-border-strong));
409
+ box-shadow: var(--emcydocs-shadow-sm);
410
+ }
411
+
412
+ @supports (backdrop-filter: blur(8px)) {
413
+ .emcydocs-embedded-mobile-bar {
414
+ background: hsl(var(--emcydocs-surface) / 0.8);
415
+ }
416
+ }
417
+
418
+ .emcydocs-embedded-nav-toggle {
419
+ display: inline-flex;
420
+ align-items: center;
421
+ gap: 0.5rem;
422
+ padding: calc(var(--emcydocs-control-padding-y) + 0.125rem)
423
+ var(--emcydocs-page-padding);
424
+ border: none;
425
+ background: transparent;
426
+ color: hsl(var(--emcydocs-foreground));
427
+ font-size: 0.875rem;
428
+ font-weight: 500;
429
+ cursor: pointer;
430
+ transition: background 0.15s;
431
+ }
432
+
433
+ .emcydocs-embedded-nav-toggle:hover {
434
+ background: hsl(var(--emcydocs-accent));
435
+ }
436
+
437
+ .emcydocs-embedded-nav-toggle svg {
438
+ width: 1.25rem;
439
+ height: 1.25rem;
440
+ flex-shrink: 0;
441
+ }
442
+
443
+ .emcydocs-embedded-nav-panel {
444
+ max-height: min(70vh, 32rem);
445
+ overflow: auto;
446
+ border-top: 1px solid hsl(var(--emcydocs-border-strong));
447
+ padding: var(--emcydocs-sidebar-padding);
448
+ }
449
+
450
+ @media (min-width: 1024px) {
451
+ .emcydocs-embedded-mobile-bar {
452
+ display: none;
453
+ }
454
+ }
455
+
456
+ /* ============================================
457
+ Menu Button
458
+ ============================================ */
459
+
460
+ .emcydocs-menu-btn {
461
+ display: inline-flex;
462
+ align-items: center;
463
+ justify-content: center;
464
+ width: 2.25rem;
465
+ height: 2.25rem;
466
+ border: 1px solid hsl(var(--emcydocs-border));
467
+ border-radius: var(--radius);
468
+ background: transparent;
469
+ color: hsl(var(--emcydocs-muted-foreground));
470
+ cursor: pointer;
471
+ transition: color 0.15s, background 0.15s, border-color 0.15s;
472
+ }
473
+
474
+ .emcydocs-menu-btn:hover {
475
+ color: hsl(var(--emcydocs-foreground));
476
+ background: hsl(var(--emcydocs-accent));
477
+ border-color: hsl(var(--emcydocs-border));
478
+ }
479
+
480
+ .emcydocs-menu-btn svg {
481
+ width: 1.25rem;
482
+ height: 1.25rem;
483
+ }
484
+
485
+ /* ============================================
486
+ Sidebar Navigation
487
+ ============================================ */
488
+
489
+ .emcydocs-sidebar,
490
+ .emcydocs-sidebar-mobile {
491
+ display: flex;
492
+ flex-direction: column;
493
+ height: 100%;
494
+ padding: var(--emcydocs-sidebar-padding);
495
+ }
496
+
497
+ .emcydocs-sidebar-mobile {
498
+ padding: var(--emcydocs-sidebar-padding);
499
+ }
500
+
501
+ .emcydocs-sidebar-scroll {
502
+ display: flex;
503
+ flex-direction: column;
504
+ gap: var(--emcydocs-section-gap);
505
+ flex: 1;
506
+ min-height: 0;
507
+ overflow-y: auto;
508
+ scrollbar-width: thin;
509
+ scrollbar-gutter: stable;
510
+ }
511
+
512
+ .emcydocs-sidebar-scroll:not(:hover) {
513
+ scrollbar-color: transparent transparent;
514
+ }
515
+
516
+ .emcydocs-sidebar-scroll:hover {
517
+ scrollbar-color: hsl(var(--emcydocs-border)) transparent;
518
+ }
519
+
520
+ /* WebKit auto-hide scrollbar */
521
+ .emcydocs-sidebar-scroll::-webkit-scrollbar {
522
+ width: 6px;
523
+ }
524
+
525
+ .emcydocs-sidebar-scroll::-webkit-scrollbar-track {
526
+ background: transparent;
527
+ }
528
+
529
+ .emcydocs-sidebar-scroll::-webkit-scrollbar-thumb {
530
+ background: transparent;
531
+ border-radius: 3px;
532
+ }
533
+
534
+ .emcydocs-sidebar-scroll:hover::-webkit-scrollbar-thumb {
535
+ background: hsl(var(--emcydocs-border));
536
+ }
537
+
538
+ .emcydocs-sidebar-section {
539
+ display: flex;
540
+ flex-direction: column;
541
+ }
542
+
543
+ .emcydocs-sidebar-section-toggle {
544
+ display: flex;
545
+ align-items: center;
546
+ justify-content: space-between;
547
+ width: 100%;
548
+ padding: var(--emcydocs-control-padding-y) var(--emcydocs-control-padding-x);
549
+ border: none;
550
+ border-radius: calc(var(--radius) - 2px);
551
+ background: transparent;
552
+ color: hsl(var(--emcydocs-foreground));
553
+ font-size: 0.6875rem;
554
+ font-weight: 600;
555
+ text-transform: uppercase;
556
+ letter-spacing: 0.04em;
557
+ cursor: pointer;
558
+ transition: background 0.15s;
559
+ }
560
+
561
+ .emcydocs-sidebar-section-toggle:hover {
562
+ background: hsl(var(--emcydocs-accent));
563
+ }
564
+
565
+ .emcydocs-sidebar-section-toggle span:last-child {
566
+ font-size: 0.875rem;
567
+ font-weight: 400;
568
+ color: hsl(var(--emcydocs-muted-foreground));
569
+ }
570
+
571
+ .emcydocs-sidebar-list {
572
+ display: flex;
573
+ flex-direction: column;
574
+ gap: var(--emcydocs-nav-gap);
575
+ margin-top: calc(var(--emcydocs-control-padding-y) * 0.75);
576
+ padding: 0;
577
+ list-style: none;
578
+ }
579
+
580
+ .emcydocs-sidebar-link {
581
+ display: block;
582
+ padding: var(--emcydocs-control-padding-y) var(--emcydocs-control-padding-x);
583
+ border-radius: calc(var(--radius) - 2px);
584
+ color: hsl(var(--emcydocs-muted-foreground));
585
+ font-size: 0.8125rem;
586
+ font-weight: 500;
587
+ transition: color 0.15s, background 0.15s;
588
+ }
589
+
590
+ .emcydocs-sidebar-link:hover {
591
+ color: hsl(var(--emcydocs-foreground));
592
+ background: hsl(var(--emcydocs-accent));
593
+ }
594
+
595
+ .emcydocs-sidebar-section-label {
596
+ margin: 0 0 calc(var(--emcydocs-control-padding-y) * 0.5);
597
+ padding: 0 var(--emcydocs-control-padding-x);
598
+ color: hsl(var(--emcydocs-foreground));
599
+ font-size: 0.6875rem;
600
+ font-weight: 600;
601
+ letter-spacing: 0.06em;
602
+ text-transform: uppercase;
603
+ }
604
+
605
+ .emcydocs-sidebar-link.is-active {
606
+ color: hsl(var(--emcydocs-primary));
607
+ background: linear-gradient(
608
+ 90deg,
609
+ hsl(var(--emcydocs-primary) / 0.14),
610
+ hsl(var(--emcydocs-accent) / 0.5)
611
+ );
612
+ font-weight: 600;
613
+ border-left: 2px solid hsl(var(--emcydocs-primary));
614
+ padding-left: calc(var(--emcydocs-control-padding-x) - 2px);
615
+ box-shadow: inset 0 0 0 1px hsl(var(--emcydocs-primary) / 0.08);
616
+ }
617
+
618
+ .emcydocs-sidebar-link.is-nested {
619
+ font-size: 0.75rem;
620
+ }
621
+
622
+ .emcydocs-sidebar-header {
623
+ flex-shrink: 0;
624
+ padding-bottom: var(--emcydocs-section-gap);
625
+ margin-bottom: var(--emcydocs-section-gap);
626
+ border-bottom: 1px solid hsl(var(--emcydocs-border-strong));
627
+ display: flex;
628
+ flex-direction: column;
629
+ gap: var(--emcydocs-section-gap);
630
+ }
631
+
632
+ .emcydocs-sidebar-footer {
633
+ flex-shrink: 0;
634
+ padding-top: var(--emcydocs-section-gap);
635
+ margin-top: var(--emcydocs-section-gap);
636
+ border-top: 1px solid hsl(var(--emcydocs-border-strong));
637
+ }
638
+
639
+ /* ============================================
640
+ Search
641
+ ============================================ */
642
+
643
+ .emcydocs-search {
644
+ position: relative;
645
+ }
646
+
647
+ .emcydocs-search-input-wrap {
648
+ position: relative;
649
+ display: flex;
650
+ align-items: center;
651
+ }
652
+
653
+ .emcydocs-search-icon {
654
+ position: absolute;
655
+ left: 0.75rem;
656
+ width: 1rem;
657
+ height: 1rem;
658
+ color: hsl(var(--emcydocs-muted-foreground));
659
+ pointer-events: none;
660
+ }
661
+
662
+ .emcydocs-search-input {
663
+ width: 100%;
664
+ height: 2.25rem;
665
+ padding: 0 0.75rem 0 2.25rem;
666
+ border: 1px solid hsl(var(--emcydocs-border));
667
+ border-radius: calc(var(--radius) - 1px);
668
+ background: hsl(var(--emcydocs-surface));
669
+ color: hsl(var(--emcydocs-foreground));
670
+ font-size: 0.875rem;
671
+ transition: border-color 0.15s, box-shadow 0.15s;
672
+ }
673
+
674
+ .emcydocs-search-input::placeholder {
675
+ color: hsl(var(--emcydocs-muted-foreground));
676
+ }
677
+
678
+ .emcydocs-search-input:focus {
679
+ outline: none;
680
+ border-color: hsl(var(--emcydocs-ring));
681
+ box-shadow: 0 0 0 2px hsl(var(--emcydocs-ring) / 0.2);
682
+ }
683
+
684
+ .emcydocs-search-kbd {
685
+ position: absolute;
686
+ right: 0.5rem;
687
+ display: inline-flex;
688
+ align-items: center;
689
+ height: 1.25rem;
690
+ padding: 0 0.375rem;
691
+ border: 1px solid hsl(var(--emcydocs-border));
692
+ border-radius: calc(var(--radius) - 2px);
693
+ background: hsl(var(--emcydocs-muted));
694
+ color: hsl(var(--emcydocs-muted-foreground));
695
+ font-family: inherit;
696
+ font-size: 0.625rem;
697
+ font-weight: 500;
698
+ pointer-events: none;
699
+ }
700
+
701
+ .emcydocs-search-panel {
702
+ position: absolute;
703
+ top: calc(100% + 0.5rem);
704
+ left: 0;
705
+ right: 0;
706
+ z-index: 50;
707
+ max-height: min(60vh, 24rem);
708
+ overflow: auto;
709
+ border: 1px solid hsl(var(--emcydocs-border));
710
+ border-radius: var(--radius);
711
+ background: hsl(var(--emcydocs-popover));
712
+ box-shadow: var(--emcydocs-shadow-lg);
713
+ }
714
+
715
+ .emcydocs-search-empty {
716
+ padding: 1.5rem;
717
+ text-align: center;
718
+ color: hsl(var(--emcydocs-muted-foreground));
719
+ font-size: 0.875rem;
720
+ }
721
+
722
+ .emcydocs-search-results {
723
+ list-style: none;
724
+ margin: 0;
725
+ padding: calc(var(--emcydocs-control-padding-y) * 0.5);
726
+ }
727
+
728
+ .emcydocs-search-result {
729
+ display: block;
730
+ padding: calc(var(--emcydocs-card-padding) * 0.75);
731
+ border-radius: calc(var(--radius) - 2px);
732
+ transition: background 0.1s;
733
+ }
734
+
735
+ .emcydocs-search-result:hover,
736
+ .emcydocs-search-result.is-active {
737
+ background: hsl(var(--emcydocs-accent));
738
+ }
739
+
740
+ .emcydocs-search-result-top {
741
+ display: flex;
742
+ align-items: center;
743
+ gap: 0.5rem;
744
+ }
745
+
746
+ .emcydocs-search-result-title {
747
+ font-size: 0.875rem;
748
+ font-weight: 600;
749
+ color: hsl(var(--emcydocs-foreground));
750
+ }
751
+
752
+ .emcydocs-search-result-section {
753
+ font-size: 0.75rem;
754
+ color: hsl(var(--emcydocs-muted-foreground));
755
+ }
756
+
757
+ .emcydocs-search-result-snippet {
758
+ margin-top: 0.25rem;
759
+ font-size: 0.75rem;
760
+ color: hsl(var(--emcydocs-muted-foreground));
761
+ line-height: 1.5;
762
+ display: -webkit-box;
763
+ -webkit-line-clamp: 2;
764
+ -webkit-box-orient: vertical;
765
+ overflow: hidden;
766
+ }
767
+
768
+ .emcydocs-search-trigger {
769
+ display: flex;
770
+ align-items: center;
771
+ gap: 0.5rem;
772
+ width: 100%;
773
+ min-width: 12rem;
774
+ height: 2.375rem;
775
+ padding: 0 0.875rem;
776
+ border: 1px solid hsl(var(--emcydocs-primary) / 0.2);
777
+ border-radius: var(--radius);
778
+ background: linear-gradient(
779
+ 135deg,
780
+ hsl(var(--emcydocs-surface) / 0.9),
781
+ hsl(var(--emcydocs-muted) / 0.6)
782
+ );
783
+ color: hsl(var(--emcydocs-muted-foreground));
784
+ font-size: 0.875rem;
785
+ text-align: left;
786
+ cursor: pointer;
787
+ transition: border-color 0.2s, box-shadow 0.2s, color 0.2s, transform 0.15s;
788
+ }
789
+
790
+ .emcydocs-search-trigger:hover {
791
+ border-color: hsl(var(--emcydocs-primary) / 0.45);
792
+ color: hsl(var(--emcydocs-foreground));
793
+ box-shadow: var(--emcydocs-shadow-glow);
794
+ transform: translateY(-1px);
795
+ }
796
+
797
+ .emcydocs-search-trigger-icon {
798
+ width: 1rem;
799
+ height: 1rem;
800
+ flex-shrink: 0;
801
+ }
802
+
803
+ .emcydocs-search-trigger-label {
804
+ flex: 1;
805
+ overflow: hidden;
806
+ text-overflow: ellipsis;
807
+ white-space: nowrap;
808
+ }
809
+
810
+ .emcydocs-search-trigger-compact {
811
+ display: inline-flex;
812
+ align-items: center;
813
+ justify-content: center;
814
+ width: 2.25rem;
815
+ height: 2.25rem;
816
+ border: 1px solid hsl(var(--emcydocs-border));
817
+ border-radius: calc(var(--radius) - 1px);
818
+ background: hsl(var(--emcydocs-surface));
819
+ color: hsl(var(--emcydocs-muted-foreground));
820
+ cursor: pointer;
821
+ }
822
+
823
+ .emcydocs-search-trigger-compact svg {
824
+ width: 1rem;
825
+ height: 1rem;
826
+ }
827
+
828
+ .emcydocs-search-dialog {
829
+ width: min(40rem, calc(100vw - 2rem));
830
+ max-width: none;
831
+ max-height: min(36rem, calc(100vh - 4rem));
832
+ margin: auto;
833
+ padding: 0;
834
+ border: 1px solid hsl(var(--emcydocs-primary) / 0.25);
835
+ border-radius: calc(var(--radius) + 4px);
836
+ background: hsl(var(--emcydocs-popover) / 0.92);
837
+ box-shadow: var(--emcydocs-shadow-lg), var(--emcydocs-shadow-glow);
838
+ backdrop-filter: blur(20px) saturate(1.3);
839
+ }
840
+
841
+ .emcydocs-search-dialog::backdrop {
842
+ background: hsl(232 32% 6% / 0.55);
843
+ backdrop-filter: blur(4px);
844
+ }
845
+
846
+ .emcydocs-search-dialog-panel {
847
+ display: flex;
848
+ flex-direction: column;
849
+ max-height: min(32rem, calc(100vh - 4rem));
850
+ }
851
+
852
+ .emcydocs-search-dialog-header {
853
+ display: flex;
854
+ align-items: center;
855
+ gap: 0.5rem;
856
+ padding: 0.75rem;
857
+ border-bottom: 1px solid hsl(var(--emcydocs-border));
858
+ }
859
+
860
+ .emcydocs-search-input-wrap-dialog {
861
+ flex: 1;
862
+ }
863
+
864
+ .emcydocs-search-input-wrap-dialog .emcydocs-search-input {
865
+ border: none;
866
+ box-shadow: none;
867
+ padding-right: 3rem;
868
+ }
869
+
870
+ .emcydocs-search-input-wrap-dialog .emcydocs-search-input:focus {
871
+ box-shadow: none;
872
+ }
873
+
874
+ .emcydocs-search-dialog-close {
875
+ display: inline-flex;
876
+ align-items: center;
877
+ justify-content: center;
878
+ width: 2rem;
879
+ height: 2rem;
880
+ border: none;
881
+ border-radius: calc(var(--radius) - 2px);
882
+ background: transparent;
883
+ color: hsl(var(--emcydocs-muted-foreground));
884
+ font-size: 1.25rem;
885
+ line-height: 1;
886
+ cursor: pointer;
887
+ }
888
+
889
+ .emcydocs-search-dialog-close:hover {
890
+ background: hsl(var(--emcydocs-accent));
891
+ color: hsl(var(--emcydocs-foreground));
892
+ }
893
+
894
+ .emcydocs-search-dialog-body {
895
+ overflow: auto;
896
+ max-height: min(24rem, calc(100vh - 10rem));
897
+ }
898
+
899
+ .emcydocs-search-dialog-body .emcydocs-search-results {
900
+ padding: 0.5rem;
901
+ }
902
+
903
+ .emcydocs-page-breadcrumb {
904
+ display: flex;
905
+ flex-wrap: wrap;
906
+ align-items: center;
907
+ gap: 0.35rem;
908
+ margin-bottom: 0.75rem;
909
+ font-size: 0.8125rem;
910
+ color: hsl(var(--emcydocs-muted-foreground));
911
+ }
912
+
913
+ .emcydocs-page-breadcrumb a {
914
+ color: hsl(var(--emcydocs-primary));
915
+ font-weight: 500;
916
+ }
917
+
918
+ .emcydocs-mobile-toc {
919
+ display: block;
920
+ margin-bottom: 1.5rem;
921
+ }
922
+
923
+ @media (min-width: 1280px) {
924
+ .emcydocs-mobile-toc {
925
+ display: none;
926
+ }
927
+ }
928
+
929
+ .emcydocs-home-quick-links {
930
+ display: flex;
931
+ flex-wrap: wrap;
932
+ gap: 0.75rem;
933
+ margin-top: 1.25rem;
934
+ }
935
+
936
+ .emcydocs-home-quick-link {
937
+ display: inline-flex;
938
+ align-items: center;
939
+ gap: 0.35rem;
940
+ padding: 0.5rem 0.875rem;
941
+ border: 1px solid hsl(var(--emcydocs-border));
942
+ border-radius: var(--radius);
943
+ background: hsl(var(--emcydocs-surface));
944
+ color: hsl(var(--emcydocs-foreground));
945
+ font-size: 0.875rem;
946
+ font-weight: 500;
947
+ transition: border-color 0.15s, background 0.15s;
948
+ }
949
+
950
+ .emcydocs-home-quick-link:hover {
951
+ border-color: hsl(var(--emcydocs-ring));
952
+ background: hsl(var(--emcydocs-accent));
953
+ }
954
+
955
+ /* ============================================
956
+ Table of Contents
957
+ ============================================ */
958
+
959
+ .emcydocs-toc {
960
+ position: sticky;
961
+ top: calc(var(--emcydocs-header-height) + 1.5rem);
962
+ max-height: calc(100vh - var(--emcydocs-header-height) - 3rem);
963
+ overflow-y: auto;
964
+ padding: 0 var(--emcydocs-sidebar-padding);
965
+ display: none;
966
+ }
967
+
968
+ @media (min-width: 1280px) {
969
+ .emcydocs-toc {
970
+ display: block;
971
+ }
972
+ }
973
+
974
+ .emcydocs-toc-title {
975
+ margin: 0 0 var(--emcydocs-section-gap);
976
+ color: hsl(var(--emcydocs-foreground));
977
+ font-size: 0.6875rem;
978
+ font-weight: 600;
979
+ letter-spacing: 0.05em;
980
+ text-transform: uppercase;
981
+ }
982
+
983
+ .emcydocs-toc-nav,
984
+ .emcydocs-toc-list {
985
+ display: flex;
986
+ flex-direction: column;
987
+ gap: 0.125rem;
988
+ list-style: none;
989
+ margin: 0;
990
+ padding: 0;
991
+ border-left: 1px solid hsl(var(--emcydocs-border-strong));
992
+ }
993
+
994
+ .emcydocs-toc-link {
995
+ display: block;
996
+ padding: var(--emcydocs-toc-padding-y) var(--emcydocs-toc-padding-x);
997
+ margin-left: -1px;
998
+ border-left: 2px solid transparent;
999
+ color: hsl(var(--emcydocs-muted-foreground));
1000
+ font-size: 0.8125rem;
1001
+ line-height: 1.4;
1002
+ transition: color 0.15s, border-color 0.15s;
1003
+ }
1004
+
1005
+ .emcydocs-toc-link-sub {
1006
+ padding-left: 1.25rem;
1007
+ }
1008
+
1009
+ .emcydocs-toc-link:hover {
1010
+ color: hsl(var(--emcydocs-foreground));
1011
+ }
1012
+
1013
+ .emcydocs-toc-link.is-active {
1014
+ color: hsl(var(--emcydocs-foreground));
1015
+ border-left-color: hsl(var(--emcydocs-foreground));
1016
+ }
1017
+
1018
+ .emcydocs-toc-link[data-depth="3"] {
1019
+ padding-left: 1.5rem;
1020
+ }
1021
+
1022
+ /* ============================================
1023
+ Page Content
1024
+ ============================================ */
1025
+
1026
+ .emcydocs-page {
1027
+ display: grid;
1028
+ gap: var(--emcydocs-page-grid-gap);
1029
+ padding: var(--emcydocs-page-padding);
1030
+ padding-top: 0;
1031
+ }
1032
+
1033
+ @media (min-width: 1024px) {
1034
+ .emcydocs-page {
1035
+ padding: 0 2.5rem 2rem;
1036
+ }
1037
+ }
1038
+
1039
+ @media (min-width: 1280px) {
1040
+ .emcydocs-page {
1041
+ grid-template-columns: minmax(0, 1fr) var(--emcydocs-toc-width);
1042
+ }
1043
+ }
1044
+
1045
+ .emcydocs-article {
1046
+ max-width: var(--emcydocs-content-width);
1047
+ min-width: 0;
1048
+ }
1049
+
1050
+ .emcydocs-page-title-row {
1051
+ display: flex;
1052
+ align-items: flex-start;
1053
+ justify-content: space-between;
1054
+ gap: 1rem;
1055
+ }
1056
+
1057
+ .emcydocs-page-title-row h1 {
1058
+ flex: 1;
1059
+ min-width: 0;
1060
+ }
1061
+
1062
+ .emcydocs-page-title-row .emcydocs-copymenu {
1063
+ flex-shrink: 0;
1064
+ margin-top: 0.25rem;
1065
+ }
1066
+
1067
+ .emcydocs-page-header {
1068
+ margin-bottom: calc(var(--emcydocs-page-grid-gap));
1069
+ padding-bottom: calc(var(--emcydocs-page-grid-gap) * 0.75);
1070
+ border-bottom: 1px solid hsl(var(--emcydocs-border-strong));
1071
+ }
1072
+
1073
+ .emcydocs-page-header h1 {
1074
+ margin: 0;
1075
+ color: hsl(var(--emcydocs-foreground));
1076
+ font-size: 2rem;
1077
+ font-weight: 700;
1078
+ line-height: 1.2;
1079
+ letter-spacing: -0.02em;
1080
+ }
1081
+
1082
+ .emcydocs-page-header > p {
1083
+ margin: 0.5rem 0 0;
1084
+ color: hsl(var(--emcydocs-muted-foreground));
1085
+ font-size: 1.0625rem;
1086
+ line-height: 1.6;
1087
+ }
1088
+
1089
+ .emcydocs-page-kicker {
1090
+ margin: 0 0 0.5rem;
1091
+ color: hsl(var(--emcydocs-muted-foreground));
1092
+ font-size: 0.75rem;
1093
+ font-weight: 600;
1094
+ letter-spacing: 0.02em;
1095
+ text-transform: uppercase;
1096
+ }
1097
+
1098
+ .emcydocs-page-meta {
1099
+ display: flex;
1100
+ flex-wrap: wrap;
1101
+ gap: 0.5rem;
1102
+ margin-top: 1rem;
1103
+ }
1104
+
1105
+ .emcydocs-page-meta-chip {
1106
+ display: inline-flex;
1107
+ align-items: center;
1108
+ padding: 0.25rem 0.625rem;
1109
+ border-radius: calc(var(--radius) - 2px);
1110
+ background: hsl(var(--emcydocs-muted));
1111
+ color: hsl(var(--emcydocs-muted-foreground));
1112
+ font-size: 0.75rem;
1113
+ font-weight: 500;
1114
+ }
1115
+
1116
+ .emcydocs-page-aside {
1117
+ display: none;
1118
+ }
1119
+
1120
+ @media (min-width: 1280px) {
1121
+ .emcydocs-page-aside {
1122
+ display: flex;
1123
+ flex-direction: column;
1124
+ gap: 1.5rem;
1125
+ position: sticky;
1126
+ top: var(--emcydocs-header-height);
1127
+ max-height: calc(100vh - var(--emcydocs-header-height) - 2rem);
1128
+ padding-top: calc(var(--emcydocs-sidebar-padding) * 2);
1129
+ overflow-y: auto;
1130
+ align-self: start;
1131
+ }
1132
+
1133
+ .emcydocs-page-aside .emcydocs-toc {
1134
+ padding: 0;
1135
+ }
1136
+ }
1137
+
1138
+ .emcydocs-aside-header {
1139
+ padding-bottom: 0.5rem;
1140
+ border-bottom: 1px solid hsl(var(--emcydocs-border));
1141
+ }
1142
+
1143
+ .emcydocs-aside-footer {
1144
+ padding-top: 1rem;
1145
+ border-top: 1px solid hsl(var(--emcydocs-border));
1146
+ }
1147
+
1148
+ .emcydocs-page-pagination {
1149
+ display: flex;
1150
+ justify-content: space-between;
1151
+ gap: 1rem;
1152
+ margin-top: 3rem;
1153
+ padding-top: 1.5rem;
1154
+ border-top: 1px solid hsl(var(--emcydocs-border));
1155
+ }
1156
+
1157
+ .emcydocs-page-pagination a {
1158
+ color: hsl(var(--emcydocs-muted-foreground));
1159
+ font-size: 0.875rem;
1160
+ font-weight: 500;
1161
+ transition: color 0.15s;
1162
+ }
1163
+
1164
+ .emcydocs-page-pagination a:hover {
1165
+ color: hsl(var(--emcydocs-foreground));
1166
+ }
1167
+
1168
+ /* ============================================
1169
+ Prose Content
1170
+ ============================================ */
1171
+
1172
+ .emcydocs-prose {
1173
+ font-size: 0.9375rem;
1174
+ line-height: 1.75;
1175
+ color: hsl(var(--emcydocs-foreground));
1176
+ }
1177
+
1178
+ .emcydocs-mdx-loading {
1179
+ display: grid;
1180
+ gap: 0.75rem;
1181
+ padding: 0.5rem 0 1.5rem;
1182
+ }
1183
+
1184
+ .emcydocs-mdx-loading-line {
1185
+ height: 0.875rem;
1186
+ border-radius: 0.375rem;
1187
+ background: linear-gradient(
1188
+ 90deg,
1189
+ hsl(var(--emcydocs-muted) / 0.35) 0%,
1190
+ hsl(var(--emcydocs-muted) / 0.55) 50%,
1191
+ hsl(var(--emcydocs-muted) / 0.35) 100%
1192
+ );
1193
+ background-size: 200% 100%;
1194
+ animation: emcydocs-mdx-loading 1.2s ease-in-out infinite;
1195
+ }
1196
+
1197
+ .emcydocs-mdx-loading-line-short {
1198
+ width: 72%;
1199
+ }
1200
+
1201
+ @keyframes emcydocs-mdx-loading {
1202
+ 0% {
1203
+ background-position: 100% 0;
1204
+ }
1205
+ 100% {
1206
+ background-position: -100% 0;
1207
+ }
1208
+ }
1209
+
1210
+ .emcydocs-prose > *:first-child {
1211
+ margin-top: 0;
1212
+ }
1213
+
1214
+ .emcydocs-prose > *:last-child {
1215
+ margin-bottom: 0;
1216
+ }
1217
+
1218
+ .emcydocs-prose h1,
1219
+ .emcydocs-prose h2,
1220
+ .emcydocs-prose h3,
1221
+ .emcydocs-prose h4 {
1222
+ margin-top: 2em;
1223
+ margin-bottom: 0.75em;
1224
+ font-weight: 600;
1225
+ line-height: 1.3;
1226
+ letter-spacing: -0.01em;
1227
+ scroll-margin-top: calc(var(--emcydocs-header-height) + 1rem);
1228
+ }
1229
+
1230
+ .emcydocs-prose h1 {
1231
+ font-size: 1.75rem;
1232
+ }
1233
+
1234
+ .emcydocs-prose h2 {
1235
+ font-size: 1.375rem;
1236
+ padding-bottom: 0.5rem;
1237
+ border-bottom: 1px solid hsl(var(--emcydocs-border));
1238
+ }
1239
+
1240
+ .emcydocs-prose h3 {
1241
+ font-size: 1.125rem;
1242
+ }
1243
+
1244
+ .emcydocs-prose h4 {
1245
+ font-size: 1rem;
1246
+ }
1247
+
1248
+ .emcydocs-prose p {
1249
+ margin: 1em 0;
1250
+ }
1251
+
1252
+ .emcydocs-prose a {
1253
+ color: hsl(var(--emcydocs-primary));
1254
+ text-decoration: underline;
1255
+ text-underline-offset: 3px;
1256
+ }
1257
+
1258
+ .emcydocs-prose a:hover {
1259
+ text-decoration-color: transparent;
1260
+ }
1261
+
1262
+ .emcydocs-prose strong {
1263
+ font-weight: 600;
1264
+ }
1265
+
1266
+ .emcydocs-prose ul,
1267
+ .emcydocs-prose ol {
1268
+ margin: 1em 0;
1269
+ padding-left: 1.5em;
1270
+ list-style-position: outside;
1271
+ }
1272
+
1273
+ .emcydocs-prose ul {
1274
+ list-style-type: disc;
1275
+ }
1276
+
1277
+ .emcydocs-prose ol {
1278
+ list-style-type: decimal;
1279
+ }
1280
+
1281
+ .emcydocs-prose ul ul {
1282
+ list-style-type: circle;
1283
+ }
1284
+
1285
+ .emcydocs-prose ol ol {
1286
+ list-style-type: lower-alpha;
1287
+ }
1288
+
1289
+ .emcydocs-prose li {
1290
+ margin: 0.375em 0;
1291
+ }
1292
+
1293
+ .emcydocs-prose li::marker {
1294
+ color: hsl(var(--emcydocs-muted-foreground));
1295
+ }
1296
+
1297
+ .emcydocs-prose blockquote {
1298
+ margin: 1.5em 0;
1299
+ padding: 0.75rem 1rem;
1300
+ border-left: 3px solid hsl(var(--emcydocs-border));
1301
+ color: hsl(var(--emcydocs-muted-foreground));
1302
+ font-style: italic;
1303
+ }
1304
+
1305
+ .emcydocs-prose hr {
1306
+ margin: 2em 0;
1307
+ border: none;
1308
+ border-top: 1px solid hsl(var(--emcydocs-border));
1309
+ }
1310
+
1311
+ .emcydocs-prose table {
1312
+ width: 100%;
1313
+ margin: 1.5em 0;
1314
+ border-collapse: collapse;
1315
+ font-size: 0.875rem;
1316
+ }
1317
+
1318
+ .emcydocs-prose th,
1319
+ .emcydocs-prose td {
1320
+ padding: 0.75rem;
1321
+ border: 1px solid hsl(var(--emcydocs-border));
1322
+ text-align: left;
1323
+ }
1324
+
1325
+ .emcydocs-prose th {
1326
+ background: hsl(var(--emcydocs-surface));
1327
+ font-weight: 600;
1328
+ }
1329
+
1330
+ .emcydocs-prose img {
1331
+ max-width: 100%;
1332
+ height: auto;
1333
+ border-radius: var(--radius);
1334
+ }
1335
+
1336
+ /* Inline code */
1337
+ .emcydocs-prose :not(pre) > code {
1338
+ padding: 0.125rem 0.375rem;
1339
+ border: 1px solid hsl(var(--emcydocs-code-border) / 0.8);
1340
+ border-radius: calc(var(--radius) - 2px);
1341
+ background: hsl(var(--emcydocs-code-bg));
1342
+ font-size: 0.875em;
1343
+ font-weight: 500;
1344
+ box-shadow: inset 0 1px 0 hsl(var(--emcydocs-foreground) / 0.04);
1345
+ }
1346
+
1347
+ /* Code blocks */
1348
+ .emcydocs-prose pre {
1349
+ margin: 1.5rem 0;
1350
+ overflow-x: auto;
1351
+ padding: var(--emcydocs-card-padding);
1352
+ border: 1px solid hsl(var(--emcydocs-code-border));
1353
+ border-radius: var(--radius);
1354
+ background: hsl(var(--emcydocs-code-bg));
1355
+ box-shadow: var(--emcydocs-shadow-sm), inset 0 1px 0 hsl(var(--emcydocs-glow) / 0.06);
1356
+ }
1357
+
1358
+ .emcydocs-prose pre code {
1359
+ display: block;
1360
+ font-size: 0.8125rem;
1361
+ line-height: 1.7;
1362
+ white-space: pre;
1363
+ }
1364
+
1365
+ /* Shiki syntax highlighting */
1366
+ .emcydocs-prose pre code[data-theme*=" "],
1367
+ .emcydocs-prose pre code[data-theme*=" "] span {
1368
+ color: var(--shiki-light);
1369
+ background: transparent;
1370
+ }
1371
+
1372
+ [data-emcydocs-mode="dark"] .emcydocs-prose pre code[data-theme*=" "],
1373
+ [data-emcydocs-mode="dark"] .emcydocs-prose pre code[data-theme*=" "] span {
1374
+ color: var(--shiki-dark);
1375
+ }
1376
+
1377
+ .emcydocs-prose pre [data-line] {
1378
+ display: block;
1379
+ min-height: 1.7em;
1380
+ }
1381
+
1382
+ /* ============================================
1383
+ Code Block Component
1384
+ ============================================ */
1385
+
1386
+ .emcydocs-codeblock {
1387
+ margin: 1.5rem 0;
1388
+ overflow: hidden;
1389
+ border: 1px solid hsl(var(--emcydocs-code-border));
1390
+ border-radius: var(--radius);
1391
+ background: hsl(var(--emcydocs-code-bg));
1392
+ box-shadow: var(--emcydocs-shadow-sm), 0 0 0 1px hsl(var(--emcydocs-primary) / 0.04);
1393
+ }
1394
+
1395
+ .emcydocs-codeblock:hover {
1396
+ box-shadow: var(--emcydocs-shadow-sm), var(--emcydocs-shadow-glow);
1397
+ }
1398
+
1399
+ .emcydocs-codeblock-header {
1400
+ display: flex;
1401
+ align-items: center;
1402
+ justify-content: space-between;
1403
+ gap: 0.75rem;
1404
+ padding: var(--emcydocs-control-padding-y) var(--emcydocs-control-padding-x);
1405
+ border-bottom: 1px solid hsl(var(--emcydocs-code-border));
1406
+ }
1407
+
1408
+ .emcydocs-codeblock-meta {
1409
+ display: flex;
1410
+ align-items: center;
1411
+ gap: 0.5rem;
1412
+ min-width: 0;
1413
+ }
1414
+
1415
+ .emcydocs-codeblock-dots {
1416
+ display: inline-flex;
1417
+ gap: 0.25rem;
1418
+ }
1419
+
1420
+ .emcydocs-codeblock-dots span {
1421
+ width: 0.5rem;
1422
+ height: 0.5rem;
1423
+ border-radius: 50%;
1424
+ }
1425
+
1426
+ .emcydocs-codeblock-dots span:nth-child(1) {
1427
+ background: #ff5f57;
1428
+ }
1429
+
1430
+ .emcydocs-codeblock-dots span:nth-child(2) {
1431
+ background: #febc2e;
1432
+ }
1433
+
1434
+ .emcydocs-codeblock-dots span:nth-child(3) {
1435
+ background: #28c840;
1436
+ }
1437
+
1438
+ .emcydocs-codeblock-title {
1439
+ overflow: hidden;
1440
+ color: hsl(var(--emcydocs-muted-foreground));
1441
+ text-overflow: ellipsis;
1442
+ white-space: nowrap;
1443
+ font-size: 0.75rem;
1444
+ font-weight: 500;
1445
+ }
1446
+
1447
+ .emcydocs-codeblock-copy {
1448
+ display: inline-flex;
1449
+ align-items: center;
1450
+ padding: calc(var(--emcydocs-control-padding-y) * 0.75)
1451
+ var(--emcydocs-control-padding-x);
1452
+ border: 1px solid hsl(var(--emcydocs-border));
1453
+ border-radius: calc(var(--radius) - 2px);
1454
+ background: transparent;
1455
+ color: hsl(var(--emcydocs-muted-foreground));
1456
+ font-size: 0.6875rem;
1457
+ font-weight: 500;
1458
+ cursor: pointer;
1459
+ transition: color 0.15s, background 0.15s, border-color 0.15s;
1460
+ }
1461
+
1462
+ .emcydocs-codeblock-copy:hover {
1463
+ color: hsl(var(--emcydocs-foreground));
1464
+ background: hsl(var(--emcydocs-accent));
1465
+ }
1466
+
1467
+ .emcydocs-codeblock-body {
1468
+ overflow-x: auto;
1469
+ padding: calc(var(--emcydocs-card-padding) * 0.75) var(--emcydocs-card-padding);
1470
+ }
1471
+
1472
+ .emcydocs-codeblock-body pre {
1473
+ margin: 0;
1474
+ padding: 0;
1475
+ border: 0;
1476
+ background: transparent;
1477
+ box-shadow: none;
1478
+ }
1479
+
1480
+ .emcydocs-codeblock-body code {
1481
+ display: block;
1482
+ font-size: 0.8125rem;
1483
+ line-height: 1.7;
1484
+ white-space: pre;
1485
+ }
1486
+
1487
+ .emcydocs-codeblock-body code[data-theme*=" "],
1488
+ .emcydocs-codeblock-body code[data-theme*=" "] span {
1489
+ color: var(--shiki-light);
1490
+ background: transparent;
1491
+ }
1492
+
1493
+ [data-emcydocs-mode="dark"] .emcydocs-codeblock-body code[data-theme*=" "],
1494
+ [data-emcydocs-mode="dark"] .emcydocs-codeblock-body code[data-theme*=" "] span {
1495
+ color: var(--shiki-dark);
1496
+ }
1497
+
1498
+ .emcydocs-codeblock-body [data-line] {
1499
+ display: block;
1500
+ min-height: 1.7em;
1501
+ }
1502
+
1503
+ /* ============================================
1504
+ Callout
1505
+ ============================================ */
1506
+
1507
+ .emcydocs-callout {
1508
+ margin: 1.5rem 0;
1509
+ padding: var(--emcydocs-card-padding);
1510
+ border: 1px solid hsl(var(--emcydocs-border-strong));
1511
+ border-left-width: 3px;
1512
+ border-radius: var(--radius);
1513
+ background: hsl(var(--emcydocs-surface));
1514
+ box-shadow: var(--emcydocs-shadow-sm);
1515
+ }
1516
+
1517
+ .emcydocs-callout[data-type="info"] {
1518
+ border-color: hsl(var(--emcydocs-info) / 0.3);
1519
+ border-left-color: hsl(var(--emcydocs-info));
1520
+ background: hsl(var(--emcydocs-info-soft));
1521
+ }
1522
+
1523
+ .emcydocs-callout[data-type="warning"] {
1524
+ border-color: hsl(var(--emcydocs-warning) / 0.3);
1525
+ border-left-color: hsl(var(--emcydocs-warning));
1526
+ background: hsl(var(--emcydocs-warning-soft));
1527
+ }
1528
+
1529
+ .emcydocs-callout[data-type="error"],
1530
+ .emcydocs-callout[data-type="danger"] {
1531
+ border-color: hsl(var(--emcydocs-error) / 0.3);
1532
+ border-left-color: hsl(var(--emcydocs-error));
1533
+ background: hsl(var(--emcydocs-error-soft));
1534
+ }
1535
+
1536
+ .emcydocs-callout[data-type="success"],
1537
+ .emcydocs-callout[data-type="tip"] {
1538
+ border-color: hsl(var(--emcydocs-success) / 0.3);
1539
+ border-left-color: hsl(var(--emcydocs-success));
1540
+ background: hsl(var(--emcydocs-success-soft));
1541
+ }
1542
+
1543
+ .emcydocs-callout-header {
1544
+ display: flex;
1545
+ align-items: center;
1546
+ gap: 0.5rem;
1547
+ margin-bottom: 0.5rem;
1548
+ }
1549
+
1550
+ .emcydocs-callout-icon {
1551
+ width: 1rem;
1552
+ height: 1rem;
1553
+ flex-shrink: 0;
1554
+ }
1555
+
1556
+ .emcydocs-callout[data-type="info"] .emcydocs-callout-icon {
1557
+ color: hsl(var(--emcydocs-info));
1558
+ }
1559
+
1560
+ .emcydocs-callout[data-type="warning"] .emcydocs-callout-icon {
1561
+ color: hsl(var(--emcydocs-warning));
1562
+ }
1563
+
1564
+ .emcydocs-callout[data-type="error"] .emcydocs-callout-icon,
1565
+ .emcydocs-callout[data-type="danger"] .emcydocs-callout-icon {
1566
+ color: hsl(var(--emcydocs-error));
1567
+ }
1568
+
1569
+ .emcydocs-callout[data-type="success"] .emcydocs-callout-icon,
1570
+ .emcydocs-callout[data-type="tip"] .emcydocs-callout-icon {
1571
+ color: hsl(var(--emcydocs-success));
1572
+ }
1573
+
1574
+ .emcydocs-callout-title {
1575
+ font-size: 0.875rem;
1576
+ font-weight: 600;
1577
+ }
1578
+
1579
+ .emcydocs-callout-content {
1580
+ font-size: 0.875rem;
1581
+ line-height: 1.6;
1582
+ color: hsl(var(--emcydocs-foreground));
1583
+ }
1584
+
1585
+ .emcydocs-callout-content > *:first-child {
1586
+ margin-top: 0;
1587
+ }
1588
+
1589
+ .emcydocs-callout-content > *:last-child {
1590
+ margin-bottom: 0;
1591
+ }
1592
+
1593
+ /* ============================================
1594
+ Tabs
1595
+ ============================================ */
1596
+
1597
+ .emcydocs-tabs {
1598
+ margin: 1.5rem 0;
1599
+ border: 1px solid hsl(var(--emcydocs-border));
1600
+ border-radius: var(--radius);
1601
+ overflow: hidden;
1602
+ }
1603
+
1604
+ .emcydocs-tabs-list {
1605
+ display: flex;
1606
+ gap: 0;
1607
+ border-bottom: 1px solid hsl(var(--emcydocs-border));
1608
+ background: transparent;
1609
+ }
1610
+
1611
+ .emcydocs-tabs-trigger {
1612
+ position: relative;
1613
+ padding: calc(var(--emcydocs-control-padding-y) + 0.125rem)
1614
+ calc(var(--emcydocs-control-padding-x) + 0.25rem);
1615
+ border: none;
1616
+ background: transparent;
1617
+ color: hsl(var(--emcydocs-muted-foreground));
1618
+ font-size: 0.8125rem;
1619
+ font-weight: 500;
1620
+ cursor: pointer;
1621
+ transition: color 0.15s;
1622
+ }
1623
+
1624
+ .emcydocs-tabs-trigger:hover {
1625
+ color: hsl(var(--emcydocs-foreground));
1626
+ }
1627
+
1628
+ .emcydocs-tabs-trigger.is-active {
1629
+ color: hsl(var(--emcydocs-foreground));
1630
+ }
1631
+
1632
+ .emcydocs-tabs-trigger.is-active::after {
1633
+ content: "";
1634
+ position: absolute;
1635
+ bottom: -1px;
1636
+ left: 0;
1637
+ right: 0;
1638
+ height: 2px;
1639
+ background: hsl(var(--emcydocs-foreground));
1640
+ }
1641
+
1642
+ .emcydocs-tabs-content {
1643
+ padding: var(--emcydocs-card-padding);
1644
+ }
1645
+
1646
+ /* ============================================
1647
+ Accordion
1648
+ ============================================ */
1649
+
1650
+ .emcydocs-accordion {
1651
+ margin: 1.5rem 0;
1652
+ border: 1px solid hsl(var(--emcydocs-border));
1653
+ border-radius: var(--radius);
1654
+ overflow: hidden;
1655
+ }
1656
+
1657
+ .emcydocs-accordion-item {
1658
+ border-bottom: 1px solid hsl(var(--emcydocs-border));
1659
+ }
1660
+
1661
+ .emcydocs-accordion-item:last-child {
1662
+ border-bottom: none;
1663
+ }
1664
+
1665
+ .emcydocs-accordion-trigger,
1666
+ .emcydocs-accordion-summary {
1667
+ display: flex;
1668
+ align-items: center;
1669
+ justify-content: space-between;
1670
+ list-style: none;
1671
+ cursor: pointer;
1672
+ width: 100%;
1673
+ padding: calc(var(--emcydocs-card-padding) * 0.875) var(--emcydocs-card-padding);
1674
+ border: none;
1675
+ background: transparent;
1676
+ color: hsl(var(--emcydocs-foreground));
1677
+ font-size: 0.875rem;
1678
+ font-weight: 500;
1679
+ text-align: left;
1680
+ cursor: pointer;
1681
+ transition: background 0.15s;
1682
+ }
1683
+
1684
+ .emcydocs-accordion-trigger:hover,
1685
+ .emcydocs-accordion-summary:hover {
1686
+ background: hsl(var(--emcydocs-muted));
1687
+ }
1688
+
1689
+ .emcydocs-accordion-trigger svg,
1690
+ .emcydocs-accordion-summary svg,
1691
+ .emcydocs-accordion-chevron {
1692
+ width: 1rem;
1693
+ height: 1rem;
1694
+ flex-shrink: 0;
1695
+ color: hsl(var(--emcydocs-muted-foreground));
1696
+ transition: transform 0.2s;
1697
+ }
1698
+
1699
+ .emcydocs-accordion-trigger[data-state="open"] svg,
1700
+ .emcydocs-accordion-item[open] .emcydocs-accordion-chevron {
1701
+ transform: rotate(180deg);
1702
+ }
1703
+
1704
+ .emcydocs-accordion-summary::-webkit-details-marker {
1705
+ display: none;
1706
+ }
1707
+
1708
+ .emcydocs-accordion-panel {
1709
+ padding: 0 var(--emcydocs-card-padding) var(--emcydocs-card-padding);
1710
+ font-size: 0.875rem;
1711
+ line-height: 1.6;
1712
+ }
1713
+
1714
+ .emcydocs-accordion-content {
1715
+ overflow: hidden;
1716
+ }
1717
+
1718
+ .emcydocs-accordion-content[data-state="closed"] {
1719
+ display: none;
1720
+ }
1721
+
1722
+ .emcydocs-accordion-content-inner {
1723
+ padding: 0 var(--emcydocs-card-padding) var(--emcydocs-card-padding);
1724
+ font-size: 0.875rem;
1725
+ line-height: 1.6;
1726
+ color: hsl(var(--emcydocs-muted-foreground));
1727
+ }
1728
+
1729
+ /* ============================================
1730
+ File Tree
1731
+ ============================================ */
1732
+
1733
+ .emcydocs-files {
1734
+ margin: 1.5rem 0;
1735
+ border: 1px solid hsl(var(--emcydocs-border));
1736
+ border-radius: var(--radius);
1737
+ overflow: hidden;
1738
+ font-size: 0.8125rem;
1739
+ }
1740
+
1741
+ .emcydocs-files-title {
1742
+ padding: calc(var(--emcydocs-card-padding) * 0.75) var(--emcydocs-card-padding);
1743
+ border-bottom: 1px solid hsl(var(--emcydocs-border));
1744
+ background: hsl(var(--emcydocs-muted));
1745
+ font-weight: 600;
1746
+ color: hsl(var(--emcydocs-foreground));
1747
+ }
1748
+
1749
+ .emcydocs-files-tree {
1750
+ padding: 0.5rem 0;
1751
+ }
1752
+
1753
+ .emcydocs-files-folder {
1754
+ /* reset native details styling */
1755
+ }
1756
+
1757
+ .emcydocs-files-folder > summary {
1758
+ list-style: none;
1759
+ }
1760
+
1761
+ .emcydocs-files-folder > summary::-webkit-details-marker {
1762
+ display: none;
1763
+ }
1764
+
1765
+ .emcydocs-files-row {
1766
+ display: flex;
1767
+ align-items: center;
1768
+ gap: 0.5rem;
1769
+ padding: 0.25rem var(--emcydocs-card-padding);
1770
+ color: hsl(var(--emcydocs-foreground));
1771
+ cursor: default;
1772
+ transition: background 0.1s;
1773
+ }
1774
+
1775
+ .emcydocs-files-row:hover {
1776
+ background: hsl(var(--emcydocs-accent));
1777
+ }
1778
+
1779
+ .emcydocs-files-row-folder {
1780
+ cursor: pointer;
1781
+ font-weight: 500;
1782
+ }
1783
+
1784
+ .emcydocs-files-glyph {
1785
+ width: 1rem;
1786
+ text-align: center;
1787
+ flex-shrink: 0;
1788
+ color: hsl(var(--emcydocs-muted-foreground));
1789
+ font-size: 0.75rem;
1790
+ }
1791
+
1792
+ .emcydocs-files-folder[open] > .emcydocs-files-row-folder .emcydocs-files-glyph {
1793
+ /* arrow rotated when open - already pointing down via ▾ character */
1794
+ }
1795
+
1796
+ .emcydocs-files-folder:not([open]) > .emcydocs-files-row-folder .emcydocs-files-glyph {
1797
+ transform: rotate(-90deg);
1798
+ }
1799
+
1800
+ .emcydocs-files-children {
1801
+ padding-left: 1rem;
1802
+ }
1803
+
1804
+ .emcydocs-files-meta {
1805
+ margin-left: auto;
1806
+ color: hsl(var(--emcydocs-muted-foreground));
1807
+ font-size: 0.75rem;
1808
+ }
1809
+
1810
+ /* ============================================
1811
+ Mermaid
1812
+ ============================================ */
1813
+
1814
+ .emcydocs-mermaid {
1815
+ margin: 1.5rem 0;
1816
+ border: 1px solid hsl(var(--emcydocs-border));
1817
+ border-radius: var(--radius);
1818
+ overflow: hidden;
1819
+ }
1820
+
1821
+ .emcydocs-mermaid-svg {
1822
+ display: flex;
1823
+ justify-content: center;
1824
+ padding: 1.5rem var(--emcydocs-card-padding);
1825
+ background: hsl(var(--emcydocs-muted));
1826
+ }
1827
+
1828
+ .emcydocs-mermaid-svg svg {
1829
+ max-width: 100%;
1830
+ height: auto;
1831
+ }
1832
+
1833
+ .emcydocs-mermaid-caption {
1834
+ padding: 0.625rem var(--emcydocs-card-padding);
1835
+ border-top: 1px solid hsl(var(--emcydocs-border));
1836
+ font-size: 0.8125rem;
1837
+ color: hsl(var(--emcydocs-muted-foreground));
1838
+ text-align: center;
1839
+ }
1840
+
1841
+ .emcydocs-mermaid-error {
1842
+ padding: var(--emcydocs-card-padding);
1843
+ color: hsl(var(--emcydocs-error));
1844
+ font-size: 0.8125rem;
1845
+ }
1846
+
1847
+ /* ============================================
1848
+ Steps
1849
+ ============================================ */
1850
+
1851
+ .emcydocs-steps {
1852
+ margin: 1.5rem 0;
1853
+ padding-left: 1rem;
1854
+ border-left: 2px solid hsl(var(--emcydocs-border));
1855
+ counter-reset: step;
1856
+ }
1857
+
1858
+ .emcydocs-step {
1859
+ position: relative;
1860
+ padding-left: 1.5rem;
1861
+ padding-bottom: 1.5rem;
1862
+ }
1863
+
1864
+ .emcydocs-step:last-child {
1865
+ padding-bottom: 0;
1866
+ }
1867
+
1868
+ .emcydocs-step::before {
1869
+ content: counter(step);
1870
+ counter-increment: step;
1871
+ position: absolute;
1872
+ left: -1.625rem;
1873
+ top: 0;
1874
+ width: 1.5rem;
1875
+ height: 1.5rem;
1876
+ display: flex;
1877
+ align-items: center;
1878
+ justify-content: center;
1879
+ border-radius: 50%;
1880
+ background: hsl(var(--emcydocs-primary));
1881
+ color: hsl(var(--emcydocs-primary-foreground));
1882
+ font-size: 0.75rem;
1883
+ font-weight: 600;
1884
+ }
1885
+
1886
+ .emcydocs-step-title {
1887
+ margin: 0 0 0.5rem;
1888
+ font-size: 0.9375rem;
1889
+ font-weight: 600;
1890
+ line-height: 1.5rem;
1891
+ color: hsl(var(--emcydocs-foreground));
1892
+ }
1893
+
1894
+ .emcydocs-step-content {
1895
+ font-size: 0.875rem;
1896
+ line-height: 1.6;
1897
+ color: hsl(var(--emcydocs-muted-foreground));
1898
+ }
1899
+
1900
+ /* ============================================
1901
+ Prev/Next Navigation
1902
+ ============================================ */
1903
+
1904
+ .emcydocs-prev-next {
1905
+ display: grid;
1906
+ grid-template-columns: repeat(2, 1fr);
1907
+ gap: 1rem;
1908
+ margin-top: 3rem;
1909
+ padding-top: 1.5rem;
1910
+ border-top: 1px solid hsl(var(--emcydocs-border));
1911
+ }
1912
+
1913
+ .emcydocs-prev-next-link {
1914
+ display: flex;
1915
+ flex-direction: column;
1916
+ gap: 0.25rem;
1917
+ padding: var(--emcydocs-card-padding);
1918
+ border: 1px solid hsl(var(--emcydocs-border));
1919
+ border-radius: var(--radius);
1920
+ transition: border-color 0.15s, background 0.15s;
1921
+ }
1922
+
1923
+ .emcydocs-prev-next-link:hover {
1924
+ border-color: hsl(var(--emcydocs-primary) / 0.35);
1925
+ background: linear-gradient(
1926
+ 135deg,
1927
+ hsl(var(--emcydocs-accent)),
1928
+ hsl(var(--emcydocs-card))
1929
+ );
1930
+ box-shadow: var(--emcydocs-shadow-glow);
1931
+ }
1932
+
1933
+ .emcydocs-prev-next-link[data-direction="next"] {
1934
+ text-align: right;
1935
+ }
1936
+
1937
+ .emcydocs-prev-next-label {
1938
+ font-size: 0.75rem;
1939
+ font-weight: 500;
1940
+ color: hsl(var(--emcydocs-muted-foreground));
1941
+ }
1942
+
1943
+ .emcydocs-prev-next-title {
1944
+ font-size: 0.875rem;
1945
+ font-weight: 600;
1946
+ color: hsl(var(--emcydocs-foreground));
1947
+ }
1948
+
1949
+ /* ============================================
1950
+ Home Page
1951
+ ============================================ */
1952
+
1953
+ .emcydocs-home {
1954
+ padding: var(--emcydocs-page-padding);
1955
+ min-width: 0;
1956
+ }
1957
+
1958
+ @media (min-width: 1024px) {
1959
+ .emcydocs-home {
1960
+ padding: 2rem 2.5rem;
1961
+ }
1962
+ }
1963
+
1964
+ /* Hero section */
1965
+ .emcydocs-home-hero {
1966
+ margin-bottom: 2.5rem;
1967
+ padding: 2rem 1.5rem 2.5rem;
1968
+ border: 1px solid hsl(var(--emcydocs-primary) / 0.12);
1969
+ border-radius: calc(var(--radius) + 4px);
1970
+ background:
1971
+ radial-gradient(ellipse 80% 60% at 0% 0%, hsl(var(--emcydocs-glow) / 0.1), transparent 55%),
1972
+ radial-gradient(ellipse 60% 50% at 100% 100%, hsl(var(--emcydocs-glow-secondary) / 0.08), transparent 50%),
1973
+ hsl(var(--emcydocs-card) / 0.65);
1974
+ box-shadow: var(--emcydocs-shadow-sm);
1975
+ backdrop-filter: blur(8px);
1976
+ }
1977
+
1978
+ .emcydocs-home-hero-main {
1979
+ max-width: var(--emcydocs-content-width);
1980
+ }
1981
+
1982
+ .emcydocs-home-hero-main h1 {
1983
+ margin: 0;
1984
+ font-size: clamp(1.875rem, 4vw, 2.75rem);
1985
+ font-weight: 700;
1986
+ line-height: 1.1;
1987
+ letter-spacing: -0.03em;
1988
+ background: linear-gradient(
1989
+ 135deg,
1990
+ hsl(var(--emcydocs-foreground)),
1991
+ hsl(var(--emcydocs-primary))
1992
+ );
1993
+ -webkit-background-clip: text;
1994
+ background-clip: text;
1995
+ color: transparent;
1996
+ }
1997
+
1998
+ .emcydocs-home-hero-main > p {
1999
+ margin-top: 0.875rem;
2000
+ max-width: 38rem;
2001
+ font-size: 1.0625rem;
2002
+ line-height: 1.65;
2003
+ color: hsl(var(--emcydocs-muted-foreground));
2004
+ }
2005
+
2006
+ /* Home content */
2007
+ .emcydocs-home-content {
2008
+ max-width: var(--emcydocs-content-width);
2009
+ margin-bottom: 2.5rem;
2010
+ font-size: 0.9375rem;
2011
+ line-height: 1.75;
2012
+ color: hsl(var(--emcydocs-foreground));
2013
+ }
2014
+
2015
+ /* Home grid */
2016
+ .emcydocs-home-grid {
2017
+ display: grid;
2018
+ gap: 1rem;
2019
+ }
2020
+
2021
+ @media (min-width: 768px) {
2022
+ .emcydocs-home-grid {
2023
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2024
+ }
2025
+ }
2026
+
2027
+ @media (min-width: 1280px) {
2028
+ .emcydocs-home-grid {
2029
+ grid-template-columns: repeat(3, minmax(0, 1fr));
2030
+ }
2031
+ }
2032
+
2033
+ /* Home cards */
2034
+ .emcydocs-home-card {
2035
+ display: flex;
2036
+ flex-direction: column;
2037
+ min-width: 0;
2038
+ overflow: hidden;
2039
+ padding: var(--emcydocs-card-padding);
2040
+ border: 1px solid hsl(var(--emcydocs-border));
2041
+ border-radius: calc(var(--radius) + 2px);
2042
+ background: hsl(var(--emcydocs-card) / 0.7);
2043
+ backdrop-filter: blur(6px);
2044
+ transition: border-color 0.2s, box-shadow 0.2s, transform 0.2s;
2045
+ }
2046
+
2047
+ .emcydocs-home-card:hover {
2048
+ border-color: hsl(var(--emcydocs-primary) / 0.3);
2049
+ box-shadow: var(--emcydocs-shadow-glow);
2050
+ transform: translateY(-2px);
2051
+ }
2052
+
2053
+ .emcydocs-home-card-head {
2054
+ display: flex;
2055
+ align-items: center;
2056
+ justify-content: space-between;
2057
+ gap: 0.75rem;
2058
+ margin-bottom: 0.625rem;
2059
+ }
2060
+
2061
+ .emcydocs-home-card-heading {
2062
+ display: flex;
2063
+ align-items: center;
2064
+ gap: 0.625rem;
2065
+ }
2066
+
2067
+ .emcydocs-home-card-icon {
2068
+ display: flex;
2069
+ align-items: center;
2070
+ justify-content: center;
2071
+ width: 2rem;
2072
+ height: 2rem;
2073
+ flex-shrink: 0;
2074
+ border-radius: var(--radius);
2075
+ background: linear-gradient(
2076
+ 135deg,
2077
+ hsl(var(--emcydocs-primary) / 0.2),
2078
+ hsl(var(--emcydocs-glow-secondary) / 0.12)
2079
+ );
2080
+ box-shadow: 0 0 20px hsl(var(--emcydocs-glow) / 0.15);
2081
+ }
2082
+
2083
+ .emcydocs-home-card-icon span {
2084
+ display: flex;
2085
+ align-items: center;
2086
+ justify-content: center;
2087
+ }
2088
+
2089
+ .emcydocs-home-card-icon svg {
2090
+ width: 1rem;
2091
+ height: 1rem;
2092
+ color: hsl(var(--emcydocs-primary));
2093
+ }
2094
+
2095
+ .emcydocs-home-card-eyebrow {
2096
+ margin: 0;
2097
+ font-size: 0.625rem;
2098
+ font-weight: 600;
2099
+ color: hsl(var(--emcydocs-muted-foreground));
2100
+ text-transform: uppercase;
2101
+ letter-spacing: 0.04em;
2102
+ }
2103
+
2104
+ .emcydocs-home-card-heading h2 {
2105
+ margin: 0;
2106
+ font-size: 0.8125rem;
2107
+ font-weight: 600;
2108
+ color: hsl(var(--emcydocs-foreground));
2109
+ }
2110
+
2111
+ .emcydocs-home-card-count {
2112
+ font-size: 0.6875rem;
2113
+ font-weight: 500;
2114
+ color: hsl(var(--emcydocs-muted-foreground));
2115
+ white-space: nowrap;
2116
+ }
2117
+
2118
+ .emcydocs-home-card-summary {
2119
+ margin: 0 0 0.75rem;
2120
+ font-size: 0.8125rem;
2121
+ line-height: 1.55;
2122
+ color: hsl(var(--emcydocs-muted-foreground));
2123
+ }
2124
+
2125
+ .emcydocs-home-card-links {
2126
+ display: grid;
2127
+ gap: 0;
2128
+ flex: 1;
2129
+ margin: 0 calc(var(--emcydocs-card-padding) * -1);
2130
+ border-top: 1px solid hsl(var(--emcydocs-border));
2131
+ }
2132
+
2133
+ .emcydocs-home-card-link {
2134
+ display: flex;
2135
+ align-items: center;
2136
+ justify-content: space-between;
2137
+ gap: 0.75rem;
2138
+ padding: 0.5rem var(--emcydocs-card-padding);
2139
+ border-bottom: 1px solid hsl(var(--emcydocs-border));
2140
+ transition: background 0.1s;
2141
+ }
2142
+
2143
+ .emcydocs-home-card-link:last-child {
2144
+ border-bottom: none;
2145
+ }
2146
+
2147
+ .emcydocs-home-card-link:hover {
2148
+ background: hsl(var(--emcydocs-muted));
2149
+ }
2150
+
2151
+ .emcydocs-home-card-link > div {
2152
+ min-width: 0;
2153
+ }
2154
+
2155
+ .emcydocs-home-card-link strong {
2156
+ display: block;
2157
+ font-size: 0.8125rem;
2158
+ font-weight: 600;
2159
+ color: hsl(var(--emcydocs-foreground));
2160
+ }
2161
+
2162
+ .emcydocs-home-card-link span {
2163
+ display: block;
2164
+ margin-top: 0.0625rem;
2165
+ font-size: 0.75rem;
2166
+ line-height: 1.4;
2167
+ color: hsl(var(--emcydocs-muted-foreground));
2168
+ overflow: hidden;
2169
+ text-overflow: ellipsis;
2170
+ white-space: nowrap;
2171
+ }
2172
+
2173
+ .emcydocs-home-card-link > svg {
2174
+ width: 0.75rem;
2175
+ height: 0.75rem;
2176
+ flex-shrink: 0;
2177
+ color: hsl(var(--emcydocs-muted-foreground));
2178
+ }
2179
+
2180
+ .emcydocs-home-card-more {
2181
+ display: block;
2182
+ padding: 0.5rem var(--emcydocs-card-padding);
2183
+ margin: 0 calc(var(--emcydocs-card-padding) * -1) calc(var(--emcydocs-card-padding) * -1);
2184
+ border-top: 1px solid hsl(var(--emcydocs-border));
2185
+ font-size: 0.75rem;
2186
+ font-weight: 500;
2187
+ color: hsl(var(--emcydocs-muted-foreground));
2188
+ transition: background 0.1s, color 0.1s;
2189
+ }
2190
+
2191
+ .emcydocs-home-card-more:hover {
2192
+ background: hsl(var(--emcydocs-muted));
2193
+ color: hsl(var(--emcydocs-foreground));
2194
+ }
2195
+
2196
+ /* ============================================
2197
+ Copy Button (inline, e.g. code blocks)
2198
+ ============================================ */
2199
+
2200
+ .emcydocs-copy-btn {
2201
+ display: inline-flex;
2202
+ align-items: center;
2203
+ justify-content: center;
2204
+ width: 2rem;
2205
+ height: 2rem;
2206
+ border: 1px solid hsl(var(--emcydocs-border));
2207
+ border-radius: var(--radius);
2208
+ background: hsl(var(--emcydocs-background));
2209
+ color: hsl(var(--emcydocs-muted-foreground));
2210
+ cursor: pointer;
2211
+ transition: color 0.15s, background 0.15s, border-color 0.15s;
2212
+ }
2213
+
2214
+ .emcydocs-copy-btn:hover {
2215
+ color: hsl(var(--emcydocs-foreground));
2216
+ background: hsl(var(--emcydocs-accent));
2217
+ }
2218
+
2219
+ .emcydocs-copy-btn svg {
2220
+ width: 1rem;
2221
+ height: 1rem;
2222
+ }
2223
+
2224
+ /* ============================================
2225
+ Copy Page Menu
2226
+ ============================================ */
2227
+
2228
+ .emcydocs-copymenu {
2229
+ position: relative;
2230
+ }
2231
+
2232
+ .emcydocs-copymenu-trigger {
2233
+ display: inline-flex;
2234
+ align-items: center;
2235
+ gap: 0.375rem;
2236
+ padding: var(--emcydocs-control-padding-y) var(--emcydocs-control-padding-x);
2237
+ border: 1px solid hsl(var(--emcydocs-border));
2238
+ border-radius: var(--radius);
2239
+ background: hsl(var(--emcydocs-surface));
2240
+ color: hsl(var(--emcydocs-muted-foreground));
2241
+ font-size: 0.8125rem;
2242
+ font-weight: 500;
2243
+ cursor: pointer;
2244
+ transition: color 0.15s, background 0.15s, border-color 0.15s;
2245
+ }
2246
+
2247
+ .emcydocs-copymenu-trigger:hover {
2248
+ color: hsl(var(--emcydocs-foreground));
2249
+ background: hsl(var(--emcydocs-accent));
2250
+ border-color: hsl(var(--emcydocs-border));
2251
+ }
2252
+
2253
+ .emcydocs-copymenu-trigger > svg {
2254
+ width: 0.875rem;
2255
+ height: 0.875rem;
2256
+ flex-shrink: 0;
2257
+ }
2258
+
2259
+ .emcydocs-copymenu-chevron {
2260
+ width: 0.75rem !important;
2261
+ height: 0.75rem !important;
2262
+ transition: transform 0.2s;
2263
+ }
2264
+
2265
+ .emcydocs-copymenu-chevron[data-open="true"] {
2266
+ transform: rotate(180deg);
2267
+ }
2268
+
2269
+ .emcydocs-copymenu-panel {
2270
+ position: absolute;
2271
+ right: 0;
2272
+ top: calc(100% + 0.375rem);
2273
+ z-index: 50;
2274
+ display: flex;
2275
+ flex-direction: column;
2276
+ width: 17rem;
2277
+ padding: calc(var(--emcydocs-control-padding-y) * 0.75);
2278
+ border: 1px solid hsl(var(--emcydocs-border));
2279
+ border-radius: calc(var(--radius) + 2px);
2280
+ background: hsl(var(--emcydocs-popover));
2281
+ box-shadow: var(--emcydocs-shadow-lg);
2282
+ animation: emcydocs-copymenu-in 0.15s ease-out;
2283
+ }
2284
+
2285
+ @keyframes emcydocs-copymenu-in {
2286
+ from { opacity: 0; transform: translateY(-4px) scale(0.98); }
2287
+ to { opacity: 1; transform: translateY(0) scale(1); }
2288
+ }
2289
+
2290
+ .emcydocs-copymenu-item {
2291
+ display: flex;
2292
+ align-items: center;
2293
+ gap: 0.75rem;
2294
+ width: 100%;
2295
+ padding: var(--emcydocs-control-padding-y) var(--emcydocs-control-padding-x);
2296
+ border: none;
2297
+ border-radius: var(--radius);
2298
+ background: transparent;
2299
+ color: hsl(var(--emcydocs-foreground));
2300
+ text-align: left;
2301
+ text-decoration: none;
2302
+ cursor: pointer;
2303
+ transition: background 0.12s;
2304
+ }
2305
+
2306
+ .emcydocs-copymenu-item:hover {
2307
+ background: hsl(var(--emcydocs-accent));
2308
+ }
2309
+
2310
+ .emcydocs-copymenu-icon {
2311
+ display: flex;
2312
+ align-items: center;
2313
+ justify-content: center;
2314
+ width: 2.25rem;
2315
+ height: 2.25rem;
2316
+ flex-shrink: 0;
2317
+ border-radius: calc(var(--radius) - 1px);
2318
+ background: hsl(var(--emcydocs-surface));
2319
+ color: hsl(var(--emcydocs-muted-foreground));
2320
+ }
2321
+
2322
+ .emcydocs-copymenu-icon svg {
2323
+ width: 1rem;
2324
+ height: 1rem;
2325
+ }
2326
+
2327
+ .emcydocs-copymenu-icon-accent {
2328
+ background: hsl(var(--emcydocs-primary) / 0.1);
2329
+ color: hsl(var(--emcydocs-primary));
2330
+ }
2331
+
2332
+ .emcydocs-copymenu-text {
2333
+ display: flex;
2334
+ flex-direction: column;
2335
+ gap: 0.0625rem;
2336
+ min-width: 0;
2337
+ }
2338
+
2339
+ .emcydocs-copymenu-title {
2340
+ display: flex;
2341
+ align-items: center;
2342
+ gap: 0.25rem;
2343
+ font-size: 0.8125rem;
2344
+ font-weight: 500;
2345
+ line-height: 1.3;
2346
+ }
2347
+
2348
+ .emcydocs-copymenu-desc {
2349
+ font-size: 0.6875rem;
2350
+ color: hsl(var(--emcydocs-muted-foreground));
2351
+ line-height: 1.3;
2352
+ }
2353
+
2354
+ .emcydocs-copymenu-external {
2355
+ width: 0.75rem;
2356
+ height: 0.75rem;
2357
+ opacity: 0.5;
2358
+ }
2359
+
2360
+
2361
+ .emcydocs-theme-dot.is-active {
2362
+ border-color: hsl(var(--emcydocs-foreground));
2363
+ }
2364
+
2365
+ /* ============================================
2366
+ Theme Editor (popout panel)
2367
+ ============================================ */
2368
+
2369
+ .emcydocs-te-trigger {
2370
+ display: inline-flex;
2371
+ align-items: center;
2372
+ gap: 0.5rem;
2373
+ width: 100%;
2374
+ padding: 0.5rem 0.625rem;
2375
+ border: 1px solid hsl(var(--emcydocs-border));
2376
+ border-radius: var(--radius);
2377
+ background: hsl(var(--emcydocs-background));
2378
+ color: hsl(var(--emcydocs-foreground));
2379
+ font-size: 0.8125rem;
2380
+ font-weight: 500;
2381
+ cursor: pointer;
2382
+ transition: background 0.15s, border-color 0.15s;
2383
+ }
2384
+
2385
+ .emcydocs-te-trigger:hover {
2386
+ background: hsl(var(--emcydocs-accent));
2387
+ }
2388
+
2389
+ .emcydocs-te-dot {
2390
+ width: 1rem;
2391
+ height: 1rem;
2392
+ border-radius: 50%;
2393
+ flex-shrink: 0;
2394
+ }
2395
+
2396
+ .emcydocs-te-chevron {
2397
+ width: 0.875rem;
2398
+ height: 0.875rem;
2399
+ margin-left: auto;
2400
+ flex-shrink: 0;
2401
+ transition: transform 0.2s;
2402
+ }
2403
+
2404
+ .emcydocs-te-chevron[data-open="true"] {
2405
+ transform: rotate(180deg);
2406
+ }
2407
+
2408
+ .emcydocs-te-backdrop {
2409
+ position: fixed;
2410
+ inset: 0;
2411
+ z-index: 9998;
2412
+ }
2413
+
2414
+ .emcydocs-te-panel {
2415
+ position: fixed;
2416
+ z-index: 9999;
2417
+ top: var(--emcydocs-header-height, 3.5rem);
2418
+ left: var(--emcydocs-sidebar-width, 16rem);
2419
+ width: 36rem;
2420
+ max-width: calc(100vw - 2rem);
2421
+ max-height: calc(100vh - var(--emcydocs-header-height, 3.5rem) - 1rem);
2422
+ overflow-y: auto;
2423
+ margin: 1rem 0 0 1.5rem;
2424
+ padding: 1.25rem;
2425
+ border: 1px solid hsl(var(--emcydocs-border));
2426
+ border-radius: calc(var(--radius) + 4px);
2427
+ background: hsl(var(--emcydocs-background));
2428
+ box-shadow:
2429
+ 0 8px 40px hsl(var(--emcydocs-foreground) / 0.08),
2430
+ 0 2px 8px hsl(var(--emcydocs-foreground) / 0.04);
2431
+ animation: emcydocs-te-in 0.2s ease-out;
2432
+ }
2433
+
2434
+ @keyframes emcydocs-te-in {
2435
+ from {
2436
+ opacity: 0;
2437
+ transform: translateX(-8px);
2438
+ }
2439
+ to {
2440
+ opacity: 1;
2441
+ transform: translateX(0);
2442
+ }
2443
+ }
2444
+
2445
+ /* On smaller screens, center the panel */
2446
+ @media (max-width: 1023px) {
2447
+ .emcydocs-te-panel {
2448
+ top: 50%;
2449
+ left: 50%;
2450
+ transform: translate(-50%, -50%);
2451
+ margin: 0;
2452
+ width: calc(100vw - 2rem);
2453
+ max-height: calc(100vh - 4rem);
2454
+ }
2455
+
2456
+ .emcydocs-te-backdrop {
2457
+ background: hsl(var(--emcydocs-foreground) / 0.2);
2458
+ backdrop-filter: blur(2px);
2459
+ }
2460
+
2461
+ @keyframes emcydocs-te-in {
2462
+ from {
2463
+ opacity: 0;
2464
+ transform: translate(-50%, -50%) scale(0.96);
2465
+ }
2466
+ to {
2467
+ opacity: 1;
2468
+ transform: translate(-50%, -50%) scale(1);
2469
+ }
2470
+ }
2471
+ }
2472
+
2473
+ .emcydocs-te-header {
2474
+ display: flex;
2475
+ align-items: flex-start;
2476
+ justify-content: space-between;
2477
+ gap: 1rem;
2478
+ margin-bottom: 1rem;
2479
+ padding-bottom: 0.75rem;
2480
+ border-bottom: 1px solid hsl(var(--emcydocs-border));
2481
+ }
2482
+
2483
+ .emcydocs-te-title {
2484
+ font-size: 0.875rem;
2485
+ font-weight: 600;
2486
+ color: hsl(var(--emcydocs-foreground));
2487
+ }
2488
+
2489
+ .emcydocs-te-subtitle {
2490
+ font-size: 0.6875rem;
2491
+ color: hsl(var(--emcydocs-muted-foreground));
2492
+ margin-top: 0.125rem;
2493
+ }
2494
+
2495
+ .emcydocs-te-actions {
2496
+ display: flex;
2497
+ gap: 0.25rem;
2498
+ flex-shrink: 0;
2499
+ }
2500
+
2501
+ .emcydocs-te-action {
2502
+ display: inline-flex;
2503
+ align-items: center;
2504
+ justify-content: center;
2505
+ width: 1.75rem;
2506
+ height: 1.75rem;
2507
+ border: 1px solid hsl(var(--emcydocs-border));
2508
+ border-radius: calc(var(--radius) - 1px);
2509
+ background: transparent;
2510
+ color: hsl(var(--emcydocs-muted-foreground));
2511
+ cursor: pointer;
2512
+ transition: background 0.15s, color 0.15s;
2513
+ }
2514
+
2515
+ .emcydocs-te-action:hover {
2516
+ background: hsl(var(--emcydocs-accent));
2517
+ color: hsl(var(--emcydocs-foreground));
2518
+ }
2519
+
2520
+ .emcydocs-te-action svg {
2521
+ width: 0.875rem;
2522
+ height: 0.875rem;
2523
+ }
2524
+
2525
+ /* Controls grid - 2 columns on wide panels */
2526
+ .emcydocs-te-grid {
2527
+ display: grid;
2528
+ grid-template-columns: 1fr 1fr;
2529
+ gap: 0.875rem 1.5rem;
2530
+ }
2531
+
2532
+ @media (max-width: 480px) {
2533
+ .emcydocs-te-grid {
2534
+ grid-template-columns: 1fr;
2535
+ }
2536
+ }
2537
+
2538
+ .emcydocs-te-field {
2539
+ display: flex;
2540
+ flex-direction: column;
2541
+ gap: 0.375rem;
2542
+ }
2543
+
2544
+ .emcydocs-te-label {
2545
+ font-size: 0.6875rem;
2546
+ font-weight: 500;
2547
+ color: hsl(var(--emcydocs-muted-foreground));
2548
+ }
2549
+
2550
+ .emcydocs-te-chips {
2551
+ display: flex;
2552
+ flex-wrap: wrap;
2553
+ gap: 0.25rem;
2554
+ }
2555
+
2556
+ .emcydocs-te-chip {
2557
+ padding: 0.25rem 0.5rem;
2558
+ border: 1px solid hsl(var(--emcydocs-border));
2559
+ border-radius: calc(var(--radius) - 1px);
2560
+ background: hsl(var(--emcydocs-background));
2561
+ color: hsl(var(--emcydocs-muted-foreground));
2562
+ font-size: 0.6875rem;
2563
+ font-weight: 500;
2564
+ cursor: pointer;
2565
+ transition: all 0.12s;
2566
+ }
2567
+
2568
+ .emcydocs-te-chip:hover {
2569
+ background: hsl(var(--emcydocs-accent));
2570
+ color: hsl(var(--emcydocs-foreground));
2571
+ }
2572
+
2573
+ .emcydocs-te-chip.is-active {
2574
+ background: hsl(var(--emcydocs-foreground));
2575
+ color: hsl(var(--emcydocs-background));
2576
+ border-color: hsl(var(--emcydocs-foreground));
2577
+ }
2578
+
2579
+ .emcydocs-te-hues {
2580
+ display: flex;
2581
+ flex-wrap: wrap;
2582
+ gap: 0.375rem;
2583
+ }
2584
+
2585
+ .emcydocs-te-hue {
2586
+ width: 1.375rem;
2587
+ height: 1.375rem;
2588
+ border: 2px solid transparent;
2589
+ border-radius: 50%;
2590
+ cursor: pointer;
2591
+ transition: transform 0.15s, border-color 0.15s;
2592
+ }
2593
+
2594
+ .emcydocs-te-hue:hover {
2595
+ transform: scale(1.15);
2596
+ }
2597
+
2598
+ .emcydocs-te-hue.is-active {
2599
+ border-color: hsl(var(--emcydocs-foreground));
2600
+ }
2601
+
2602
+ .emcydocs-te-json {
2603
+ margin-top: 0.875rem;
2604
+ padding-top: 0.75rem;
2605
+ border-top: 1px solid hsl(var(--emcydocs-border));
2606
+ }
2607
+
2608
+ .emcydocs-te-json pre {
2609
+ max-height: 8rem;
2610
+ overflow: auto;
2611
+ padding: 0.625rem;
2612
+ border-radius: calc(var(--radius) - 1px);
2613
+ background: hsl(var(--emcydocs-muted));
2614
+ font-size: 0.6875rem;
2615
+ line-height: 1.5;
2616
+ color: hsl(var(--emcydocs-muted-foreground));
2617
+ }
2618
+
2619
+ /* ============================================
2620
+ Language Switcher (library component)
2621
+ ============================================ */
2622
+
2623
+ .emcydocs-lang-switcher {
2624
+ display: inline-flex;
2625
+ align-items: center;
2626
+ gap: 0.125rem;
2627
+ padding: 0.25rem;
2628
+ border: 1px solid hsl(var(--emcydocs-border));
2629
+ border-radius: var(--radius);
2630
+ background: hsl(var(--emcydocs-muted));
2631
+ }
2632
+
2633
+ .emcydocs-lang-btn {
2634
+ padding: 0.375rem 0.625rem;
2635
+ border: none;
2636
+ border-radius: calc(var(--radius) - 2px);
2637
+ background: transparent;
2638
+ color: hsl(var(--emcydocs-muted-foreground));
2639
+ font-size: 0.75rem;
2640
+ font-weight: 600;
2641
+ text-transform: uppercase;
2642
+ cursor: pointer;
2643
+ transition: color 0.15s, background 0.15s;
2644
+ }
2645
+
2646
+ .emcydocs-lang-btn:hover {
2647
+ color: hsl(var(--emcydocs-foreground));
2648
+ }
2649
+
2650
+ .emcydocs-lang-btn.is-active {
2651
+ background: hsl(var(--emcydocs-background));
2652
+ color: hsl(var(--emcydocs-foreground));
2653
+ box-shadow: 0 1px 3px hsl(var(--emcydocs-foreground) / 0.1);
2654
+ }
2655
+
2656
+ /* ============================================
2657
+ Heading Links
2658
+ ============================================ */
2659
+
2660
+ .emcydocs-heading-link {
2661
+ position: relative;
2662
+ color: inherit;
2663
+ text-decoration: none;
2664
+ }
2665
+
2666
+ .emcydocs-heading-link:hover::before {
2667
+ content: "#";
2668
+ position: absolute;
2669
+ left: -1.25em;
2670
+ color: hsl(var(--emcydocs-muted-foreground));
2671
+ font-weight: 400;
2672
+ }
2673
+
2674
+ /* ============================================
2675
+ Inline TOC
2676
+ ============================================ */
2677
+
2678
+ .emcydocs-inline-toc {
2679
+ margin: 1.5rem 0;
2680
+ padding: 1rem;
2681
+ border: 1px solid hsl(var(--emcydocs-border));
2682
+ border-radius: var(--radius);
2683
+ background: hsl(var(--emcydocs-card));
2684
+ }
2685
+
2686
+ .emcydocs-inline-toc-title {
2687
+ margin-bottom: 0.75rem;
2688
+ font-size: 0.75rem;
2689
+ font-weight: 600;
2690
+ color: hsl(var(--emcydocs-muted-foreground));
2691
+ text-transform: uppercase;
2692
+ letter-spacing: 0.02em;
2693
+ }
2694
+
2695
+ .emcydocs-inline-toc-list {
2696
+ display: grid;
2697
+ gap: 0.25rem;
2698
+ }
2699
+
2700
+ .emcydocs-inline-toc-link {
2701
+ display: block;
2702
+ padding: 0.375rem 0.5rem;
2703
+ border-radius: calc(var(--radius) - 2px);
2704
+ color: hsl(var(--emcydocs-muted-foreground));
2705
+ font-size: 0.8125rem;
2706
+ transition: color 0.15s, background 0.15s;
2707
+ }
2708
+
2709
+ .emcydocs-inline-toc-link:hover {
2710
+ color: hsl(var(--emcydocs-foreground));
2711
+ background: hsl(var(--emcydocs-accent));
2712
+ }
2713
+
2714
+ /* ============================================
2715
+ Banner (MDX Component)
2716
+ ============================================ */
2717
+
2718
+ .emcydocs-banner {
2719
+ display: flex;
2720
+ flex-direction: column;
2721
+ gap: 1rem;
2722
+ margin: 1.5rem 0;
2723
+ padding: var(--emcydocs-card-padding) calc(var(--emcydocs-card-padding) + 0.25rem);
2724
+ border: 1px solid hsl(var(--emcydocs-border));
2725
+ border-radius: var(--radius);
2726
+ background: transparent;
2727
+ }
2728
+
2729
+ @media (min-width: 640px) {
2730
+ .emcydocs-banner {
2731
+ flex-direction: row;
2732
+ align-items: flex-start;
2733
+ justify-content: space-between;
2734
+ gap: 1.5rem;
2735
+ }
2736
+ }
2737
+
2738
+ .emcydocs-banner-link {
2739
+ text-decoration: none;
2740
+ transition: border-color 0.15s, background 0.15s;
2741
+ }
2742
+
2743
+ .emcydocs-banner-link:hover {
2744
+ border-color: hsl(var(--emcydocs-foreground) / 0.2);
2745
+ box-shadow: var(--emcydocs-shadow-sm);
2746
+ }
2747
+
2748
+ .emcydocs-banner-copy {
2749
+ flex: 1;
2750
+ min-width: 0;
2751
+ }
2752
+
2753
+ .emcydocs-banner-eyebrow {
2754
+ display: block;
2755
+ margin-bottom: 0.375rem;
2756
+ font-size: 0.6875rem;
2757
+ font-weight: 600;
2758
+ color: hsl(var(--emcydocs-muted-foreground));
2759
+ text-transform: uppercase;
2760
+ letter-spacing: 0.04em;
2761
+ }
2762
+
2763
+ .emcydocs-banner-title-row {
2764
+ display: flex;
2765
+ align-items: center;
2766
+ gap: 0.5rem;
2767
+ }
2768
+
2769
+ .emcydocs-banner-icon {
2770
+ display: flex;
2771
+ align-items: center;
2772
+ justify-content: center;
2773
+ flex-shrink: 0;
2774
+ }
2775
+
2776
+ .emcydocs-banner-icon svg {
2777
+ width: 1.25rem;
2778
+ height: 1.25rem;
2779
+ }
2780
+
2781
+ .emcydocs-banner-title {
2782
+ margin: 0;
2783
+ font-size: 1rem;
2784
+ font-weight: 600;
2785
+ color: hsl(var(--emcydocs-foreground));
2786
+ }
2787
+
2788
+ .emcydocs-banner-body {
2789
+ margin-top: 0.5rem;
2790
+ font-size: 0.8125rem;
2791
+ line-height: 1.55;
2792
+ color: hsl(var(--emcydocs-muted-foreground));
2793
+ }
2794
+
2795
+ .emcydocs-banner-action {
2796
+ display: inline-flex;
2797
+ align-items: center;
2798
+ gap: 0.375rem;
2799
+ flex-shrink: 0;
2800
+ font-size: 0.8125rem;
2801
+ font-weight: 600;
2802
+ color: hsl(var(--emcydocs-foreground));
2803
+ white-space: nowrap;
2804
+ }
2805
+
2806
+ .emcydocs-banner-action svg {
2807
+ width: 1rem;
2808
+ height: 1rem;
2809
+ }
2810
+
2811
+ .emcydocs-banner-link:hover .emcydocs-banner-action svg {
2812
+ transform: translateX(2px);
2813
+ transition: transform 0.15s;
2814
+ }
2815
+
2816
+ /* ============================================
2817
+ Card (MDX Component)
2818
+ ============================================ */
2819
+
2820
+ .emcydocs-card {
2821
+ display: flex;
2822
+ align-items: flex-start;
2823
+ gap: 0.75rem;
2824
+ padding: var(--emcydocs-card-padding);
2825
+ border: 1px solid hsl(var(--emcydocs-border));
2826
+ border-radius: var(--radius);
2827
+ background: transparent;
2828
+ transition: border-color 0.15s, box-shadow 0.15s;
2829
+ }
2830
+
2831
+ .emcydocs-card-link {
2832
+ text-decoration: none;
2833
+ }
2834
+
2835
+ .emcydocs-card-link:hover {
2836
+ border-color: hsl(var(--emcydocs-foreground) / 0.2);
2837
+ box-shadow: var(--emcydocs-shadow-sm);
2838
+ }
2839
+
2840
+ .emcydocs-card-link:hover .emcydocs-card-arrow {
2841
+ color: hsl(var(--emcydocs-foreground));
2842
+ }
2843
+
2844
+ .emcydocs-card-icon {
2845
+ display: flex;
2846
+ align-items: center;
2847
+ justify-content: center;
2848
+ width: 2rem;
2849
+ height: 2rem;
2850
+ flex-shrink: 0;
2851
+ border-radius: calc(var(--radius) - 2px);
2852
+ background: hsl(var(--emcydocs-muted));
2853
+ }
2854
+
2855
+ .emcydocs-card-icon svg {
2856
+ width: 1rem;
2857
+ height: 1rem;
2858
+ color: hsl(var(--emcydocs-muted-foreground));
2859
+ }
2860
+
2861
+ .emcydocs-card-content {
2862
+ flex: 1;
2863
+ min-width: 0;
2864
+ }
2865
+
2866
+ .emcydocs-card-title {
2867
+ margin: 0;
2868
+ font-size: 0.875rem;
2869
+ font-weight: 600;
2870
+ letter-spacing: -0.01em;
2871
+ color: hsl(var(--emcydocs-foreground));
2872
+ }
2873
+
2874
+ .emcydocs-card-description {
2875
+ margin: 0.375rem 0 0;
2876
+ font-size: 0.8125rem;
2877
+ line-height: 1.6;
2878
+ color: hsl(var(--emcydocs-muted-foreground));
2879
+ }
2880
+
2881
+ .emcydocs-card-arrow {
2882
+ width: 0.875rem;
2883
+ height: 0.875rem;
2884
+ flex-shrink: 0;
2885
+ margin-top: 0.0625rem;
2886
+ color: hsl(var(--emcydocs-muted-foreground));
2887
+ transition: transform 0.15s;
2888
+ }
2889
+
2890
+ .emcydocs-card-link:hover .emcydocs-card-arrow {
2891
+ transform: translateX(2px);
2892
+ }
2893
+
2894
+ .emcydocs-card-grid {
2895
+ display: grid;
2896
+ gap: 1rem;
2897
+ margin: 1.5rem 0;
2898
+ }
2899
+
2900
+ .emcydocs-card-grid-1 {
2901
+ grid-template-columns: 1fr;
2902
+ }
2903
+
2904
+ .emcydocs-card-grid-2 {
2905
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
2906
+ }
2907
+
2908
+ .emcydocs-card-grid-3 {
2909
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr));
2910
+ }
2911
+
2912
+ /* ============================================
2913
+ Blog
2914
+ ============================================ */
2915
+
2916
+ .emcydocs-blog-directory,
2917
+ .emcydocs-blog-post {
2918
+ width: min(100%, 87.5rem);
2919
+ margin: 0 auto;
2920
+ padding: 2rem 1.5rem 4rem;
2921
+ }
2922
+
2923
+ .emcydocs-blog-empty,
2924
+ .emcydocs-blog-suggested {
2925
+ border: 1px solid hsl(var(--emcydocs-border));
2926
+ border-radius: var(--radius);
2927
+ background: hsl(var(--emcydocs-card));
2928
+ box-shadow: var(--emcydocs-shadow-sm);
2929
+ }
2930
+
2931
+ .emcydocs-blog-directory-hero {
2932
+ padding: 0 0 0.5rem;
2933
+ }
2934
+
2935
+ .emcydocs-blog-empty,
2936
+ .emcydocs-blog-suggested {
2937
+ padding: 1.5rem;
2938
+ }
2939
+
2940
+ .emcydocs-blog-post-article {
2941
+ padding: 0;
2942
+ }
2943
+
2944
+ .emcydocs-blog-directory-hero h1,
2945
+ .emcydocs-blog-post-header h1,
2946
+ .emcydocs-blog-suggested h2,
2947
+ .emcydocs-blog-empty h2 {
2948
+ margin: 0;
2949
+ font-size: clamp(2rem, 4vw, 3rem);
2950
+ line-height: 1.05;
2951
+ letter-spacing: -0.03em;
2952
+ }
2953
+
2954
+ .emcydocs-blog-directory-hero p,
2955
+ .emcydocs-blog-post-header > p,
2956
+ .emcydocs-blog-suggested p,
2957
+ .emcydocs-blog-empty p {
2958
+ margin: 0.75rem 0 0;
2959
+ max-width: 44rem;
2960
+ color: hsl(var(--emcydocs-muted-foreground));
2961
+ line-height: 1.7;
2962
+ }
2963
+
2964
+ .emcydocs-blog-directory-controls {
2965
+ display: grid;
2966
+ gap: 1rem;
2967
+ margin-top: 1.5rem;
2968
+ }
2969
+
2970
+ .emcydocs-blog-directory-panel {
2971
+ padding: 0;
2972
+ }
2973
+
2974
+ .emcydocs-blog-directory-heading h2 {
2975
+ margin: 0 0 0.875rem;
2976
+ font-size: 0.95rem;
2977
+ font-weight: 600;
2978
+ }
2979
+
2980
+ .emcydocs-blog-search-form {
2981
+ display: block;
2982
+ }
2983
+
2984
+ .emcydocs-blog-search-input-wrap {
2985
+ position: relative;
2986
+ }
2987
+
2988
+ .emcydocs-blog-search-icon {
2989
+ position: absolute;
2990
+ top: 50%;
2991
+ left: 0.875rem;
2992
+ width: 1rem;
2993
+ height: 1rem;
2994
+ transform: translateY(-50%);
2995
+ color: hsl(var(--emcydocs-muted-foreground));
2996
+ }
2997
+
2998
+ .emcydocs-blog-search-input {
2999
+ width: 100%;
3000
+ min-height: 2.75rem;
3001
+ padding: 0.75rem 0.875rem 0.75rem 2.5rem;
3002
+ border: 1px solid hsl(var(--emcydocs-border));
3003
+ border-radius: var(--radius);
3004
+ background: hsl(var(--emcydocs-background));
3005
+ color: hsl(var(--emcydocs-foreground));
3006
+ font: inherit;
3007
+ }
3008
+
3009
+ .emcydocs-blog-search-input::placeholder {
3010
+ color: hsl(var(--emcydocs-muted-foreground));
3011
+ }
3012
+
3013
+ .emcydocs-blog-search-input:focus {
3014
+ outline: none;
3015
+ border-color: hsl(var(--emcydocs-ring));
3016
+ box-shadow: 0 0 0 3px hsl(var(--emcydocs-ring) / 0.15);
3017
+ }
3018
+
3019
+ .emcydocs-blog-categories {
3020
+ display: flex;
3021
+ flex-wrap: wrap;
3022
+ gap: 0.625rem;
3023
+ }
3024
+
3025
+ .emcydocs-blog-category-chip {
3026
+ display: inline-flex;
3027
+ align-items: center;
3028
+ justify-content: center;
3029
+ min-height: 2.25rem;
3030
+ padding: 0 0.875rem;
3031
+ border: 1px solid hsl(var(--emcydocs-border));
3032
+ border-radius: 999px;
3033
+ background: hsl(var(--emcydocs-background));
3034
+ color: hsl(var(--emcydocs-muted-foreground));
3035
+ font-size: 0.875rem;
3036
+ font-weight: 500;
3037
+ transition: border-color 0.15s, background 0.15s, color 0.15s;
3038
+ }
3039
+
3040
+ .emcydocs-blog-category-chip:hover,
3041
+ .emcydocs-blog-category-chip.is-active {
3042
+ border-color: hsl(var(--emcydocs-ring));
3043
+ background: hsl(var(--emcydocs-accent));
3044
+ color: hsl(var(--emcydocs-foreground));
3045
+ }
3046
+
3047
+ .emcydocs-blog-grid {
3048
+ display: grid;
3049
+ gap: 1rem;
3050
+ margin-top: 1.5rem;
3051
+ }
3052
+
3053
+ .emcydocs-blog-card {
3054
+ min-width: 0;
3055
+ }
3056
+
3057
+ .emcydocs-blog-card-link {
3058
+ display: flex;
3059
+ flex-direction: column;
3060
+ height: 100%;
3061
+ overflow: hidden;
3062
+ border: 1px solid hsl(var(--emcydocs-border));
3063
+ border-radius: var(--radius);
3064
+ background: hsl(var(--emcydocs-card));
3065
+ box-shadow: var(--emcydocs-shadow-sm);
3066
+ transition: transform 0.15s, border-color 0.15s, box-shadow 0.15s;
3067
+ }
3068
+
3069
+ .emcydocs-blog-card-link:hover {
3070
+ transform: translateY(-2px);
3071
+ border-color: hsl(var(--emcydocs-ring) / 0.5);
3072
+ box-shadow: var(--emcydocs-shadow-lg);
3073
+ }
3074
+
3075
+ .emcydocs-blog-card-image-wrap {
3076
+ position: relative;
3077
+ aspect-ratio: 16 / 9;
3078
+ overflow: hidden;
3079
+ background: hsl(var(--emcydocs-accent));
3080
+ }
3081
+
3082
+ .emcydocs-blog-card-image,
3083
+ .emcydocs-blog-post-image {
3084
+ display: block;
3085
+ width: 100%;
3086
+ height: 100%;
3087
+ object-fit: cover;
3088
+ }
3089
+
3090
+ .emcydocs-blog-card-body {
3091
+ display: flex;
3092
+ flex: 1;
3093
+ flex-direction: column;
3094
+ padding: 1rem;
3095
+ }
3096
+
3097
+ .emcydocs-blog-card-meta,
3098
+ .emcydocs-blog-post-meta {
3099
+ display: flex;
3100
+ flex-wrap: wrap;
3101
+ gap: 0.5rem 0.875rem;
3102
+ align-items: center;
3103
+ font-size: 0.8rem;
3104
+ color: hsl(var(--emcydocs-muted-foreground));
3105
+ }
3106
+
3107
+ .emcydocs-blog-card-category,
3108
+ .emcydocs-blog-post-category {
3109
+ display: inline-flex;
3110
+ align-items: center;
3111
+ min-height: 1.75rem;
3112
+ padding: 0 0.75rem;
3113
+ border-radius: 999px;
3114
+ background: hsl(var(--emcydocs-accent));
3115
+ color: hsl(var(--emcydocs-foreground));
3116
+ font-weight: 600;
3117
+ }
3118
+
3119
+ .emcydocs-blog-card-body h3 {
3120
+ margin: 0.875rem 0 0;
3121
+ font-size: 1.15rem;
3122
+ line-height: 1.25;
3123
+ }
3124
+
3125
+ .emcydocs-blog-card-body p {
3126
+ display: -webkit-box;
3127
+ margin: 0.625rem 0 0;
3128
+ overflow: hidden;
3129
+ color: hsl(var(--emcydocs-muted-foreground));
3130
+ line-height: 1.65;
3131
+ -webkit-box-orient: vertical;
3132
+ -webkit-line-clamp: 3;
3133
+ }
3134
+
3135
+ .emcydocs-blog-card-tags,
3136
+ .emcydocs-blog-post-tags {
3137
+ display: flex;
3138
+ flex-wrap: wrap;
3139
+ gap: 0.5rem;
3140
+ }
3141
+
3142
+ .emcydocs-blog-card-tags {
3143
+ margin-top: 0.875rem;
3144
+ }
3145
+
3146
+ .emcydocs-blog-card-tag,
3147
+ .emcydocs-blog-post-tag {
3148
+ display: inline-flex;
3149
+ align-items: center;
3150
+ min-height: 1.85rem;
3151
+ padding: 0 0.7rem;
3152
+ border: 1px solid hsl(var(--emcydocs-border));
3153
+ border-radius: 999px;
3154
+ background: hsl(var(--emcydocs-background));
3155
+ color: hsl(var(--emcydocs-muted-foreground));
3156
+ font-size: 0.8rem;
3157
+ }
3158
+
3159
+ .emcydocs-blog-card-cta {
3160
+ margin-top: auto;
3161
+ padding-top: 1rem;
3162
+ color: hsl(var(--emcydocs-foreground));
3163
+ font-size: 0.9rem;
3164
+ font-weight: 600;
3165
+ }
3166
+
3167
+ .emcydocs-blog-pagination {
3168
+ display: flex;
3169
+ flex-wrap: wrap;
3170
+ align-items: center;
3171
+ justify-content: space-between;
3172
+ gap: 1rem;
3173
+ margin-top: 1.5rem;
3174
+ }
3175
+
3176
+ .emcydocs-blog-pagination-link {
3177
+ display: inline-flex;
3178
+ align-items: center;
3179
+ justify-content: center;
3180
+ min-height: 2.5rem;
3181
+ padding: 0 1rem;
3182
+ border: 1px solid hsl(var(--emcydocs-border));
3183
+ border-radius: var(--radius);
3184
+ background: hsl(var(--emcydocs-card));
3185
+ color: hsl(var(--emcydocs-foreground));
3186
+ font-size: 0.875rem;
3187
+ font-weight: 500;
3188
+ }
3189
+
3190
+ .emcydocs-blog-pagination-link.is-disabled {
3191
+ color: hsl(var(--emcydocs-muted-foreground));
3192
+ opacity: 0.65;
3193
+ }
3194
+
3195
+ .emcydocs-blog-pagination-status {
3196
+ color: hsl(var(--emcydocs-muted-foreground));
3197
+ font-size: 0.875rem;
3198
+ }
3199
+
3200
+ .emcydocs-blog-empty {
3201
+ margin-top: 1.5rem;
3202
+ text-align: center;
3203
+ }
3204
+
3205
+ .emcydocs-blog-back-link {
3206
+ display: inline-flex;
3207
+ align-items: center;
3208
+ margin-bottom: 1rem;
3209
+ color: hsl(var(--emcydocs-muted-foreground));
3210
+ font-size: 0.9rem;
3211
+ font-weight: 600;
3212
+ }
3213
+
3214
+ .emcydocs-blog-back-link:hover {
3215
+ color: hsl(var(--emcydocs-foreground));
3216
+ }
3217
+
3218
+ .emcydocs-blog-post-header {
3219
+ margin-bottom: 1.5rem;
3220
+ }
3221
+
3222
+ .emcydocs-blog-author {
3223
+ display: flex;
3224
+ align-items: center;
3225
+ gap: 1rem;
3226
+ margin-top: 1.25rem;
3227
+ }
3228
+
3229
+ .emcydocs-blog-author-image {
3230
+ width: 3rem;
3231
+ height: 3rem;
3232
+ border-radius: 999px;
3233
+ object-fit: cover;
3234
+ }
3235
+
3236
+ .emcydocs-blog-author-image.is-fallback {
3237
+ display: inline-flex;
3238
+ align-items: center;
3239
+ justify-content: center;
3240
+ width: 3rem;
3241
+ height: 3rem;
3242
+ border-radius: 999px;
3243
+ background: hsl(var(--emcydocs-accent));
3244
+ color: hsl(var(--emcydocs-foreground));
3245
+ font-weight: 700;
3246
+ }
3247
+
3248
+ .emcydocs-blog-author-copy span,
3249
+ .emcydocs-blog-post-footer > span {
3250
+ display: block;
3251
+ color: hsl(var(--emcydocs-muted-foreground));
3252
+ font-size: 0.8rem;
3253
+ font-weight: 600;
3254
+ }
3255
+
3256
+ .emcydocs-blog-author-copy strong {
3257
+ display: block;
3258
+ margin-top: 0.125rem;
3259
+ font-size: 0.95rem;
3260
+ }
3261
+
3262
+ .emcydocs-blog-author-copy p {
3263
+ margin: 0.125rem 0 0;
3264
+ color: hsl(var(--emcydocs-muted-foreground));
3265
+ font-size: 0.875rem;
3266
+ }
3267
+
3268
+ .emcydocs-blog-post-image-wrap {
3269
+ position: relative;
3270
+ overflow: hidden;
3271
+ margin: 1.5rem 0;
3272
+ aspect-ratio: 16 / 9;
3273
+ border-radius: var(--radius);
3274
+ background: hsl(var(--emcydocs-accent));
3275
+ }
3276
+
3277
+ .emcydocs-blog-post-content {
3278
+ min-width: 0;
3279
+ }
3280
+
3281
+ .emcydocs-blog-post-footer {
3282
+ margin-top: 1.5rem;
3283
+ padding-top: 1.25rem;
3284
+ border-top: 1px solid hsl(var(--emcydocs-border));
3285
+ }
3286
+
3287
+ .emcydocs-blog-post-tags {
3288
+ margin-top: 0.75rem;
3289
+ }
3290
+
3291
+ .emcydocs-blog-suggested {
3292
+ margin-top: 1.5rem;
3293
+ }
3294
+
3295
+ .emcydocs-blog-suggested-header {
3296
+ display: flex;
3297
+ align-items: end;
3298
+ justify-content: space-between;
3299
+ gap: 1rem;
3300
+ }
3301
+
3302
+ @media (min-width: 768px) {
3303
+ .emcydocs-blog-directory-controls {
3304
+ grid-template-columns: 1.35fr minmax(18rem, 0.85fr);
3305
+ }
3306
+
3307
+ .emcydocs-blog-grid {
3308
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3309
+ }
3310
+ }
3311
+
3312
+ @media (min-width: 1024px) {
3313
+ .emcydocs-blog-grid {
3314
+ grid-template-columns: repeat(3, minmax(0, 1fr));
3315
+ }
3316
+
3317
+ .emcydocs-blog-empty,
3318
+ .emcydocs-blog-suggested {
3319
+ padding: 2rem;
3320
+ }
3321
+ }
3322
+
3323
+ /* ============================================
3324
+ Utilities
3325
+ ============================================ */
3326
+
3327
+ .emcydocs-sr-only {
3328
+ position: absolute;
3329
+ width: 1px;
3330
+ height: 1px;
3331
+ padding: 0;
3332
+ margin: -1px;
3333
+ overflow: hidden;
3334
+ clip: rect(0, 0, 0, 0);
3335
+ white-space: nowrap;
3336
+ border-width: 0;
3337
+ }