lutra 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/README.md +29 -0
  2. package/dist/Data/Stat.svelte +89 -0
  3. package/dist/Data/Stat.svelte.d.ts +33 -0
  4. package/dist/DataTable/DataTable.svelte +36 -0
  5. package/dist/DataTable/DataTable.svelte.d.ts +19 -0
  6. package/dist/DataTable/DataTableColumn.svelte +20 -0
  7. package/dist/DataTable/DataTableColumn.svelte.d.ts +18 -0
  8. package/dist/DataTable/DataTableRow.svelte +28 -0
  9. package/dist/DataTable/DataTableRow.svelte.d.ts +18 -0
  10. package/dist/Display/Avatar.svelte +61 -0
  11. package/dist/Display/Avatar.svelte.d.ts +18 -0
  12. package/dist/Display/Badge.svelte +93 -0
  13. package/dist/Display/Badge.svelte.d.ts +30 -0
  14. package/dist/Display/Callout.svelte +105 -0
  15. package/dist/Display/Callout.svelte.d.ts +34 -0
  16. package/dist/Display/Code.svelte +195 -0
  17. package/dist/Display/Code.svelte.d.ts +29 -0
  18. package/dist/Display/ContextTip.svelte +23 -0
  19. package/dist/Display/ContextTip.svelte.d.ts +17 -0
  20. package/dist/Display/Details.svelte +49 -0
  21. package/dist/Display/Details.svelte.d.ts +26 -0
  22. package/dist/Display/Hero.svelte +50 -0
  23. package/dist/Display/Hero.svelte.d.ts +25 -0
  24. package/dist/Display/Icon.svelte +35 -0
  25. package/dist/Display/Icon.svelte.d.ts +18 -0
  26. package/dist/Display/IconButton.svelte +85 -0
  27. package/dist/Display/IconButton.svelte.d.ts +28 -0
  28. package/dist/Display/Indicator.svelte +352 -0
  29. package/dist/Display/Indicator.svelte.d.ts +22 -0
  30. package/dist/Display/Popup.svelte +111 -0
  31. package/dist/Display/Popup.svelte.d.ts +26 -0
  32. package/dist/Display/Tag.svelte +90 -0
  33. package/dist/Display/Tag.svelte.d.ts +31 -0
  34. package/dist/Display/Tooltip.svelte +96 -0
  35. package/dist/Display/Tooltip.svelte.d.ts +22 -0
  36. package/dist/Form/Button.svelte +34 -0
  37. package/dist/Form/Button.svelte.d.ts +24 -0
  38. package/dist/Form/FieldActions.svelte +25 -0
  39. package/dist/Form/FieldActions.svelte.d.ts +17 -0
  40. package/dist/Form/FieldContainer.svelte +31 -0
  41. package/dist/Form/FieldContainer.svelte.d.ts +18 -0
  42. package/dist/Form/FieldContent.svelte +78 -0
  43. package/dist/Form/FieldContent.svelte.d.ts +32 -0
  44. package/dist/Form/FieldSection.svelte +97 -0
  45. package/dist/Form/FieldSection.svelte.d.ts +23 -0
  46. package/dist/Form/Fieldset.svelte +63 -0
  47. package/dist/Form/Fieldset.svelte.d.ts +32 -0
  48. package/dist/Form/Form.svelte +19 -0
  49. package/dist/Form/Form.svelte.d.ts +18 -0
  50. package/dist/Form/Input.svelte +266 -0
  51. package/dist/Form/Input.svelte.d.ts +113 -0
  52. package/dist/Form/InputLength.svelte +32 -0
  53. package/dist/Form/InputLength.svelte.d.ts +19 -0
  54. package/dist/Form/Label.svelte +26 -0
  55. package/dist/Form/Label.svelte.d.ts +25 -0
  56. package/dist/Form/Select.svelte +24 -0
  57. package/dist/Form/Select.svelte.d.ts +28 -0
  58. package/dist/Form/form.d.ts +34 -0
  59. package/dist/Form/form.js +31 -0
  60. package/dist/Form/types.d.ts +4 -0
  61. package/dist/Form/types.js +1 -0
  62. package/dist/Grid/Column.svelte +11 -0
  63. package/dist/Grid/Column.svelte.d.ts +17 -0
  64. package/dist/Grid/Grid.svelte +19 -0
  65. package/dist/Grid/Grid.svelte.d.ts +18 -0
  66. package/dist/Grid/Row.svelte +44 -0
  67. package/dist/Grid/Row.svelte.d.ts +19 -0
  68. package/dist/Icons/Alert.svelte +3 -0
  69. package/dist/Icons/Alert.svelte.d.ts +23 -0
  70. package/dist/Icons/Copy.svelte +3 -0
  71. package/dist/Icons/Copy.svelte.d.ts +23 -0
  72. package/dist/Icons/Done.svelte +3 -0
  73. package/dist/Icons/Done.svelte.d.ts +23 -0
  74. package/dist/Icons/Error.svelte +3 -0
  75. package/dist/Icons/Error.svelte.d.ts +23 -0
  76. package/dist/Icons/Help.svelte +3 -0
  77. package/dist/Icons/Help.svelte.d.ts +23 -0
  78. package/dist/Icons/Hide.svelte +3 -0
  79. package/dist/Icons/Hide.svelte.d.ts +23 -0
  80. package/dist/Icons/Info.svelte +3 -0
  81. package/dist/Icons/Info.svelte.d.ts +23 -0
  82. package/dist/Icons/Link.svelte +3 -0
  83. package/dist/Icons/Link.svelte.d.ts +23 -0
  84. package/dist/Icons/Show.svelte +3 -0
  85. package/dist/Icons/Show.svelte.d.ts +23 -0
  86. package/dist/Icons/Success.svelte +3 -0
  87. package/dist/Icons/Success.svelte.d.ts +23 -0
  88. package/dist/Icons/Warning.svelte +3 -0
  89. package/dist/Icons/Warning.svelte.d.ts +23 -0
  90. package/dist/Layout/Layout.svelte +43 -0
  91. package/dist/Layout/Layout.svelte.d.ts +21 -0
  92. package/dist/Layout/LayoutFooter.svelte +21 -0
  93. package/dist/Layout/LayoutFooter.svelte.d.ts +17 -0
  94. package/dist/Layout/LayoutGrid.svelte +51 -0
  95. package/dist/Layout/LayoutGrid.svelte.d.ts +30 -0
  96. package/dist/Layout/LayoutHeader.svelte +94 -0
  97. package/dist/Layout/LayoutHeader.svelte.d.ts +38 -0
  98. package/dist/Layout/LayoutTypes.svelte.d.ts +15 -0
  99. package/dist/Layout/LayoutTypes.svelte.js +9 -0
  100. package/dist/Layout/PageContent.svelte +89 -0
  101. package/dist/Layout/PageContent.svelte.d.ts +23 -0
  102. package/dist/Layout/Theme.svelte +215 -0
  103. package/dist/Layout/Theme.svelte.d.ts +18 -0
  104. package/dist/Layout/UIContent.svelte +15 -0
  105. package/dist/Layout/UIContent.svelte.d.ts +17 -0
  106. package/dist/Navigation/Breadcrumb.svelte +82 -0
  107. package/dist/Navigation/Breadcrumb.svelte.d.ts +29 -0
  108. package/dist/Navigation/Menu.svelte +180 -0
  109. package/dist/Navigation/Menu.svelte.d.ts +18 -0
  110. package/dist/Navigation/MenuTypes.svelte.d.ts +37 -0
  111. package/dist/Navigation/MenuTypes.svelte.js +1 -0
  112. package/dist/Navigation/TabbedContent.svelte +43 -0
  113. package/dist/Navigation/TabbedContent.svelte.d.ts +22 -0
  114. package/dist/Navigation/Tabs.svelte +118 -0
  115. package/dist/Navigation/Tabs.svelte.d.ts +24 -0
  116. package/dist/Pages/LoginPage.svelte +32 -0
  117. package/dist/Pages/LoginPage.svelte.d.ts +14 -0
  118. package/dist/Typography/Clamp.svelte +25 -0
  119. package/dist/Typography/Clamp.svelte.d.ts +23 -0
  120. package/dist/Typography/H.svelte +51 -0
  121. package/dist/Typography/H.svelte.d.ts +25 -0
  122. package/dist/Typography/H1.svelte +14 -0
  123. package/dist/Typography/H1.svelte.d.ts +23 -0
  124. package/dist/Typography/H2.svelte +13 -0
  125. package/dist/Typography/H2.svelte.d.ts +23 -0
  126. package/dist/Typography/H3.svelte +13 -0
  127. package/dist/Typography/H3.svelte.d.ts +23 -0
  128. package/dist/Typography/H4.svelte +13 -0
  129. package/dist/Typography/H4.svelte.d.ts +23 -0
  130. package/dist/Typography/H5.svelte +13 -0
  131. package/dist/Typography/H5.svelte.d.ts +23 -0
  132. package/dist/Typography/H6.svelte +13 -0
  133. package/dist/Typography/H6.svelte.d.ts +23 -0
  134. package/dist/Typography/P.svelte +32 -0
  135. package/dist/Typography/P.svelte.d.ts +23 -0
  136. package/dist/index.d.ts +1 -0
  137. package/dist/index.js +2 -0
  138. package/dist/style.css +787 -0
  139. package/dist/utils/attr.d.ts +5 -0
  140. package/dist/utils/attr.js +21 -0
  141. package/dist/utils/color.d.ts +51 -0
  142. package/dist/utils/color.js +97 -0
  143. package/dist/utils/defaults.d.ts +4 -0
  144. package/dist/utils/defaults.js +1 -0
  145. package/dist/utils/hooks.server.d.ts +2 -0
  146. package/dist/utils/hooks.server.js +16 -0
  147. package/dist/utils/id.d.ts +1 -0
  148. package/dist/utils/id.js +3 -0
  149. package/dist/utils/isSnippet.d.ts +5 -0
  150. package/dist/utils/isSnippet.js +6 -0
  151. package/dist/utils/transitions.d.ts +29 -0
  152. package/dist/utils/transitions.js +66 -0
  153. package/package.json +58 -0
package/dist/style.css ADDED
@@ -0,0 +1,787 @@
1
+ @font-face {
2
+ font-family: InterVariable;
3
+ font-style: normal;
4
+ font-weight: 100 900;
5
+ src: url("/InterVariable.woff2") format("woff2");
6
+ }
7
+ @font-face {
8
+ font-family: InterVariable;
9
+ font-style: italic;
10
+ font-weight: 100 900;
11
+ src: url("/InterVariable-Italic.woff2") format("woff2");
12
+ }
13
+ @font-face {
14
+ font-family: InconsolataVariable;
15
+ font-style: normal;
16
+ font-weight: 100 900;
17
+ src: url("/InconsolataVariable.woff2") format("woff2");
18
+ }
19
+
20
+ :root {
21
+ /* The base grid size is used to calculate sizes */
22
+ --grid-size: 16px;
23
+ /* Default font family */
24
+ --font-family: InterVariable, sans-serif;
25
+ --font-family-mono: 'InconsolataVariable';
26
+ font-optical-sizing: auto;
27
+ font-kerning: auto;
28
+ --border-radius: 0.5em;
29
+ --field-radius: 0.35em;
30
+ --border-size: 1px;
31
+ --border-style: solid;
32
+ --focus-size: 5px;
33
+ --mix-amount: 80%;
34
+ /* Transitions */
35
+ --menu-trans: 0.1s ease-in-out;
36
+ /**
37
+ * Light theme
38
+ */
39
+ --l-mix-target: hsl(215, 0%, 5%);
40
+ /* bg */
41
+ --l-bg-app: hsl(215, 3%, 99.5%);
42
+ --l-bg-subtle: hsl(240, 7%, 97%);
43
+ --l-bg-overlay: rgba(255,255,255,0.85);
44
+ --l-shadow: rgba(0, 0, 0, 0.1);
45
+ /* border */
46
+ --l-border-color: hsl(215, 6%, 80%);
47
+ --l-border-subtle-color: hsl(215, 5%, 87%);
48
+ --l-focus-color: hsl(215, 60%, 55%);
49
+ --l-border: var(--border-size) var(--border-style) var(--l-border-color);
50
+ --l-border-subtle: var(--border-size) var(--border-style) var(--l-border-subtle-color);
51
+ --l-focus-outline: var(--focus-size) solid var(--l-focus-color);
52
+ /* text */
53
+ --l-text: hsl(240, 2%, 20%);
54
+ --l-text-subtle: hsl(240, 2%, 44%);
55
+ --l-text-highlight: hsl(206, 99%, 47%);
56
+ --l-text-heading: hsl(240, 3%, 12%);
57
+ --l-text-link: hsl(215, 70%, 55%);
58
+ --l-text-warn: #e74c3c;
59
+ --l-text-icon: #666;
60
+ --l-text-subtle-icon: #999;
61
+ --l-text-warn-icon: #e74c3c;
62
+ /* fields */
63
+ --l-field-bg: transparent;
64
+ --l-field-border: var(--l-border);
65
+ --l-field-text: var(--l-text);
66
+ --l-field-placeholder: #999;
67
+ --l-field-label: #333;
68
+ /* toggle */
69
+ --l-toggle-on: #0187ed;
70
+ --l-toggle-off: #ccc;
71
+ /* buttons */
72
+ --l-button-bg: hsl(215, 70%, 50%);
73
+ --l-button-text: white;
74
+ --l-button-border-color: var(--l-button-bg);
75
+ --l-button-border: var(--border-size) var(--border-style) var(--l-button-border-color);
76
+ /* buttons: disabled */
77
+ --l-button-disabled-bg: hsl(215, 3%, 50%);
78
+ --l-button-disabled-text: #fafafa;
79
+ --l-button-disabled-border-color: var(--l-button-disabled-bg);
80
+ --l-button-disabled-border: var(--border-size) var(--border-style) var(--l-button-disabled-border-color);
81
+ /* buttons: outlined */
82
+ --l-button-outlined-text: hsl(215, 3%, 30%);
83
+ --l-button-outlined-border-color: hsl(215, 3%, 50%);
84
+ --l-button-outlined-border: var(--border-size) var(--border-style) var(--l-button-outlined-border-color);
85
+ /* buttons: secondary (for highlighted actions) */
86
+ --l-button-secondary-bg: hsl(132, 94%, 32%);
87
+ --l-button-secondary-text: white;
88
+ --l-button-secondary-border-color: var(--l-button-secondary-bg);
89
+ --l-button-secondary-border: var(--border-size) var(--border-style) var(--l-button-secondary-border-color);
90
+ /* buttons: warn */
91
+ --l-button-warn-bg: #e74c3c;
92
+ --l-button-warn-text: white;
93
+ --l-button-warn-border-color: var(--l-button-warn-bg);
94
+ --l-button-warn-border: var(--border-size) var(--border-style) var(--l-button-warn-border-color);
95
+ /* warn */
96
+ --l-warn-bg: #ffbc04;
97
+ --l-warn-border: #b58500;
98
+ --l-warn-text: #3f2f00;
99
+ /* success */
100
+ --l-success-bg: #e6ffed;
101
+ --l-success-border: #a3e7c5;
102
+ --l-success-text: rgb(29, 69, 29);
103
+ /* error */
104
+ --l-error-bg: #ffdede;
105
+ --l-error-border: #df8888;
106
+ --l-error-text: rgb(115, 37, 37);
107
+ /* info */
108
+ --l-info-bg: #e6f7ff;
109
+ --l-info-border: #a3e7ff;
110
+ --l-info-text: rgb(29, 69, 69);
111
+ /* menu */
112
+ --l-menu-bg: #fff;
113
+ --l-menu-bg-active: hsl(215, 25%, 90%);
114
+ --l-menu-bg-hover: hsl(215, 20%, 95%);
115
+ --l-menu-border: var(--l-border-subtle);
116
+ --l-menu-link: #666;
117
+ --l-menu-link-hover: #333;
118
+ --l-menu-link-active: #333;
119
+ --l-menu-link-active-hover: #333;
120
+ /* status colors */
121
+ --l-status-default: hsl(215, 20%, 85%);
122
+ --l-status-ok: #28a745;
123
+ --l-status-alert: #dc3545;
124
+ --l-status-warn: #ffc107;
125
+ --l-status-info: #038ac8;
126
+ --l-status-task: #007bff;
127
+
128
+ /**
129
+ * Dark theme
130
+ */
131
+ --d-mix-target: hsl(215, 3%, 3%);
132
+ /* bg */
133
+ --d-bg-app: #121212;
134
+ --d-bg-subtle: hsl(215, 3%, 15%);
135
+ --d-bg-overlay: rgba(0, 0, 0, 0.85);
136
+ --d-shadow: rgba(0, 0, 0, 0.3);
137
+ /* border */
138
+ --d-border-color: hsl(215, 8%, 30%);
139
+ --d-border-subtle-color: hsl(215, 5%, 25%);
140
+ --d-focus-color: rgb(77, 144, 254);
141
+ --d-border: var(--border-size) var(--border-style) var(--d-border-color);
142
+ --d-border-subtle: var(--border-size) var(--border-style) var(--d-border-subtle-color);
143
+ --d-focus-outline: var(--focus-size) solid var(--d-focus-color);
144
+ /* text */
145
+ --d-text: #ccc;
146
+ --d-text-subtle: #a1a1a6;
147
+ --d-text-highlight: #4C9AFF;
148
+ --d-text-heading: #e1e1e3;
149
+ --d-text-link: rgb(77, 144, 254);
150
+ --d-text-link-hover: rgb(58, 109, 193);
151
+ --d-text-warn: #ff6b6b;
152
+ --d-text-icon: #bbb;
153
+ --d-text-subtle-icon: #888;
154
+ --d-text-warn-icon: #ff6b6b;
155
+ /* fields */
156
+ --d-field-bg: transparent;
157
+ --d-field-border: var(--d-border);
158
+ --d-field-text: var(--d-text);
159
+ --d-field-placeholder: #666;
160
+ --d-field-label: #ccc;
161
+ /* toggle */
162
+ --d-toggle-on: #4C9AFF;
163
+ --d-toggle-on-hover: #3771c1;
164
+ --d-toggle-off: #666;
165
+ --d-toggle-off-hover: #888;
166
+ /* buttons */
167
+ --d-button-bg: #4C9AFF;
168
+ --d-button-text: white;
169
+ --d-button-border-color: var(--d-button-bg);
170
+ --d-button-border: var(--border-size) var(--border-style) var(--d-button-border-color);
171
+ /* buttons: disabled */
172
+ --d-button-disabled-bg: #555;
173
+ --d-button-disabled-text: #333;
174
+ --d-button-disabled-border-color: var(--d-button-disabled-bg);
175
+ --d-button-disabled-border: var(--border-size) var(--border-style) var(--d-button-disabled-border-color);
176
+ /* buttons: outlined */
177
+ --d-button-outlined-text: #ccc;
178
+ --d-button-outlined-border-color: var(--d-button-outlined-text);
179
+ --d-button-outlined-border: var(--border-size) var(--border-style) var(--d-button-outlined-border-color);
180
+ /* buttons: secondary (for highlighted actions) */
181
+ --d-button-secondary-bg: hsl(146, 67%, 38%);
182
+ --d-button-secondary-text: white;
183
+ --d-button-secondary-border-color: var(--d-button-secondary-bg);
184
+ --d-button-secondary-border: var(--border-size) var(--border-style) var(--d-button-secondary-border-color);
185
+ /* buttons: warn */
186
+ --d-button-warn-bg: #ff6b6b;
187
+ --d-button-warn-text: white;
188
+ --d-button-warn-border-color: var(--d-button-warn-bg);
189
+ --d-button-warn-border: var(--border-size) var(--border-style) var(--d-button-warn-border-color);
190
+ /* warn */
191
+ --d-warn-bg: #ffb900;
192
+ --d-warn-border: #cc9500;
193
+ --d-warn-text: #664d00;
194
+ /* success */
195
+ --d-success-bg: #4caf50;
196
+ --d-success-border: #397d3f;
197
+ --d-success-text: #e8f5e9;
198
+ /* error */
199
+ --d-error-bg: #f44336;
200
+ --d-error-border: #d32f2f;
201
+ --d-error-text: #ffebee;
202
+ /* info */
203
+ --d-info-bg: #2196f3;
204
+ --d-info-border: #1976d2;
205
+ --d-info-text: #e3f2fd;
206
+ /* menu */
207
+ --d-menu-bg: #2c2c2c;
208
+ --d-menu-bg-active: #444;
209
+ --d-menu-bg-hover: #444;
210
+ --d-menu-border: var(--d-border-subtle);
211
+ --d-menu-link: #ccc;
212
+ --d-menu-link-hover: #fff;
213
+ --d-menu-link-active: #fff;
214
+ --d-menu-link-active-hover: #fff;
215
+ /* status colors */
216
+ --d-status-default: hsl(215, 10%, 25%);
217
+ --d-status-ok: #4caf50;
218
+ --d-status-alert: #f44336;
219
+ --d-status-warn: #ffeb3b;
220
+ --d-status-info: #0362c8;
221
+ --d-status-task: #1e88e5;
222
+ }
223
+
224
+ @media(max-width: 1280px) {
225
+ :root {
226
+ --grid-size: 16px;
227
+ }
228
+ }
229
+
230
+ @media(max-width: 1024px) {
231
+ :root {
232
+ --grid-size: 14px;
233
+ }
234
+ }
235
+
236
+ @media(max-width: 480px) {
237
+ :root {
238
+ --grid-size: 13px;
239
+ }
240
+ }
241
+
242
+ body {
243
+ font-family: var(--font-family);
244
+ font-size: var(--grid-size);
245
+ text-rendering: optimizeLegibility;
246
+ -webkit-font-smoothing: antialiased;
247
+ -moz-osx-font-smoothing: grayscale;
248
+ scrollbar-width: thin;
249
+ font-kerning: auto;
250
+ scrollbar-gutter: stable both-edges;
251
+ min-width: 280px;
252
+ }
253
+
254
+ body * {
255
+ box-sizing: border-box;
256
+ margin: 0;
257
+ padding: 0;
258
+ }
259
+
260
+ html, body, .app {
261
+ padding: 0;
262
+ margin: 0;
263
+ inline-size: 100%;
264
+ min-block-size: 100%;
265
+ block-size: 100%;
266
+ }
267
+
268
+ html {
269
+ font-size: 1rem;
270
+ }
271
+
272
+ html, body {
273
+ overscroll-behavior-x: none;
274
+ }
275
+
276
+ input, textarea, select, button {
277
+ font-family: var(--font-family);
278
+ }
279
+
280
+ *:focus-visible {
281
+ transition: outline 0.1s;
282
+ outline: 3px solid var(--focus-color);
283
+ outline-offset: 0;
284
+ -webkit-outline-offset: 0;
285
+ transform: translateZ(0);
286
+ }
287
+
288
+ /**
289
+ * Typography
290
+ */
291
+
292
+ h1, h2, h3, h4, h5, h6 {
293
+ font-family: var(--font-family);
294
+ margin: 0;
295
+ color: var(--text-heading);
296
+ }
297
+
298
+
299
+ /**
300
+ * Use system font on iOS devices
301
+ */
302
+ @supports (font: -apple-system-body) {
303
+ body {
304
+ font: -apple-system-body;
305
+ }
306
+ h1, h2, h3, h4, h5, h6 {
307
+ font: -apple-system-headline;
308
+ }
309
+ input, p, li, textarea, select, button {
310
+ font: -apple-system-body;
311
+ }
312
+ }
313
+
314
+ h1 {
315
+ font-size: 2em;
316
+ font-weight: 700;
317
+ text-wrap: balance;
318
+ }
319
+
320
+ h2 {
321
+ font-size: 1.75em;
322
+ font-weight: 650;
323
+ text-wrap: balance;
324
+ }
325
+
326
+ h3 {
327
+ font-size: 1.5em;
328
+ font-weight: 650;
329
+ }
330
+
331
+ h4 {
332
+ font-size: 1.25em;
333
+ font-weight: 600;
334
+ }
335
+
336
+ h5 {
337
+ font-size: 1em;
338
+ line-height: 1.5;
339
+ font-weight: 500;
340
+ }
341
+
342
+ h6 {
343
+ font-size: 1em;
344
+ line-height: 1.5;
345
+ font-weight: 500;
346
+ }
347
+
348
+ p, th, td, li:not(:has(p)) {
349
+ font-size: 1em;
350
+ line-height: 1.5;
351
+ font-weight: 400;
352
+ color: var(--text);
353
+ }
354
+
355
+ small {
356
+ font-size: 0.85em;
357
+ line-height: 1.5;
358
+ font-weight: 400;
359
+ color: var(--text-subtle);
360
+ display: block;
361
+ }
362
+
363
+ strong {
364
+ color: var(--text-heading);
365
+ font-weight: 500;
366
+ }
367
+
368
+ code, pre {
369
+ font-family: var(--font-family-mono);
370
+ font-weight: 400;
371
+ }
372
+
373
+ /**
374
+ * Links
375
+ */
376
+
377
+ a {
378
+ color: var(--text-link);
379
+ text-decoration: none;
380
+ }
381
+
382
+ a:hover {
383
+ color: color-mix(in hsl shorter hue, var(--text-link) var(--mix-amount), var(--mix-target));
384
+ }
385
+
386
+ /**
387
+ * Forms
388
+ */
389
+
390
+ form {
391
+ margin: 0;
392
+ padding: 0;
393
+ }
394
+
395
+ fieldset {
396
+ border: 0;
397
+ padding: 0;
398
+ margin: 0;
399
+ border-radius: var(--border-radius);
400
+ }
401
+
402
+ fieldset.contained {
403
+ border: var(--border);
404
+ padding: 0.5rem;
405
+ }
406
+
407
+ fieldset legend {
408
+ color: var(--text-heading);
409
+ font-weight: 600;
410
+ }
411
+
412
+ input, textarea, select {
413
+ font-size: 1em;
414
+ line-height: 1.5;
415
+ font-weight: 400;
416
+ color: var(--field-text);
417
+ background-color: var(--field-bg);
418
+ border: var(--field-border);
419
+ border-radius: var(--field-radius);
420
+ padding: 0.5em 0.75em;
421
+ transition: border-color 0.1s;
422
+ }
423
+
424
+ select {
425
+ padding-right: 2em;
426
+ appearance: none;
427
+ background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEyIDgiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM6c2VyaWY9Imh0dHA6Ly93d3cuc2VyaWYuY29tLyIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoyOyI+CiAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjc1LDAsMCwxLDAsMCkiPgogICAgICAgIDxwYXRoIGQ9Ik0xNiwwTDAsMEw4LDhMMTYsMFoiLz4KICAgIDwvZz4KPC9zdmc+Cg==') calc(100% - 0.65em) 50% no-repeat;
428
+ background-size: 10px;
429
+ }
430
+
431
+ input[type="submit"],
432
+ input[type="button"] {
433
+ cursor: pointer;
434
+ }
435
+
436
+ input[type="checkbox"] {
437
+ border-radius: none;
438
+ }
439
+
440
+ input[type="checkbox"],
441
+ input[type="radio"] {
442
+ cursor: pointer;
443
+ width: 1.35em;
444
+ height: 1.35em;
445
+ accent-color: var(--focus-color);
446
+ transition: accent-color 0.1s, scale 0.1s;
447
+ }
448
+
449
+ input[type="checkbox"]:hover,
450
+ input[type="radio"]:hover {
451
+ border: var(--field-border);
452
+ opacity: 1;
453
+ }
454
+
455
+ input[type="checkbox"]:active,
456
+ input[type="radio"]:active {
457
+ accent-color: color-mix(in srgb, var(--focus-color) var(--mix-amount), var(--mix-target));
458
+ }
459
+
460
+ input[type="checkbox"]:focus-visible,
461
+ input[type="radio"]:focus-visible {
462
+ border: var(--field-border);
463
+ }
464
+
465
+ label {
466
+ color: var(--field-label);
467
+ font-size: max(0.85em, 12px);
468
+ line-height: 1.5;
469
+ font-weight: 500;
470
+ display: block;
471
+ }
472
+
473
+ label:has(+input[type="checkbox"]),
474
+ label:has(+input[type="radio"]) {
475
+ cursor: pointer;
476
+ font-size: 1em;
477
+ font-weight: 400;
478
+ }
479
+
480
+ /**
481
+ * Buttons
482
+ */
483
+
484
+ button {
485
+ background: none;
486
+ border: none;
487
+ padding: 0;
488
+ }
489
+
490
+ .button {
491
+ font-size: var(--font-size, 1em);
492
+ line-height: 1.5;
493
+ font-weight: 500;
494
+ background-color: var(--button-bg);
495
+ color: var(--button-text);
496
+ padding: var(--padding, 0.5em 1.3em);
497
+ border-radius: var(--field-radius);
498
+ border: var(--button-border);
499
+ cursor: pointer;
500
+ display: inline-flex;
501
+ transition: transform 0.1s, background-color 0.1s, color 0.1s, border-color 0.1s, scale 0.1s;
502
+ display: inline-flex;
503
+ align-items: center;
504
+ justify-content: center;
505
+ gap: 0.5rem;
506
+ }
507
+
508
+ .button:hover {
509
+ color: var(--button-text);
510
+ background-color: color-mix(in srgb, var(--button-bg) var(--mix-amount), var(--mix-target));
511
+ border-color: color-mix(in srgb, var(--button-border-color) var(--mix-amount), var(--mix-target));
512
+ }
513
+
514
+ button:active,
515
+ .button:active {
516
+ scale: 0.95;
517
+ }
518
+
519
+ .button.sm {
520
+ --font-size: 0.75em;
521
+ --padding: 0.35em 0.75em;
522
+ }
523
+
524
+ .button.lg {
525
+ --font-size: 1.15em;
526
+ --padding: 0.65em 1.25em;
527
+ }
528
+
529
+ .button.xl {
530
+ --font-size: 1.25em;
531
+ --padding: 0.75em 1.5em;
532
+ }
533
+
534
+ .button.outlined {
535
+ background-color: transparent;
536
+ color: var(--button-outlined-text);
537
+ border: var(--button-outlined-border);
538
+ }
539
+
540
+ .button.outlined:hover {
541
+ border-color: color-mix(in srgb, var(--button-outlined-border-color) 50%, var(--mix-target));
542
+ }
543
+
544
+ .button.secondary {
545
+ background-color: var(--button-secondary-bg);
546
+ border: var(--button-secondary-border);
547
+ }
548
+
549
+ .button.secondary:hover {
550
+ background-color: color-mix(in srgb, var(--button-secondary-bg) var(--mix-amount), var(--mix-target));
551
+ border-color: color-mix(in srgb, var(--button-secondary-border-color) var(--mix-amount), var(--mix-target));
552
+ }
553
+
554
+ .button.warn {
555
+ background-color: var(--button-warn-bg);
556
+ border: var(--button-warn-border);
557
+ }
558
+
559
+ .button.warn:hover {
560
+ background-color: color-mix(in srgb, var(--button-warn-bg) var(--mix-amount), var(--mix-target));
561
+ border-color: color-mix(in srgb, var(--button-warn-border-color) var(--mix-amount), var(--mix-target));
562
+ }
563
+
564
+ @scope (.PageContent) to (.UIContent) {
565
+
566
+ .button { margin-block-start: 0.5rem; }
567
+ .button.lg { margin-block-start: 0.75rem; }
568
+ .button.xl { margin-block-start: 1rem; }
569
+ .button:has(+.button) { margin-inline-end: 0.5rem; }
570
+ .button.lg:has(+.button) { margin-inline-end: 1rem; }
571
+ .button.xl:has(+.button) { margin-inline-end: 1.5rem; }
572
+
573
+ p { margin-block: 0.75rem; }
574
+ h1 { margin-block: 3rem 1.5rem; }
575
+ h2 { margin-block: 3rem 1.5rem; }
576
+ h1+h2 {
577
+ margin-block-start: 0;
578
+ }
579
+ h1:has(+h2) {
580
+ margin-block-end: 0.75rem;
581
+ }
582
+ h3 { margin-block: 2rem 1.5rem; }
583
+ h3:has(+p, +ul, +ol) {
584
+ margin-block-end: 0.75rem;
585
+ }
586
+ h4,
587
+ h5 {
588
+ margin-block: 1.5rem 0.5rem;
589
+ }
590
+ p {
591
+ hyphens: auto;
592
+ }
593
+
594
+ ul, ol {
595
+ margin-block: 1.5rem;
596
+ }
597
+ ul {
598
+ list-style-type: "– ";
599
+ list-style-position: outside;
600
+ }
601
+ li {
602
+ margin-block: 0.5em;
603
+ }
604
+ @media(max-width: 960px) {
605
+ ul, ol {
606
+ list-style-position: inside;
607
+ }
608
+ ul {
609
+ margin-inline-start: 0;
610
+ }
611
+ ul li:before {
612
+ margin-inline-start: 0.5rem;
613
+ }
614
+ }
615
+ li p {
616
+ margin-block: 0.5rem;
617
+ }
618
+ li:not(:last-child) p:last-child {
619
+ margin-block-end: 0.85em;
620
+ }
621
+ ul:has(+p), ol:has(+p) {
622
+ margin-block-end: 1em;
623
+ }
624
+
625
+ p+ul, p+ol {
626
+ margin-block-start: 1em;
627
+ }
628
+
629
+ h3+p,
630
+ h3+ul,
631
+ h3+ol {
632
+ margin-block-start: 1em;
633
+ }
634
+
635
+ h4+p,
636
+ h4+ul,
637
+ h4+ol {
638
+ margin-block-start: 0.75em;
639
+ }
640
+
641
+ h5+p,
642
+ h5+ul,
643
+ h5+ol {
644
+ margin-block-start: 0.5em;
645
+ }
646
+
647
+ /** Links */
648
+ a:hover:not(.button),
649
+ a:focus-visible:not(.button) {
650
+ text-decoration: underline;
651
+ }
652
+
653
+ /** Dividers */
654
+ hr {
655
+ margin-block: 2em;
656
+ border-top: var(--border-subtle);
657
+ }
658
+
659
+ /** Code */
660
+ p > code,
661
+ li > code {
662
+ padding: 0.15em 0.35em;
663
+ background-color: var(--bg-subtle);
664
+ border-radius: var(--border-radius);
665
+ border: var(--border-subtle);
666
+ color: var(--text);
667
+ font-weight: 450;
668
+ }
669
+ pre {
670
+ color: var(--text);
671
+ font-size: 1em;
672
+ line-height: 1.35;
673
+ background-color: var(--bg-subtle);
674
+ border-radius: var(--border-radius);
675
+ border: var(--border-subtle);
676
+ overflow-x: auto;
677
+ inline-size: calc(100% + 2rem);
678
+ box-sizing: border-box;
679
+ display: grid;
680
+ margin-block: 1.5rem;
681
+ margin-inline: -1rem;
682
+ overflow-wrap: break-word;
683
+ word-break: break-word;
684
+ }
685
+ pre code {
686
+ box-sizing: border-box;
687
+ display: block;
688
+ padding: 1rem;
689
+ font-weight: 450;
690
+ color: var(--text);
691
+ box-sizing: border-box;
692
+ overflow-x: auto;
693
+ width: 100%;
694
+ }
695
+ :first-child {
696
+ margin-block-start: 0;
697
+ }
698
+ :last-child {
699
+ margin-block-end: 0;
700
+ }
701
+
702
+ /** Tables */
703
+ table {
704
+ margin-block: 1.5em;
705
+ border-collapse: collapse;
706
+ }
707
+ table.full {
708
+ width: 100%;
709
+ }
710
+ table.contained {
711
+ border: var(--border);
712
+ }
713
+ table.hang {
714
+ margin-inline: -1rem;
715
+ inline-size: calc(100% + 2rem);
716
+ }
717
+ table.sm {
718
+ --font-size: 0.85em;
719
+ --padding: 0.5rem;
720
+ }
721
+ table.rounded {
722
+ border-radius: var(--border-radius);
723
+ overflow: clip;
724
+ border-collapse: separate;
725
+ border-spacing: 0;
726
+ }
727
+ th {
728
+ }
729
+ th,
730
+ td {
731
+ padding: var(--padding, 0.5rem 0.75rem);
732
+ text-align: start;
733
+ border-inline-end: var(--border-subtle);
734
+ border-block-end: var(--border-subtle);
735
+ font-size: var(--font-size, 1em);
736
+ }
737
+ table.hang th:first-of-type,
738
+ table.hang td:first-of-type {
739
+ padding-inline: 1rem;
740
+ }
741
+ table.hang th:last-of-type,
742
+ table.hang td:last-of-type {
743
+ padding-inline: 1rem;
744
+ }
745
+ th:last-child,
746
+ td:last-child {
747
+ border-inline-end: none;
748
+ }
749
+ th {
750
+ font-weight: 700;
751
+ border-block-end: var(--border);
752
+ border-inline-end: var(--border);
753
+ }
754
+ table.color tr:nth-child(2n) {
755
+ background-color: var(--bg-subtle);
756
+ }
757
+ table tr:last-child td {
758
+ border-block-end: none;
759
+ }
760
+
761
+ /** Forms */
762
+ fieldset label,
763
+ fieldset input {
764
+ margin-block-end: 0.5rem;
765
+ }
766
+
767
+ /** Blockquote */
768
+ blockquote {
769
+ margin-block: 1.5rem;
770
+ padding: 1.5rem 1.5rem;
771
+ inline-size: calc(100% + 2rem);
772
+ margin-inline: -1rem;
773
+ border-inline-start: 4px solid var(--border-subtle-color);
774
+ background-color: var(--bg-subtle);
775
+ }
776
+ }
777
+
778
+ @media(prefers-reduced-motion: reduce) {
779
+ * {
780
+ transition-duration: 0s !important;
781
+ }
782
+
783
+ button:active,
784
+ .button:active {
785
+ scale: initial;
786
+ }
787
+ }