@anyblades/blades 3.1.0-alpha.1 → 3.1.0-beta.2

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 (108) hide show
  1. package/README.md +78 -3
  2. package/css/blades.css +371 -978
  3. package/css/blades.min.css +74 -37
  4. package/css/blades.ninja.css +4057 -0
  5. package/css/blades.ninja.min.css +190 -0
  6. package/css/float-label.css +207 -0
  7. package/css/float-label.min.css +55 -0
  8. package/css/{pico.layered.css → layered/blades.layered.css} +654 -397
  9. package/css/layered/blades.layered.min.css +184 -0
  10. package/css/layered/compact.css +54 -0
  11. package/css/layered/components/accordion.css +85 -0
  12. package/css/layered/components/card.css +48 -0
  13. package/css/layered/components/dropdown.css +191 -0
  14. package/css/layered/components/group.css +208 -0
  15. package/css/layered/components/loading.css +43 -0
  16. package/css/layered/components/modal.css +158 -0
  17. package/css/layered/components/nav.css +117 -0
  18. package/css/layered/components/progress.css +76 -0
  19. package/css/layered/components/tooltip.css +176 -0
  20. package/css/layered/components.css +1082 -0
  21. package/css/layered/content/button.css +208 -0
  22. package/css/layered/content/code.css +64 -0
  23. package/css/layered/content/embedded-content.css +41 -0
  24. package/css/layered/content/figure.css +15 -0
  25. package/css/layered/content/link.css +84 -0
  26. package/css/layered/content/misc.css +22 -0
  27. package/css/layered/content/table.css +33 -0
  28. package/css/layered/content/typography.css +159 -0
  29. package/css/layered/content.css +611 -0
  30. package/css/layered/forms/basics.css +338 -0
  31. package/css/layered/forms/checkbox-radio-switch.css +164 -0
  32. package/css/layered/forms/input-color.css +20 -0
  33. package/css/layered/forms/input-datetime.css +57 -0
  34. package/css/layered/forms/input-file.css +29 -0
  35. package/css/layered/forms/input-range.css +121 -0
  36. package/css/layered/forms/input-search.css +66 -0
  37. package/css/layered/forms.css +778 -0
  38. package/css/layered/layout/container.css +42 -0
  39. package/css/layered/layout/document.css +48 -0
  40. package/css/layered/layout/grid.css +22 -0
  41. package/css/layered/layout/landmarks.css +12 -0
  42. package/css/layered/layout/overflow-auto.css +9 -0
  43. package/css/layered/layout/section.css +9 -0
  44. package/css/layered/layout.css +119 -0
  45. package/css/layered/utilities.css +35 -0
  46. package/css/layered/variables.css +365 -0
  47. package/css/pico.conditional.css +229 -396
  48. package/css/pico.conditional.min.css +42 -31
  49. package/css/pico.css +229 -396
  50. package/css/pico.min.css +42 -31
  51. package/package.json +24 -11
  52. package/src/_compact.css +51 -0
  53. package/src/blades/_index.css +23 -0
  54. package/src/blades/float-label/_index.css +2 -0
  55. package/src/{standalone/forms/_float-label.theme.css → blades/float-label/_theme.css} +5 -1
  56. package/src/blades.css +3 -2
  57. package/src/blades.ninja.css +3 -0
  58. package/src/float-label.css +1 -0
  59. package/src/ninja/_index.css +19 -0
  60. package/src/{standalone → ninja}/_theme.css +0 -2
  61. package/src/{ninja.css → ninja/_utilities.css} +55 -6
  62. package/src/pico/_variables.css +77 -386
  63. package/src/pico/components/_accordion.css +8 -0
  64. package/src/pico/components/_card.css +14 -0
  65. package/src/pico/components/_dropdown.css +9 -0
  66. package/src/pico/components/_group.css +38 -0
  67. package/src/pico/components/_loading.css +9 -0
  68. package/src/pico/components/_modal.css +13 -0
  69. package/src/pico/components/_nav.css +6 -0
  70. package/src/pico/components/_progress.css +6 -0
  71. package/src/pico/components/_tooltip.css +6 -0
  72. package/src/pico/content/_button.css +1 -1
  73. package/src/pico/forms/_checkbox-radio-switch.css +13 -0
  74. package/src/pico/forms/_input-datetime.css +6 -0
  75. package/src/pico/forms/_input-range.css +9 -0
  76. package/src/pico/forms/_input-search.css +5 -0
  77. package/src/pico/layout/_document.css +9 -0
  78. package/src/pico/layout/_index.css +0 -1
  79. package/src/pico/layout/_landmarks.css +1 -9
  80. package/src/pico.css +1 -0
  81. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -25
  82. package/.github/ISSUE_TEMPLATE/config.yml +0 -8
  83. package/.prettierignore +0 -3
  84. package/CODE_OF_CONDUCT.md +0 -92
  85. package/context7.json +0 -4
  86. package/css/blades.standalone.css +0 -860
  87. package/css/blades.standalone.min.css +0 -37
  88. package/css/ninja.css +0 -83
  89. package/css/ninja.min.css +0 -5
  90. package/css/pico.layered.min.css +0 -107
  91. package/css/postcss.config.js +0 -23
  92. package/index.html +0 -63
  93. package/src/blades.standalone.css +0 -2
  94. package/src/standalone/_core.css +0 -32
  95. package/src/standalone/_utilities.css +0 -55
  96. package/src/standalone/forms/_float-label.css +0 -2
  97. /package/src/{standalone/content → blades}/_code.css +0 -0
  98. /package/src/{standalone/layout → blades}/_columns.css +0 -0
  99. /package/src/{standalone/components/_icon-helper.css → blades/_icon.css} +0 -0
  100. /package/src/{standalone/components → blades}/_timeline.css +0 -0
  101. /package/src/{standalone → blades}/_variables.css +0 -0
  102. /package/src/{standalone/forms/_float-label.core.css → blades/float-label/_core.css} +0 -0
  103. /package/src/{standalone/layout/_breakout.css → ninja/_container-breakout.css} +0 -0
  104. /package/src/{standalone/content/_typography.css → ninja/_heading-anchor.css} +0 -0
  105. /package/src/{standalone/content/_list.css → ninja/_list-helpers.css} +0 -0
  106. /package/src/{standalone/layout/_scroller.css → ninja/_page-anchors.css} +0 -0
  107. /package/src/{standalone/content/_table.css → ninja/_table-helpers.css} +0 -0
  108. /package/src/{standalone/content → ninja}/_table-responsive.css +0 -0
@@ -0,0 +1,4057 @@
1
+ /*!
2
+ * Blades CSS v3 with Pico CSS 🥷✨
3
+ * Copyright 2026 (https://blades.ninja/)
4
+ * Licensed under MIT
5
+ *//*!
6
+ * Blades CSS' Pico fork v2.5 🥷✨
7
+ * Copyright 2019-2025 (https://picocss.com)
8
+ * Copyright 2026 (https://blades.ninja/css/pico/)
9
+ * Licensed under MIT
10
+ *//**
11
+ * Variables
12
+ */
13
+ :scope,
14
+ :host {
15
+ --pico-font-family-emoji:
16
+ "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
17
+ --pico-font-family-sans-serif:
18
+ system-ui, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, Helvetica, Arial, "Helvetica Neue",
19
+ sans-serif, var(--pico-font-family-emoji);
20
+ --pico-font-family-monospace:
21
+ ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace,
22
+ var(--pico-font-family-emoji);
23
+ --pico-font-family: var(--pico-font-family-sans-serif);
24
+ --pico-line-height: 1.5;
25
+ --pico-font-weight: 400;
26
+ --pico-font-size: 100%;
27
+ --pico-text-underline-offset: 0.1rem;
28
+ --pico-border-radius: 0.25rem;
29
+ --pico-border-width: 0.0625rem;
30
+ --pico-outline-width: 0.125rem;
31
+ --pico-transition: 0.2s ease-in-out;
32
+ --pico-spacing: 1rem;
33
+ --pico-typography-spacing-vertical: 1rem;
34
+ --pico-block-spacing-vertical: var(--pico-spacing);
35
+ --pico-block-spacing-horizontal: var(--pico-spacing);
36
+ --pico-grid-column-gap: var(--pico-spacing);
37
+ --pico-grid-row-gap: var(--pico-spacing);
38
+ --pico-form-element-spacing-vertical: 0.75rem;
39
+ --pico-form-element-spacing-horizontal: 1rem;
40
+ --pico-nav-element-spacing-vertical: 1rem;
41
+ --pico-nav-link-spacing-vertical: 0.5rem;
42
+ --pico-nav-link-spacing-horizontal: 0.5rem;
43
+ --pico-icon-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
44
+ }
45
+ @media (min-width: 576px) {
46
+ :scope,
47
+ :host {
48
+ --pico-font-size: 106.25%;
49
+ }
50
+ }
51
+ @media (min-width: 768px) {
52
+ :scope,
53
+ :host {
54
+ --pico-font-size: 112.5%;
55
+ }
56
+ }
57
+ @media (min-width: 1024px) {
58
+ :scope,
59
+ :host {
60
+ --pico-font-size: 118.75%;
61
+ }
62
+ }
63
+ @media (min-width: 1280px) {
64
+ :scope,
65
+ :host {
66
+ --pico-font-size: 125%;
67
+ }
68
+ }
69
+ @media (min-width: 1536px) {
70
+ :scope,
71
+ :host {
72
+ --pico-font-size: 131.25%;
73
+ }
74
+ }
75
+
76
+ a {
77
+ --pico-text-decoration: underline;
78
+ }
79
+ a.secondary,
80
+ a.contrast {
81
+ --pico-text-decoration: underline;
82
+ }
83
+
84
+ small {
85
+ --pico-font-size: 0.875em;
86
+ }
87
+
88
+ h1,
89
+ h2,
90
+ h3,
91
+ h4,
92
+ h5,
93
+ h6 {
94
+ --pico-font-weight: 700;
95
+ }
96
+
97
+ h1 {
98
+ --pico-font-size: 2rem;
99
+ --pico-line-height: 1.125;
100
+ --pico-typography-spacing-top: 3rem;
101
+ }
102
+
103
+ h2 {
104
+ --pico-font-size: 1.75rem;
105
+ --pico-line-height: 1.15;
106
+ --pico-typography-spacing-top: 2.625rem;
107
+ }
108
+
109
+ h3 {
110
+ --pico-font-size: 1.5rem;
111
+ --pico-line-height: 1.175;
112
+ --pico-typography-spacing-top: 2.25rem;
113
+ }
114
+
115
+ h4 {
116
+ --pico-font-size: 1.25rem;
117
+ --pico-line-height: 1.2;
118
+ --pico-typography-spacing-top: 1.874rem;
119
+ }
120
+
121
+ h5 {
122
+ --pico-font-size: 1.125rem;
123
+ --pico-line-height: 1.225;
124
+ --pico-typography-spacing-top: 1.6875rem;
125
+ }
126
+
127
+ h6 {
128
+ --pico-font-size: 1rem;
129
+ --pico-line-height: 1.25;
130
+ --pico-typography-spacing-top: 1.5rem;
131
+ }
132
+
133
+ thead th,
134
+ thead td,
135
+ tfoot th,
136
+ tfoot td {
137
+ --pico-font-weight: 600;
138
+ --pico-border-width: 0.1875rem;
139
+ }
140
+
141
+ pre,
142
+ code,
143
+ kbd,
144
+ samp {
145
+ --pico-font-family: var(--pico-font-family-monospace);
146
+ }
147
+
148
+ kbd {
149
+ --pico-font-weight: bolder;
150
+ }
151
+
152
+ input:not(
153
+ [type="submit"],
154
+ [type="button"],
155
+ [type="reset"],
156
+ [type="checkbox"],
157
+ [type="radio"],
158
+ [type="file"]
159
+ ),
160
+ :where(select, textarea) {
161
+ --pico-outline-width: 0.0625rem;
162
+ }
163
+
164
+ [type="search"] {
165
+ --pico-border-radius: 5rem;
166
+ }
167
+
168
+ [type="checkbox"],
169
+ [type="radio"] {
170
+ --pico-border-width: 0.125rem;
171
+ }
172
+
173
+ [type="checkbox"][role="switch"] {
174
+ --pico-border-width: 0.1875rem;
175
+ }
176
+
177
+ details.dropdown summary:not([role="button"]) {
178
+ --pico-outline-width: 0.0625rem;
179
+ }
180
+
181
+ nav details.dropdown summary:focus-visible {
182
+ --pico-outline-width: 0.125rem;
183
+ }
184
+
185
+ [role="search"] {
186
+ --pico-border-radius: 5rem;
187
+ }
188
+
189
+ [role="search"] button,
190
+ [role="search"] [type="submit"],
191
+ [role="search"] [type="button"],
192
+ [role="search"] [role="button"],
193
+ [role="group"] button,
194
+ [role="group"] [type="submit"],
195
+ [role="group"] [type="button"],
196
+ [role="group"] [role="button"] {
197
+ --pico-form-element-spacing-horizontal: 2rem;
198
+ }
199
+
200
+ details summary[role="button"]:not(.outline)::after {
201
+ filter: brightness(0) invert(1);
202
+ }
203
+
204
+ [aria-busy="true"]:not(input, select, textarea):is(
205
+ button,
206
+ [type="submit"],
207
+ [type="button"],
208
+ [type="reset"],
209
+ [role="button"]
210
+ ):not(.outline)::before {
211
+ filter: brightness(0) invert(1);
212
+ }
213
+
214
+ /**
215
+ * Color schemes
216
+ * One palette for both schemes: light-dark() picks the value from the used color-scheme,
217
+ * so the dark scheme only has to switch color-scheme (same selectors as before).
218
+ */
219
+ :scope,
220
+ :host,
221
+ [data-theme="light"],
222
+ [data-theme="dark"] {
223
+ color-scheme: light;
224
+ --pico-background-color: light-dark(#fff, rgb(19, 22.5, 30.5));
225
+ --pico-color: light-dark(#373c44, #c2c7d0);
226
+ --pico-text-selection-color: light-dark(rgba(2, 154, 232, 0.25), rgba(1, 170, 255, 0.1875));
227
+ --pico-muted-color: light-dark(#646b79, #7b8495);
228
+ --pico-muted-border-color: light-dark(rgb(231, 234, 239.5), #202632);
229
+ --pico-primary: light-dark(#0172ad, #01aaff);
230
+ --pico-primary-background: #0172ad;
231
+ --pico-primary-border: var(--pico-primary-background);
232
+ --pico-primary-underline: light-dark(rgba(1, 114, 173, 0.5), rgba(1, 170, 255, 0.5));
233
+ --pico-primary-hover: light-dark(#015887, #79c0ff);
234
+ --pico-primary-hover-background: light-dark(#02659a, #017fc0);
235
+ --pico-primary-hover-border: var(--pico-primary-hover-background);
236
+ --pico-primary-hover-underline: var(--pico-primary-hover);
237
+ /* Focus rings are opaque: at 25–50% alpha they composite below 3:1 (SC 1.4.11), see #167 */
238
+ --pico-primary-focus: light-dark(rgb(2, 138, 212), rgb(1, 170, 255));
239
+ --pico-primary-inverse: #fff;
240
+ --pico-secondary: light-dark(#5d6b89, #969eaf);
241
+ --pico-secondary-background: #525f7a;
242
+ --pico-secondary-border: var(--pico-secondary-background);
243
+ --pico-secondary-underline: light-dark(rgba(93, 107, 137, 0.5), rgba(150, 158, 175, 0.5));
244
+ --pico-secondary-hover: light-dark(#48536b, #b3b9c5);
245
+ --pico-secondary-hover-background: light-dark(#48536b, #5d6b89);
246
+ --pico-secondary-hover-border: var(--pico-secondary-hover-background);
247
+ --pico-secondary-hover-underline: var(--pico-secondary-hover);
248
+ --pico-secondary-focus: light-dark(rgb(93, 107, 137), rgb(144, 158, 190));
249
+ --pico-secondary-inverse: #fff;
250
+ --pico-contrast: light-dark(#181c25, #dfe3eb);
251
+ --pico-contrast-background: light-dark(#181c25, #eff1f4);
252
+ --pico-contrast-border: var(--pico-contrast-background);
253
+ --pico-contrast-underline: light-dark(rgba(24, 28, 37, 0.5), rgba(223, 227, 235, 0.5));
254
+ --pico-contrast-hover: light-dark(#000, #fff);
255
+ --pico-contrast-hover-background: light-dark(#000, #fff);
256
+ --pico-contrast-hover-border: var(--pico-contrast-hover-background);
257
+ --pico-contrast-hover-underline: light-dark(
258
+ var(--pico-secondary-hover),
259
+ var(--pico-contrast-hover)
260
+ );
261
+ --pico-contrast-focus: light-dark(rgb(93, 107, 137), rgb(207, 213, 226));
262
+ --pico-contrast-inverse: light-dark(#fff, #000);
263
+ --pico-box-shadow: 0 0.5rem 2.5rem light-dark(rgba(129, 145, 181, 0.2), rgba(7, 8.5, 12, 0.2));
264
+ --pico-h1-color: light-dark(#2d3138, #f0f1f3);
265
+ --pico-h2-color: light-dark(#373c44, #e0e3e7);
266
+ --pico-h3-color: light-dark(#424751, #c2c7d0);
267
+ --pico-h4-color: light-dark(#4d535e, #b3b9c5);
268
+ --pico-h5-color: light-dark(#5c6370, #a4acba);
269
+ --pico-h6-color: light-dark(#646b79, #8891a4);
270
+ --pico-mark-background-color: light-dark(rgb(252.5, 230.5, 191.5), #014063);
271
+ --pico-mark-color: light-dark(#0f1114, #fff);
272
+ --pico-ins-color: light-dark(rgb(28.5, 105.5, 84), #62af9a);
273
+ --pico-del-color: light-dark(rgb(136, 56.5, 53), rgb(205.5, 126, 123));
274
+ --pico-blockquote-border-color: var(--pico-muted-border-color);
275
+ --pico-blockquote-footer-color: var(--pico-muted-color);
276
+ --pico-button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
277
+ --pico-button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
278
+ --pico-table-border-color: var(--pico-muted-border-color);
279
+ --pico-table-row-stripped-background-color: rgba(111, 120, 135, 0.0375);
280
+ --pico-code-background-color: light-dark(rgb(243, 244.5, 246.75), rgb(26, 30.5, 40.25));
281
+ --pico-code-color: light-dark(#646b79, #8891a4);
282
+ --pico-code-kbd-background-color: var(--pico-color);
283
+ --pico-code-kbd-color: var(--pico-background-color);
284
+ --pico-form-element-background-color: light-dark(rgb(251, 251.5, 252.25), rgb(28, 33, 43.5));
285
+ --pico-form-element-selected-background-color: light-dark(#dfe3eb, #2a3140);
286
+ --pico-form-element-border-color: light-dark(#cfd5e2, #2a3140);
287
+ --pico-form-element-color: light-dark(#23262c, #e0e3e7);
288
+ --pico-form-element-placeholder-color: light-dark(var(--pico-muted-color), #8891a4);
289
+ --pico-form-element-active-background-color: light-dark(#fff, rgb(26, 30.5, 40.25));
290
+ --pico-form-element-active-border-color: var(--pico-primary-border);
291
+ --pico-form-element-focus-color: var(--pico-primary-border);
292
+ --pico-form-element-disabled-opacity: 0.5;
293
+ --pico-form-element-invalid-border-color: light-dark(
294
+ rgb(183.5, 105.5, 106.5),
295
+ rgb(200.25, 79.25, 72.25)
296
+ );
297
+ --pico-form-element-invalid-active-border-color: light-dark(
298
+ rgb(200.25, 79.25, 72.25),
299
+ rgb(214, 92, 86)
300
+ );
301
+ --pico-form-element-invalid-focus-color: var(--pico-form-element-invalid-active-border-color);
302
+ --pico-form-element-valid-border-color: light-dark(rgb(76, 154.5, 137.5), #2a7b6f);
303
+ --pico-form-element-valid-active-border-color: light-dark(
304
+ rgb(39, 152.75, 118.75),
305
+ rgb(22, 137, 105.5)
306
+ );
307
+ --pico-form-element-valid-focus-color: var(--pico-form-element-valid-active-border-color);
308
+ /* One stroke color for both schemes, at least 3:1 on light and dark form backgrounds */
309
+ --pico-icon-valid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(76, 154.5, 137.5)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");
310
+ --pico-icon-invalid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(200.25, 79.25, 72.25)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");
311
+ }
312
+
313
+ input:is(
314
+ [type="submit"],
315
+ [type="button"],
316
+ [type="reset"],
317
+ [type="checkbox"],
318
+ [type="radio"],
319
+ [type="file"]
320
+ ) {
321
+ --pico-form-element-focus-color: var(--pico-primary-focus);
322
+ }
323
+
324
+ /* Dark scheme: switch color-scheme, plus filters that light-dark() can't pick */
325
+ @media only screen and (prefers-color-scheme: dark) {
326
+ :scope:not([data-theme]),
327
+ :host(:not([data-theme])) {
328
+ color-scheme: dark;
329
+ }
330
+ :scope:not([data-theme]) details summary[role="button"].contrast:not(.outline)::after,
331
+ :host(:not([data-theme])) details summary[role="button"].contrast:not(.outline)::after,
332
+ :scope:not([data-theme])
333
+ [aria-busy="true"]:not(input, select, textarea).contrast:is(
334
+ button,
335
+ [type="submit"],
336
+ [type="button"],
337
+ [type="reset"],
338
+ [role="button"]
339
+ ):not(.outline)::before,
340
+ :host(:not([data-theme]))
341
+ [aria-busy="true"]:not(input, select, textarea).contrast:is(
342
+ button,
343
+ [type="submit"],
344
+ [type="button"],
345
+ [type="reset"],
346
+ [role="button"]
347
+ ):not(.outline)::before {
348
+ filter: brightness(0);
349
+ }
350
+ }
351
+ [data-theme="dark"] {
352
+ color-scheme: dark;
353
+ }
354
+ [data-theme="dark"] details summary[role="button"].contrast:not(.outline)::after,
355
+ [data-theme="dark"]
356
+ [aria-busy="true"]:not(input, select, textarea).contrast:is(
357
+ button,
358
+ [type="submit"],
359
+ [type="button"],
360
+ [type="reset"],
361
+ [role="button"]
362
+ ):not(.outline)::before {
363
+ filter: brightness(0);
364
+ }
365
+
366
+ progress,
367
+ [type="checkbox"],
368
+ [type="radio"],
369
+ [type="range"] {
370
+ accent-color: var(--pico-primary);
371
+ }
372
+
373
+ /**
374
+ * Document
375
+ * Content-box & Responsive typography
376
+ */
377
+ *,
378
+ *::before,
379
+ *::after {
380
+ box-sizing: border-box;
381
+ background-repeat: no-repeat;
382
+ }
383
+
384
+ ::before,
385
+ ::after {
386
+ text-decoration: inherit;
387
+ vertical-align: inherit;
388
+ }
389
+
390
+ :where(:scope),
391
+ :where(:host) {
392
+ -webkit-tap-highlight-color: transparent;
393
+ -webkit-text-size-adjust: 100%;
394
+ -moz-text-size-adjust: 100%;
395
+ text-size-adjust: 100%;
396
+ background-color: var(--pico-background-color);
397
+ color: var(--pico-color);
398
+ font-weight: var(--pico-font-weight);
399
+ font-size: var(--pico-font-size);
400
+ line-height: var(--pico-line-height);
401
+ font-family: var(--pico-font-family);
402
+ text-underline-offset: var(--pico-text-underline-offset);
403
+ text-rendering: optimizeLegibility;
404
+ overflow-wrap: break-word;
405
+ -moz-tab-size: 4;
406
+ -o-tab-size: 4;
407
+ tab-size: 4;
408
+ }
409
+
410
+ body {
411
+ width: 100%;
412
+ margin: 0;
413
+ }
414
+
415
+ main {
416
+ display: block;
417
+ }
418
+
419
+ /**
420
+ * Section
421
+ */
422
+ section {
423
+ margin-bottom: var(--pico-block-spacing-vertical);
424
+ }
425
+ /**
426
+ * Container
427
+ */
428
+ .container,
429
+ .container-fluid {
430
+ width: 100%;
431
+ margin-right: auto;
432
+ margin-left: auto;
433
+ padding-right: var(--pico-spacing);
434
+ padding-left: var(--pico-spacing);
435
+ }
436
+
437
+ @media (min-width: 576px) {
438
+ .container {
439
+ max-width: 510px;
440
+ padding-right: 0;
441
+ padding-left: 0;
442
+ }
443
+ }
444
+ @media (min-width: 768px) {
445
+ .container {
446
+ max-width: 700px;
447
+ }
448
+ }
449
+ @media (min-width: 1024px) {
450
+ .container {
451
+ max-width: 950px;
452
+ }
453
+ }
454
+ @media (min-width: 1280px) {
455
+ .container {
456
+ max-width: 1200px;
457
+ }
458
+ }
459
+ @media (min-width: 1536px) {
460
+ .container {
461
+ max-width: 1450px;
462
+ }
463
+ }
464
+ /**
465
+ * Grid
466
+ * Minimal grid system with auto-layout columns
467
+ */
468
+ .grid {
469
+ grid-column-gap: var(--pico-grid-column-gap);
470
+ grid-row-gap: var(--pico-grid-row-gap);
471
+ display: grid;
472
+ grid-template-columns: 1fr;
473
+ }
474
+ @media (min-width: 768px) {
475
+ .grid {
476
+ grid-template-columns: repeat(auto-fit, minmax(0%, 1fr));
477
+ }
478
+ }
479
+ .grid > *:not(.does-not-exist) {
480
+ min-width: 0;
481
+ margin-bottom: 0; /* https://github.com/picocss/pico/issues/738 */
482
+ }
483
+ /**
484
+ * Overflow auto
485
+ */
486
+ .overflow-auto {
487
+ overflow: auto;
488
+ }
489
+ /**
490
+ * Typography
491
+ */
492
+ b,
493
+ strong {
494
+ font-weight: bolder;
495
+ }
496
+
497
+ sub,
498
+ sup {
499
+ position: relative;
500
+ font-size: 0.75em;
501
+ line-height: 0;
502
+ vertical-align: baseline;
503
+ }
504
+
505
+ sub {
506
+ bottom: -0.25em;
507
+ }
508
+
509
+ sup {
510
+ top: -0.5em;
511
+ }
512
+
513
+ address,
514
+ blockquote,
515
+ dl,
516
+ ol,
517
+ p,
518
+ pre,
519
+ table,
520
+ ul {
521
+ margin-top: 0;
522
+ margin-bottom: var(--pico-typography-spacing-vertical);
523
+ color: var(--pico-color);
524
+ font-style: normal;
525
+ font-weight: var(--pico-font-weight);
526
+ }
527
+
528
+ h1,
529
+ h2,
530
+ h3,
531
+ h4,
532
+ h5,
533
+ h6 {
534
+ margin-top: 0;
535
+ margin-bottom: var(--pico-typography-spacing-vertical);
536
+ color: var(--pico-color);
537
+ font-weight: var(--pico-font-weight);
538
+ font-size: var(--pico-font-size);
539
+ line-height: var(--pico-line-height);
540
+ font-family: var(--pico-font-family);
541
+ }
542
+
543
+ h1 {
544
+ --pico-color: var(--pico-h1-color);
545
+ }
546
+
547
+ h2 {
548
+ --pico-color: var(--pico-h2-color);
549
+ }
550
+
551
+ h3 {
552
+ --pico-color: var(--pico-h3-color);
553
+ }
554
+
555
+ h4 {
556
+ --pico-color: var(--pico-h4-color);
557
+ }
558
+
559
+ h5 {
560
+ --pico-color: var(--pico-h5-color);
561
+ }
562
+
563
+ h6 {
564
+ --pico-color: var(--pico-h6-color);
565
+ }
566
+
567
+ :where(article, address, blockquote, dl, figure, form, ol, p, pre, table, ul)
568
+ ~ :is(h1, h2, h3, h4, h5, h6) {
569
+ margin-top: var(--pico-typography-spacing-top);
570
+ }
571
+
572
+ p {
573
+ margin-bottom: var(--pico-typography-spacing-vertical);
574
+ }
575
+
576
+ hgroup {
577
+ margin-bottom: var(--pico-typography-spacing-vertical);
578
+ }
579
+ hgroup > * {
580
+ margin-top: 0;
581
+ margin-bottom: 0;
582
+ }
583
+ hgroup > *:not(:first-child):last-child {
584
+ --pico-color: var(--pico-muted-color);
585
+ --pico-font-weight: unset;
586
+ font-size: 1rem;
587
+ }
588
+
589
+ :where(ol, ul) li {
590
+ margin-bottom: calc(var(--pico-typography-spacing-vertical) * 0.25);
591
+ }
592
+
593
+ :where(dl, ol, ul) :where(dl, ol, ul) {
594
+ margin: 0;
595
+ margin-top: calc(var(--pico-typography-spacing-vertical) * 0.25);
596
+ }
597
+
598
+ ul li {
599
+ list-style: square;
600
+ }
601
+
602
+ mark {
603
+ padding: 0.125rem 0.25rem;
604
+ background-color: var(--pico-mark-background-color);
605
+ color: var(--pico-mark-color);
606
+ vertical-align: baseline;
607
+ }
608
+
609
+ blockquote {
610
+ display: block;
611
+ margin: var(--pico-typography-spacing-vertical) 0;
612
+ padding: var(--pico-spacing);
613
+ border-right: none;
614
+ border-left: 0.25rem solid var(--pico-blockquote-border-color);
615
+ border-inline-start: 0.25rem solid var(--pico-blockquote-border-color);
616
+ border-inline-end: none;
617
+ }
618
+ blockquote footer {
619
+ margin-top: calc(var(--pico-typography-spacing-vertical) * 0.5);
620
+ color: var(--pico-blockquote-footer-color);
621
+ }
622
+
623
+ abbr[title] {
624
+ border-bottom: 1px dotted;
625
+ text-decoration: none;
626
+ cursor: help;
627
+ }
628
+
629
+ ins {
630
+ color: var(--pico-ins-color);
631
+ text-decoration: none;
632
+ }
633
+
634
+ del {
635
+ color: var(--pico-del-color);
636
+ }
637
+
638
+ ::-moz-selection {
639
+ background-color: var(--pico-text-selection-color);
640
+ }
641
+
642
+ ::selection {
643
+ background-color: var(--pico-text-selection-color);
644
+ }
645
+
646
+ /**
647
+ * Link
648
+ */
649
+ :where(a:not([role="button"])),
650
+ [role="link"] {
651
+ --pico-color: var(--pico-primary);
652
+ --pico-background-color: transparent;
653
+ --pico-underline: var(--pico-primary-underline);
654
+ outline: none;
655
+ background-color: var(--pico-background-color);
656
+ color: var(--pico-color);
657
+ -webkit-text-decoration: var(--pico-text-decoration);
658
+ text-decoration: var(--pico-text-decoration);
659
+ text-decoration-color: var(--pico-underline);
660
+ text-underline-offset: 0.125em;
661
+ transition:
662
+ background-color var(--pico-transition),
663
+ color var(--pico-transition),
664
+ box-shadow var(--pico-transition),
665
+ -webkit-text-decoration var(--pico-transition);
666
+ transition:
667
+ background-color var(--pico-transition),
668
+ color var(--pico-transition),
669
+ text-decoration var(--pico-transition),
670
+ box-shadow var(--pico-transition);
671
+ transition:
672
+ background-color var(--pico-transition),
673
+ color var(--pico-transition),
674
+ text-decoration var(--pico-transition),
675
+ box-shadow var(--pico-transition),
676
+ -webkit-text-decoration var(--pico-transition);
677
+ }
678
+ :where(a:not([role="button"])):is(
679
+ [aria-current]:not([aria-current="false"]),
680
+ :hover,
681
+ :active,
682
+ :focus
683
+ ),
684
+ [role="link"]:is([aria-current]:not([aria-current="false"]), :hover, :active, :focus) {
685
+ --pico-color: var(--pico-primary-hover);
686
+ --pico-underline: var(--pico-primary-hover-underline);
687
+ --pico-text-decoration: underline;
688
+ }
689
+ :where(a:not([role="button"])):focus-visible,
690
+ [role="link"]:focus-visible {
691
+ box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-primary-focus);
692
+ }
693
+ :where(a:not([role="button"])).secondary,
694
+ [role="link"].secondary {
695
+ --pico-color: var(--pico-secondary);
696
+ --pico-underline: var(--pico-secondary-underline);
697
+ }
698
+ :where(a:not([role="button"])).secondary:is(
699
+ [aria-current]:not([aria-current="false"]),
700
+ :hover,
701
+ :active,
702
+ :focus
703
+ ),
704
+ [role="link"].secondary:is([aria-current]:not([aria-current="false"]), :hover, :active, :focus) {
705
+ --pico-color: var(--pico-secondary-hover);
706
+ --pico-underline: var(--pico-secondary-hover-underline);
707
+ }
708
+ :where(a:not([role="button"])).contrast,
709
+ [role="link"].contrast {
710
+ --pico-color: var(--pico-contrast);
711
+ --pico-underline: var(--pico-contrast-underline);
712
+ }
713
+ :where(a:not([role="button"])).contrast:is(
714
+ [aria-current]:not([aria-current="false"]),
715
+ :hover,
716
+ :active,
717
+ :focus
718
+ ),
719
+ [role="link"].contrast:is([aria-current]:not([aria-current="false"]), :hover, :active, :focus) {
720
+ --pico-color: var(--pico-contrast-hover);
721
+ --pico-underline: var(--pico-contrast-hover-underline);
722
+ }
723
+
724
+ a[role="button"] {
725
+ display: inline-block;
726
+ }
727
+
728
+ /**
729
+ * Button
730
+ */
731
+ button {
732
+ margin: 0;
733
+ overflow: visible;
734
+ font-family: inherit;
735
+ text-transform: none;
736
+ }
737
+
738
+ button,
739
+ [type="submit"],
740
+ [type="reset"],
741
+ [type="button"] {
742
+ -webkit-appearance: button;
743
+ }
744
+
745
+ button,
746
+ [type="submit"],
747
+ [type="reset"],
748
+ [type="button"],
749
+ [type="file"]::file-selector-button,
750
+ [role="button"] {
751
+ --pico-background-color: var(--pico-primary-background);
752
+ --pico-border-color: var(--pico-primary-border);
753
+ --pico-color: var(--pico-primary-inverse);
754
+ --pico-box-shadow: var(--pico-button-box-shadow, 0 0 0 rgba(0, 0, 0, 0));
755
+ padding: var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal);
756
+ border: var(--pico-border-width) solid var(--pico-border-color);
757
+ border-radius: var(--pico-border-radius);
758
+ outline: none;
759
+ background-color: var(--pico-background-color);
760
+ box-shadow: var(--pico-box-shadow);
761
+ color: var(--pico-color);
762
+ font-weight: var(--pico-button-font-weight, var(--pico-font-weight));
763
+ font-size: 1rem;
764
+ line-height: var(--pico-line-height);
765
+ text-align: center;
766
+ text-decoration: none;
767
+ cursor: pointer;
768
+ -webkit-user-select: none;
769
+ -moz-user-select: none;
770
+ transition:
771
+ background-color var(--pico-transition),
772
+ border-color var(--pico-transition),
773
+ color var(--pico-transition),
774
+ box-shadow var(--pico-transition);
775
+ user-select: none;
776
+ }
777
+ button:is([aria-current]:not([aria-current="false"])),
778
+ button:is(:hover, :active, :focus),
779
+ [type="submit"]:is([aria-current]:not([aria-current="false"])),
780
+ [type="submit"]:is(:hover, :active, :focus),
781
+ [type="reset"]:is([aria-current]:not([aria-current="false"])),
782
+ [type="reset"]:is(:hover, :active, :focus),
783
+ [type="button"]:is([aria-current]:not([aria-current="false"])),
784
+ [type="button"]:is(:hover, :active, :focus),
785
+ [type="file"]::file-selector-button:is([aria-current]:not([aria-current="false"])),
786
+ [type="file"]::file-selector-button:is(:hover, :active, :focus),
787
+ [role="button"]:is([aria-current]:not([aria-current="false"])),
788
+ [role="button"]:is(:hover, :active, :focus) {
789
+ --pico-background-color: var(--pico-primary-hover-background);
790
+ --pico-border-color: var(--pico-primary-hover-border);
791
+ --pico-box-shadow: var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));
792
+ --pico-color: var(--pico-primary-inverse);
793
+ }
794
+ button:focus,
795
+ button:is([aria-current]:not([aria-current="false"])):focus,
796
+ [type="submit"]:focus,
797
+ [type="submit"]:is([aria-current]:not([aria-current="false"])):focus,
798
+ [type="reset"]:focus,
799
+ [type="reset"]:is([aria-current]:not([aria-current="false"])):focus,
800
+ [type="button"]:focus,
801
+ [type="button"]:is([aria-current]:not([aria-current="false"])):focus,
802
+ [type="file"]::file-selector-button:focus,
803
+ [type="file"]::file-selector-button:is([aria-current]:not([aria-current="false"])):focus,
804
+ [role="button"]:focus,
805
+ [role="button"]:is([aria-current]:not([aria-current="false"])):focus {
806
+ --pico-box-shadow:
807
+ var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),
808
+ 0 0 0 var(--pico-outline-width) var(--pico-primary-focus);
809
+ }
810
+
811
+ [type="submit"],
812
+ [type="reset"],
813
+ [type="button"] {
814
+ margin-bottom: var(--pico-spacing);
815
+ }
816
+
817
+ :is(button, [type="submit"], [type="button"], [role="button"]).secondary,
818
+ [type="reset"],
819
+ [type="file"]::file-selector-button {
820
+ --pico-background-color: var(--pico-secondary-background);
821
+ --pico-border-color: var(--pico-secondary-border);
822
+ --pico-color: var(--pico-secondary-inverse);
823
+ cursor: pointer;
824
+ }
825
+ :is(button, [type="submit"], [type="button"], [role="button"]).secondary:is(
826
+ [aria-current]:not([aria-current="false"]),
827
+ :hover,
828
+ :active,
829
+ :focus
830
+ ),
831
+ [type="reset"]:is([aria-current]:not([aria-current="false"]), :hover, :active, :focus),
832
+ [type="file"]::file-selector-button:is(
833
+ [aria-current]:not([aria-current="false"]),
834
+ :hover,
835
+ :active,
836
+ :focus
837
+ ) {
838
+ --pico-background-color: var(--pico-secondary-hover-background);
839
+ --pico-border-color: var(--pico-secondary-hover-border);
840
+ --pico-color: var(--pico-secondary-inverse);
841
+ }
842
+ :is(button, [type="submit"], [type="button"], [role="button"]).secondary:focus,
843
+ :is(button, [type="submit"], [type="button"], [role="button"]).secondary:is(
844
+ [aria-current]:not([aria-current="false"])
845
+ ):focus,
846
+ [type="reset"]:focus,
847
+ [type="reset"]:is([aria-current]:not([aria-current="false"])):focus,
848
+ [type="file"]::file-selector-button:focus,
849
+ [type="file"]::file-selector-button:is([aria-current]:not([aria-current="false"])):focus {
850
+ --pico-box-shadow:
851
+ var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),
852
+ 0 0 0 var(--pico-outline-width) var(--pico-secondary-focus);
853
+ }
854
+
855
+ :is(button, [type="submit"], [type="button"], [role="button"]).contrast {
856
+ --pico-background-color: var(--pico-contrast-background);
857
+ --pico-border-color: var(--pico-contrast-border);
858
+ --pico-color: var(--pico-contrast-inverse);
859
+ }
860
+ :is(button, [type="submit"], [type="button"], [role="button"]).contrast:is(
861
+ [aria-current]:not([aria-current="false"]),
862
+ :hover,
863
+ :active,
864
+ :focus
865
+ ) {
866
+ --pico-background-color: var(--pico-contrast-hover-background);
867
+ --pico-border-color: var(--pico-contrast-hover-border);
868
+ --pico-color: var(--pico-contrast-inverse);
869
+ }
870
+ :is(button, [type="submit"], [type="button"], [role="button"]).contrast:focus,
871
+ :is(button, [type="submit"], [type="button"], [role="button"]).contrast:is(
872
+ [aria-current]:not([aria-current="false"])
873
+ ):focus {
874
+ --pico-box-shadow:
875
+ var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),
876
+ 0 0 0 var(--pico-outline-width) var(--pico-contrast-focus);
877
+ }
878
+
879
+ :is(button, [type="submit"], [type="button"], [role="button"]).outline,
880
+ [type="reset"].outline {
881
+ --pico-background-color: transparent;
882
+ --pico-color: var(--pico-primary);
883
+ --pico-border-color: var(--pico-primary);
884
+ }
885
+ :is(button, [type="submit"], [type="button"], [role="button"]).outline:is(
886
+ [aria-current]:not([aria-current="false"]),
887
+ :hover,
888
+ :active,
889
+ :focus
890
+ ),
891
+ [type="reset"].outline:is([aria-current]:not([aria-current="false"]), :hover, :active, :focus) {
892
+ --pico-background-color: transparent;
893
+ --pico-color: var(--pico-primary-hover);
894
+ --pico-border-color: var(--pico-primary-hover);
895
+ }
896
+
897
+ :is(button, [type="submit"], [type="button"], [role="button"]).outline.secondary,
898
+ [type="reset"].outline {
899
+ --pico-color: var(--pico-secondary);
900
+ --pico-border-color: var(--pico-secondary);
901
+ }
902
+ :is(button, [type="submit"], [type="button"], [role="button"]).outline.secondary:is(
903
+ [aria-current]:not([aria-current="false"]),
904
+ :hover,
905
+ :active,
906
+ :focus
907
+ ),
908
+ [type="reset"].outline:is([aria-current]:not([aria-current="false"]), :hover, :active, :focus) {
909
+ --pico-color: var(--pico-secondary-hover);
910
+ --pico-border-color: var(--pico-secondary-hover);
911
+ }
912
+
913
+ :is(button, [type="submit"], [type="button"], [role="button"]).outline.contrast {
914
+ --pico-color: var(--pico-contrast);
915
+ --pico-border-color: var(--pico-contrast);
916
+ }
917
+ :is(button, [type="submit"], [type="button"], [role="button"]).outline.contrast:is(
918
+ [aria-current]:not([aria-current="false"]),
919
+ :hover,
920
+ :active,
921
+ :focus
922
+ ) {
923
+ --pico-color: var(--pico-contrast-hover);
924
+ --pico-border-color: var(--pico-contrast-hover);
925
+ }
926
+
927
+ :where(button, [type="submit"], [type="reset"], [type="button"], [role="button"])[disabled],
928
+ :where(fieldset[disabled])
929
+ :is(button, [type="submit"], [type="button"], [type="reset"], [role="button"]) {
930
+ opacity: 0.5;
931
+ pointer-events: none;
932
+ }
933
+
934
+ /**
935
+ * Table
936
+ */
937
+ :where(table) {
938
+ width: 100%;
939
+ border-collapse: collapse;
940
+ border-spacing: 0;
941
+ text-indent: 0;
942
+ }
943
+
944
+ th,
945
+ td {
946
+ padding: calc(var(--pico-spacing) / 2) var(--pico-spacing);
947
+ border-bottom: var(--pico-border-width) solid var(--pico-table-border-color);
948
+ background-color: var(--pico-background-color);
949
+ color: var(--pico-color);
950
+ font-weight: var(--pico-font-weight);
951
+ text-align: start;
952
+ }
953
+
954
+ tfoot th,
955
+ tfoot td {
956
+ border-top: var(--pico-border-width) solid var(--pico-table-border-color);
957
+ border-bottom: 0;
958
+ }
959
+
960
+ table.striped tbody tr:nth-child(odd) th,
961
+ table.striped tbody tr:nth-child(odd) td {
962
+ background-color: var(--pico-table-row-stripped-background-color);
963
+ }
964
+
965
+ /**
966
+ * Embedded content
967
+ */
968
+ :where(audio, canvas, iframe, img, svg, video) {
969
+ vertical-align: middle;
970
+ }
971
+
972
+ audio,
973
+ video {
974
+ display: inline-block;
975
+ }
976
+
977
+ audio:not([controls]) {
978
+ display: none;
979
+ height: 0;
980
+ }
981
+
982
+ :where(iframe) {
983
+ border-style: none;
984
+ }
985
+
986
+ img:not([height]) {
987
+ max-width: 100%;
988
+ height: auto;
989
+ }
990
+
991
+ img {
992
+ border-style: none;
993
+ }
994
+
995
+ :where(svg:not([fill])) {
996
+ fill: currentColor;
997
+ }
998
+
999
+ svg:not(:scope),
1000
+ svg:not(:host) {
1001
+ overflow: hidden;
1002
+ }
1003
+
1004
+ /**
1005
+ * Code
1006
+ */
1007
+ pre,
1008
+ code,
1009
+ var,
1010
+ kbd,
1011
+ samp {
1012
+ font-size: 0.875em;
1013
+ font-family: var(--pico-font-family);
1014
+ }
1015
+
1016
+ pre code,
1017
+ pre samp {
1018
+ font-size: inherit;
1019
+ font-family: inherit;
1020
+ }
1021
+
1022
+ pre {
1023
+ -ms-overflow-style: scrollbar;
1024
+ overflow: auto;
1025
+ }
1026
+
1027
+ pre,
1028
+ code,
1029
+ var,
1030
+ kbd,
1031
+ samp {
1032
+ border-radius: var(--pico-border-radius);
1033
+ background: var(--pico-code-background-color);
1034
+ color: var(--pico-code-color);
1035
+ font-weight: var(--pico-font-weight);
1036
+ line-height: initial;
1037
+ }
1038
+
1039
+ code,
1040
+ var,
1041
+ kbd,
1042
+ samp {
1043
+ display: inline-block;
1044
+ padding: 0.375rem;
1045
+ }
1046
+
1047
+ pre {
1048
+ display: block;
1049
+ margin-bottom: var(--pico-spacing);
1050
+ overflow-x: auto;
1051
+ }
1052
+ pre > code,
1053
+ pre > samp {
1054
+ display: block;
1055
+ padding: var(--pico-spacing);
1056
+ background: none;
1057
+ line-height: var(--pico-line-height);
1058
+ }
1059
+
1060
+ kbd {
1061
+ background-color: var(--pico-code-kbd-background-color);
1062
+ color: var(--pico-code-kbd-color);
1063
+ vertical-align: baseline;
1064
+ }
1065
+
1066
+ /**
1067
+ * Figure
1068
+ */
1069
+ figure {
1070
+ display: block;
1071
+ margin: 0;
1072
+ padding: 0;
1073
+ }
1074
+ figure figcaption {
1075
+ padding: calc(var(--pico-spacing) * 0.5) 0;
1076
+ color: var(--pico-muted-color);
1077
+ }
1078
+ /**
1079
+ * Misc
1080
+ */
1081
+ hr {
1082
+ height: 0;
1083
+ margin: var(--pico-typography-spacing-vertical) 0;
1084
+ border: 0;
1085
+ border-top: 1px solid var(--pico-muted-border-color);
1086
+ color: inherit;
1087
+ }
1088
+
1089
+ [hidden],
1090
+ template {
1091
+ display: none !important;
1092
+ }
1093
+
1094
+ canvas {
1095
+ display: inline-block;
1096
+ }
1097
+
1098
+ /**
1099
+ * Basics form elements
1100
+ */
1101
+ input,
1102
+ optgroup,
1103
+ select,
1104
+ textarea {
1105
+ margin: 0;
1106
+ font-size: 1rem;
1107
+ line-height: var(--pico-line-height);
1108
+ font-family: inherit;
1109
+ letter-spacing: inherit;
1110
+ }
1111
+
1112
+ input {
1113
+ overflow: visible;
1114
+ }
1115
+
1116
+ select {
1117
+ text-transform: none;
1118
+ }
1119
+
1120
+ legend {
1121
+ max-width: 100%;
1122
+ padding: 0;
1123
+ color: inherit;
1124
+ white-space: normal;
1125
+ }
1126
+
1127
+ textarea {
1128
+ overflow: auto;
1129
+ }
1130
+
1131
+ [type="checkbox"],
1132
+ [type="radio"] {
1133
+ padding: 0;
1134
+ }
1135
+
1136
+ ::-webkit-inner-spin-button,
1137
+ ::-webkit-outer-spin-button {
1138
+ height: auto;
1139
+ }
1140
+
1141
+ [type="search"] {
1142
+ -webkit-appearance: textfield;
1143
+ outline-offset: -2px;
1144
+ }
1145
+
1146
+ [type="search"]::-webkit-search-decoration {
1147
+ -webkit-appearance: none;
1148
+ }
1149
+
1150
+ ::-webkit-file-upload-button {
1151
+ -webkit-appearance: button;
1152
+ font: inherit;
1153
+ }
1154
+
1155
+ ::-moz-focus-inner {
1156
+ padding: 0;
1157
+ border-style: none;
1158
+ }
1159
+
1160
+ :-moz-focusring {
1161
+ outline: none;
1162
+ }
1163
+
1164
+ :-moz-ui-invalid {
1165
+ box-shadow: none;
1166
+ }
1167
+
1168
+ ::-ms-expand {
1169
+ display: none;
1170
+ }
1171
+
1172
+ [type="file"],
1173
+ [type="range"] {
1174
+ padding: 0;
1175
+ border-width: 0;
1176
+ }
1177
+
1178
+ input:not([type="checkbox"], [type="radio"], [type="range"]) {
1179
+ height: calc(
1180
+ 1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 +
1181
+ var(--pico-border-width) * 2
1182
+ );
1183
+ }
1184
+
1185
+ fieldset {
1186
+ width: 100%;
1187
+ min-width: 0;
1188
+ margin: 0;
1189
+ margin-bottom: var(--pico-spacing);
1190
+ padding: 0;
1191
+ border: 0;
1192
+ }
1193
+
1194
+ label,
1195
+ fieldset legend {
1196
+ display: block;
1197
+ margin-bottom: calc(var(--pico-spacing) * 0.375);
1198
+ color: var(--pico-color);
1199
+ font-weight: var(--pico-form-label-font-weight, var(--pico-font-weight));
1200
+ }
1201
+
1202
+ fieldset legend {
1203
+ margin-bottom: calc(var(--pico-spacing) * 0.5);
1204
+ }
1205
+
1206
+ input:not([type="checkbox"], [type="radio"]),
1207
+ button[type="submit"],
1208
+ select,
1209
+ textarea {
1210
+ width: 100%;
1211
+ }
1212
+
1213
+ input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"]),
1214
+ select,
1215
+ textarea {
1216
+ -webkit-appearance: none;
1217
+ -moz-appearance: none;
1218
+ appearance: none;
1219
+ padding: var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal);
1220
+ }
1221
+
1222
+ input,
1223
+ select,
1224
+ textarea {
1225
+ --pico-background-color: var(--pico-form-element-background-color);
1226
+ --pico-border-color: var(--pico-form-element-border-color);
1227
+ --pico-color: var(--pico-form-element-color);
1228
+ --pico-box-shadow: none;
1229
+ border: var(--pico-border-width) solid var(--pico-border-color);
1230
+ border-radius: var(--pico-border-radius);
1231
+ outline: none;
1232
+ background-color: var(--pico-background-color);
1233
+ box-shadow: var(--pico-box-shadow);
1234
+ color: var(--pico-color);
1235
+ font-weight: var(--pico-font-weight);
1236
+ transition:
1237
+ background-color var(--pico-transition),
1238
+ border-color var(--pico-transition),
1239
+ color var(--pico-transition),
1240
+ box-shadow var(--pico-transition);
1241
+ }
1242
+
1243
+ input:not(
1244
+ [type="submit"],
1245
+ [type="button"],
1246
+ [type="reset"],
1247
+ [type="checkbox"],
1248
+ [type="radio"],
1249
+ [readonly]
1250
+ ):is(:active, :focus),
1251
+ :where(select, textarea):not([readonly]):is(:active, :focus) {
1252
+ --pico-background-color: var(--pico-form-element-active-background-color);
1253
+ }
1254
+
1255
+ input:not([type="submit"], [type="button"], [type="reset"], [role="switch"], [readonly]):is(
1256
+ :active,
1257
+ :focus
1258
+ ),
1259
+ :where(select, textarea):not([readonly]):is(:active, :focus) {
1260
+ --pico-border-color: var(--pico-form-element-active-border-color);
1261
+ }
1262
+
1263
+ input:not(
1264
+ [type="submit"],
1265
+ [type="button"],
1266
+ [type="reset"],
1267
+ [type="range"],
1268
+ [type="file"],
1269
+ [readonly]
1270
+ ):focus,
1271
+ :where(select, textarea):not([readonly]):focus {
1272
+ --pico-box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-form-element-focus-color);
1273
+ }
1274
+
1275
+ input:not([type="submit"], [type="button"], [type="reset"])[disabled],
1276
+ select[disabled],
1277
+ textarea[disabled],
1278
+ label[aria-disabled="true"],
1279
+ :where(fieldset[disabled])
1280
+ :is(input:not([type="submit"], [type="button"], [type="reset"]), select, textarea) {
1281
+ opacity: var(--pico-form-element-disabled-opacity);
1282
+ pointer-events: none;
1283
+ }
1284
+
1285
+ label[aria-disabled="true"] input[disabled] {
1286
+ opacity: 1;
1287
+ }
1288
+
1289
+ :where(input, select, textarea):not(
1290
+ [type="checkbox"],
1291
+ [type="radio"],
1292
+ [type="date"],
1293
+ [type="datetime-local"],
1294
+ [type="month"],
1295
+ [type="time"],
1296
+ [type="week"],
1297
+ [type="range"]
1298
+ )[aria-invalid] {
1299
+ padding-right: calc(var(--pico-form-element-spacing-horizontal) + 1.5rem) !important;
1300
+ padding-left: var(--pico-form-element-spacing-horizontal);
1301
+ padding-inline-start: var(--pico-form-element-spacing-horizontal) !important;
1302
+ padding-inline-end: calc(var(--pico-form-element-spacing-horizontal) + 1.5rem) !important;
1303
+ background-position: center right 0.75rem;
1304
+ background-size: 1rem auto;
1305
+ background-repeat: no-repeat;
1306
+ }
1307
+ :where(input, select, textarea):not(
1308
+ [type="checkbox"],
1309
+ [type="radio"],
1310
+ [type="date"],
1311
+ [type="datetime-local"],
1312
+ [type="month"],
1313
+ [type="time"],
1314
+ [type="week"],
1315
+ [type="range"]
1316
+ )[aria-invalid="false"]:not(select) {
1317
+ background-image: var(--pico-icon-valid);
1318
+ }
1319
+ :where(input, select, textarea):not(
1320
+ [type="checkbox"],
1321
+ [type="radio"],
1322
+ [type="date"],
1323
+ [type="datetime-local"],
1324
+ [type="month"],
1325
+ [type="time"],
1326
+ [type="week"],
1327
+ [type="range"]
1328
+ )[aria-invalid="true"]:not(select) {
1329
+ background-image: var(--pico-icon-invalid);
1330
+ }
1331
+ :where(input, select, textarea)[aria-invalid="false"] {
1332
+ --pico-border-color: var(--pico-form-element-valid-border-color);
1333
+ }
1334
+ :where(input, select, textarea)[aria-invalid="false"]:is(:active, :focus) {
1335
+ --pico-border-color: var(--pico-form-element-valid-active-border-color) !important;
1336
+ }
1337
+ :where(input, select, textarea)[aria-invalid="false"]:is(:active, :focus):not(
1338
+ [type="checkbox"],
1339
+ [type="radio"]
1340
+ ) {
1341
+ --pico-box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-form-element-valid-focus-color) !important;
1342
+ }
1343
+ :where(input, select, textarea)[aria-invalid="true"] {
1344
+ --pico-border-color: var(--pico-form-element-invalid-border-color);
1345
+ }
1346
+ :where(input, select, textarea)[aria-invalid="true"]:is(:active, :focus) {
1347
+ --pico-border-color: var(--pico-form-element-invalid-active-border-color) !important;
1348
+ }
1349
+ :where(input, select, textarea)[aria-invalid="true"]:is(:active, :focus):not(
1350
+ [type="checkbox"],
1351
+ [type="radio"]
1352
+ ) {
1353
+ --pico-box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-form-element-invalid-focus-color) !important;
1354
+ }
1355
+
1356
+ [dir="rtl"]
1357
+ :where(input, select, textarea):not([type="checkbox"], [type="radio"]):is(
1358
+ [aria-invalid],
1359
+ [aria-invalid="true"],
1360
+ [aria-invalid="false"]
1361
+ ) {
1362
+ background-position: center left 0.75rem;
1363
+ }
1364
+
1365
+ input::placeholder,
1366
+ input::-webkit-input-placeholder,
1367
+ textarea::placeholder,
1368
+ textarea::-webkit-input-placeholder,
1369
+ select:invalid {
1370
+ color: var(--pico-form-element-placeholder-color);
1371
+ opacity: 1;
1372
+ }
1373
+
1374
+ input:not([type="checkbox"], [type="radio"]),
1375
+ select,
1376
+ textarea {
1377
+ margin-bottom: var(--pico-spacing);
1378
+ }
1379
+
1380
+ select::-ms-expand {
1381
+ border: 0;
1382
+ background-color: transparent;
1383
+ }
1384
+ select:not([multiple], [size]) {
1385
+ padding-right: calc(var(--pico-form-element-spacing-horizontal) + 1.5rem);
1386
+ padding-left: var(--pico-form-element-spacing-horizontal);
1387
+ padding-inline-start: var(--pico-form-element-spacing-horizontal);
1388
+ padding-inline-end: calc(var(--pico-form-element-spacing-horizontal) + 1.5rem);
1389
+ background-image: var(--pico-icon-chevron);
1390
+ background-position: center right 0.75rem;
1391
+ background-size: 1rem auto;
1392
+ background-repeat: no-repeat;
1393
+ }
1394
+ select[multiple] option:checked {
1395
+ background: var(--pico-form-element-selected-background-color);
1396
+ color: var(--pico-form-element-color);
1397
+ }
1398
+
1399
+ [dir="rtl"] select:not([multiple], [size]) {
1400
+ background-position: center left 0.75rem;
1401
+ }
1402
+
1403
+ textarea {
1404
+ display: block;
1405
+ resize: vertical;
1406
+ }
1407
+ textarea[aria-invalid] {
1408
+ --pico-icon-height: calc(
1409
+ 1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 +
1410
+ var(--pico-border-width) * 2
1411
+ );
1412
+ background-position: top right 0.75rem !important;
1413
+ background-size: 1rem var(--pico-icon-height) !important;
1414
+ }
1415
+
1416
+ :where(input, select, textarea, fieldset, .grid) + small {
1417
+ display: block;
1418
+ width: 100%;
1419
+ margin-top: calc(var(--pico-spacing) * -0.75);
1420
+ margin-bottom: var(--pico-spacing);
1421
+ color: var(--pico-muted-color);
1422
+ }
1423
+ :where(input, select, textarea, fieldset, .grid)[aria-invalid="false"] + small {
1424
+ color: var(--pico-ins-color);
1425
+ }
1426
+ :where(input, select, textarea, fieldset, .grid)[aria-invalid="true"] + small {
1427
+ color: var(--pico-del-color);
1428
+ }
1429
+
1430
+ label > :where(input, select, textarea) {
1431
+ margin-top: calc(var(--pico-spacing) * 0.25);
1432
+ }
1433
+
1434
+ /**
1435
+ * Checkboxes, Radios and Switches
1436
+ */
1437
+ :where(:scope),
1438
+ :host {
1439
+ --pico-icon-checkbox: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");
1440
+ --pico-icon-minus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'%3E%3C/line%3E%3C/svg%3E");
1441
+ }
1442
+ :where(:scope, [data-theme="light"], [data-theme="dark"]),
1443
+ :host {
1444
+ --pico-switch-background-color: light-dark(#bfc7d9, #333c4e);
1445
+ --pico-switch-checked-background-color: var(--pico-primary-background);
1446
+ --pico-switch-color: #fff;
1447
+ --pico-switch-thumb-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
1448
+ }
1449
+
1450
+ label:has([type="checkbox"], [type="radio"]) {
1451
+ width: -moz-fit-content;
1452
+ width: fit-content;
1453
+ cursor: pointer;
1454
+ }
1455
+
1456
+ [type="checkbox"],
1457
+ [type="radio"] {
1458
+ -webkit-appearance: none;
1459
+ -moz-appearance: none;
1460
+ appearance: none;
1461
+ width: 1.25em;
1462
+ height: 1.25em;
1463
+ margin-top: -0.125em;
1464
+ margin-inline-end: 0.5em;
1465
+ border-width: var(--pico-border-width);
1466
+ vertical-align: middle;
1467
+ cursor: pointer;
1468
+ }
1469
+ [type="checkbox"]::-ms-check,
1470
+ [type="radio"]::-ms-check {
1471
+ display: none;
1472
+ }
1473
+ [type="checkbox"]:checked,
1474
+ [type="checkbox"]:checked:active,
1475
+ [type="checkbox"]:checked:focus,
1476
+ [type="radio"]:checked,
1477
+ [type="radio"]:checked:active,
1478
+ [type="radio"]:checked:focus {
1479
+ --pico-background-color: var(--pico-primary-background);
1480
+ --pico-border-color: var(--pico-primary-border);
1481
+ background-image: var(--pico-icon-checkbox);
1482
+ background-position: center;
1483
+ background-size: 0.75em auto;
1484
+ background-repeat: no-repeat;
1485
+ }
1486
+ [type="checkbox"] ~ label,
1487
+ [type="radio"] ~ label {
1488
+ display: inline-block;
1489
+ margin-bottom: 0;
1490
+ cursor: pointer;
1491
+ }
1492
+ [type="checkbox"] ~ label:not(:last-of-type),
1493
+ [type="radio"] ~ label:not(:last-of-type) {
1494
+ margin-inline-end: 1em;
1495
+ }
1496
+
1497
+ [type="checkbox"]:indeterminate {
1498
+ --pico-background-color: var(--pico-primary-background);
1499
+ --pico-border-color: var(--pico-primary-border);
1500
+ background-image: var(--pico-icon-minus);
1501
+ background-position: center;
1502
+ background-size: 0.75em auto;
1503
+ background-repeat: no-repeat;
1504
+ }
1505
+
1506
+ [type="radio"] {
1507
+ border-radius: 50%;
1508
+ }
1509
+ [type="radio"]:checked,
1510
+ [type="radio"]:checked:active,
1511
+ [type="radio"]:checked:focus {
1512
+ --pico-background-color: var(--pico-primary-inverse);
1513
+ border-width: 0.35em;
1514
+ background-image: none;
1515
+ }
1516
+
1517
+ [type="checkbox"][role="switch"] {
1518
+ --pico-background-color: var(--pico-switch-background-color);
1519
+ --pico-color: var(--pico-switch-color);
1520
+ width: 2.25em;
1521
+ height: 1.25em;
1522
+ border: var(--pico-border-width) solid var(--pico-border-color);
1523
+ border-radius: 1.25em;
1524
+ background-color: var(--pico-background-color);
1525
+ line-height: 1.25em;
1526
+ }
1527
+ [type="checkbox"][role="switch"]:not([aria-invalid]) {
1528
+ --pico-border-color: var(--pico-switch-background-color);
1529
+ }
1530
+ [type="checkbox"][role="switch"]:before {
1531
+ display: block;
1532
+ aspect-ratio: 1;
1533
+ height: 100%;
1534
+ border-radius: 50%;
1535
+ background-color: var(--pico-color);
1536
+ box-shadow: var(--pico-switch-thumb-box-shadow);
1537
+ content: "";
1538
+ transition: margin 0.1s ease-in-out;
1539
+ }
1540
+ [type="checkbox"][role="switch"]:focus {
1541
+ --pico-background-color: var(--pico-switch-background-color);
1542
+ --pico-border-color: var(--pico-switch-background-color);
1543
+ }
1544
+ [type="checkbox"][role="switch"]:checked {
1545
+ --pico-background-color: var(--pico-switch-checked-background-color);
1546
+ --pico-border-color: var(--pico-switch-checked-background-color);
1547
+ background-image: none;
1548
+ }
1549
+ [type="checkbox"][role="switch"]:checked::before {
1550
+ margin-inline-start: calc(2.25em - 1.25em);
1551
+ }
1552
+ [type="checkbox"][role="switch"][disabled] {
1553
+ --pico-background-color: var(--pico-border-color);
1554
+ }
1555
+
1556
+ [type="checkbox"][aria-invalid="false"]:checked,
1557
+ [type="checkbox"][aria-invalid="false"]:checked:active,
1558
+ [type="checkbox"][aria-invalid="false"]:checked:focus,
1559
+ [type="checkbox"][role="switch"][aria-invalid="false"]:checked,
1560
+ [type="checkbox"][role="switch"][aria-invalid="false"]:checked:active,
1561
+ [type="checkbox"][role="switch"][aria-invalid="false"]:checked:focus {
1562
+ --pico-background-color: var(--pico-form-element-valid-border-color);
1563
+ }
1564
+ [type="checkbox"]:checked[aria-invalid="true"],
1565
+ [type="checkbox"]:checked:active[aria-invalid="true"],
1566
+ [type="checkbox"]:checked:focus[aria-invalid="true"],
1567
+ [type="checkbox"][role="switch"]:checked[aria-invalid="true"],
1568
+ [type="checkbox"][role="switch"]:checked:active[aria-invalid="true"],
1569
+ [type="checkbox"][role="switch"]:checked:focus[aria-invalid="true"] {
1570
+ --pico-background-color: var(--pico-form-element-invalid-border-color);
1571
+ }
1572
+
1573
+ [type="checkbox"][aria-invalid="false"]:checked,
1574
+ [type="checkbox"][aria-invalid="false"]:checked:active,
1575
+ [type="checkbox"][aria-invalid="false"]:checked:focus,
1576
+ [type="radio"][aria-invalid="false"]:checked,
1577
+ [type="radio"][aria-invalid="false"]:checked:active,
1578
+ [type="radio"][aria-invalid="false"]:checked:focus,
1579
+ [type="checkbox"][role="switch"][aria-invalid="false"]:checked,
1580
+ [type="checkbox"][role="switch"][aria-invalid="false"]:checked:active,
1581
+ [type="checkbox"][role="switch"][aria-invalid="false"]:checked:focus {
1582
+ --pico-border-color: var(--pico-form-element-valid-border-color);
1583
+ }
1584
+ [type="checkbox"]:checked[aria-invalid="true"],
1585
+ [type="checkbox"]:checked:active[aria-invalid="true"],
1586
+ [type="checkbox"]:checked:focus[aria-invalid="true"],
1587
+ [type="radio"]:checked[aria-invalid="true"],
1588
+ [type="radio"]:checked:active[aria-invalid="true"],
1589
+ [type="radio"]:checked:focus[aria-invalid="true"],
1590
+ [type="checkbox"][role="switch"]:checked[aria-invalid="true"],
1591
+ [type="checkbox"][role="switch"]:checked:active[aria-invalid="true"],
1592
+ [type="checkbox"][role="switch"]:checked:focus[aria-invalid="true"] {
1593
+ --pico-border-color: var(--pico-form-element-invalid-border-color);
1594
+ }
1595
+ /**
1596
+ * Input type color
1597
+ */
1598
+ [type="color"]::-webkit-color-swatch-wrapper {
1599
+ padding: 0;
1600
+ }
1601
+ [type="color"]::-moz-focus-inner {
1602
+ padding: 0;
1603
+ }
1604
+ [type="color"]::-webkit-color-swatch {
1605
+ border: 0;
1606
+ border-radius: calc(var(--pico-border-radius) * 0.5);
1607
+ }
1608
+ [type="color"]::-moz-color-swatch {
1609
+ border: 0;
1610
+ border-radius: calc(var(--pico-border-radius) * 0.5);
1611
+ }
1612
+ /**
1613
+ * Input type datetime
1614
+ */
1615
+ :where(:scope),
1616
+ :host {
1617
+ --pico-icon-date: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E");
1618
+ --pico-icon-time: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpolyline points='12 6 12 12 16 14'%3E%3C/polyline%3E%3C/svg%3E");
1619
+ }
1620
+
1621
+ input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"]):is(
1622
+ [type="date"],
1623
+ [type="datetime-local"],
1624
+ [type="month"],
1625
+ [type="time"],
1626
+ [type="week"]
1627
+ ) {
1628
+ --pico-icon-position: 0.75rem;
1629
+ --pico-icon-width: 1rem;
1630
+ min-width: 0;
1631
+ padding-right: calc(var(--pico-icon-width) + var(--pico-icon-position));
1632
+ background-image: var(--pico-icon-date);
1633
+ background-position: center right var(--pico-icon-position);
1634
+ background-size: var(--pico-icon-width) auto;
1635
+ background-repeat: no-repeat;
1636
+ }
1637
+ input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"])[type="time"] {
1638
+ background-image: var(--pico-icon-time);
1639
+ }
1640
+
1641
+ [type="date"]::-webkit-calendar-picker-indicator,
1642
+ [type="datetime-local"]::-webkit-calendar-picker-indicator,
1643
+ [type="month"]::-webkit-calendar-picker-indicator,
1644
+ [type="time"]::-webkit-calendar-picker-indicator,
1645
+ [type="week"]::-webkit-calendar-picker-indicator {
1646
+ width: var(--pico-icon-width);
1647
+ margin-right: calc(var(--pico-icon-width) * -1);
1648
+ margin-left: var(--pico-icon-position);
1649
+ opacity: 0;
1650
+ }
1651
+
1652
+ @-moz-document url-prefix() {
1653
+ [type="date"],
1654
+ [type="datetime-local"],
1655
+ [type="month"],
1656
+ [type="time"],
1657
+ [type="week"] {
1658
+ padding-right: var(--pico-form-element-spacing-horizontal) !important;
1659
+ background-image: none !important;
1660
+ }
1661
+ }
1662
+ [dir="rtl"]
1663
+ :is([type="date"], [type="datetime-local"], [type="month"], [type="time"], [type="week"]) {
1664
+ text-align: end;
1665
+ }
1666
+ /**
1667
+ * Input type file
1668
+ */
1669
+ [type="file"] {
1670
+ --pico-color: var(--pico-muted-color);
1671
+ margin-left: calc(var(--pico-outline-width) * -1);
1672
+ padding: calc(var(--pico-form-element-spacing-vertical) * 0.5) 0;
1673
+ padding-left: var(--pico-outline-width);
1674
+ border: 0;
1675
+ border-radius: 0;
1676
+ background: none;
1677
+ }
1678
+ [type="file"]::file-selector-button {
1679
+ margin-right: calc(var(--pico-spacing) / 2);
1680
+ padding: calc(var(--pico-form-element-spacing-vertical) * 0.5)
1681
+ var(--pico-form-element-spacing-horizontal);
1682
+ }
1683
+ [type="file"]:is(:hover, :active, :focus)::file-selector-button {
1684
+ --pico-background-color: var(--pico-secondary-hover-background);
1685
+ --pico-border-color: var(--pico-secondary-hover-border);
1686
+ }
1687
+ [type="file"]:focus::file-selector-button {
1688
+ --pico-box-shadow:
1689
+ var(--pico-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),
1690
+ 0 0 0 var(--pico-outline-width) var(--pico-secondary-focus);
1691
+ }
1692
+ /**
1693
+ * Input type range
1694
+ */
1695
+ :where(:scope, [data-theme="light"], [data-theme="dark"]),
1696
+ :host {
1697
+ --pico-range-border-color: light-dark(#dfe3eb, #202632);
1698
+ --pico-range-active-border-color: light-dark(#bfc7d9, #2a3140);
1699
+ --pico-range-thumb-border-color: var(--pico-background-color);
1700
+ --pico-range-thumb-color: var(--pico-secondary-background);
1701
+ --pico-range-thumb-active-color: var(--pico-primary-background);
1702
+ }
1703
+
1704
+ [type="range"] {
1705
+ -webkit-appearance: none;
1706
+ -moz-appearance: none;
1707
+ appearance: none;
1708
+ width: 100%;
1709
+ height: 1.25rem;
1710
+ background: none;
1711
+ }
1712
+ [type="range"]::-webkit-slider-runnable-track {
1713
+ width: 100%;
1714
+ height: 0.375rem;
1715
+ border-radius: var(--pico-border-radius);
1716
+ background-color: var(--pico-range-border-color);
1717
+ -webkit-transition:
1718
+ background-color var(--pico-transition),
1719
+ box-shadow var(--pico-transition);
1720
+ transition:
1721
+ background-color var(--pico-transition),
1722
+ box-shadow var(--pico-transition);
1723
+ }
1724
+ [type="range"]::-moz-range-track {
1725
+ width: 100%;
1726
+ height: 0.375rem;
1727
+ border-radius: var(--pico-border-radius);
1728
+ background-color: var(--pico-range-border-color);
1729
+ -moz-transition:
1730
+ background-color var(--pico-transition),
1731
+ box-shadow var(--pico-transition);
1732
+ transition:
1733
+ background-color var(--pico-transition),
1734
+ box-shadow var(--pico-transition);
1735
+ }
1736
+ [type="range"]::-ms-track {
1737
+ width: 100%;
1738
+ height: 0.375rem;
1739
+ border-radius: var(--pico-border-radius);
1740
+ background-color: var(--pico-range-border-color);
1741
+ -ms-transition:
1742
+ background-color var(--pico-transition),
1743
+ box-shadow var(--pico-transition);
1744
+ transition:
1745
+ background-color var(--pico-transition),
1746
+ box-shadow var(--pico-transition);
1747
+ }
1748
+ [type="range"]::-webkit-slider-thumb {
1749
+ -webkit-appearance: none;
1750
+ width: 1.25rem;
1751
+ height: 1.25rem;
1752
+ margin-top: -0.4375rem;
1753
+ border: 2px solid var(--pico-range-thumb-border-color);
1754
+ border-radius: 50%;
1755
+ background-color: var(--pico-range-thumb-color);
1756
+ cursor: pointer;
1757
+ -webkit-transition:
1758
+ background-color var(--pico-transition),
1759
+ transform var(--pico-transition);
1760
+ transition:
1761
+ background-color var(--pico-transition),
1762
+ transform var(--pico-transition);
1763
+ }
1764
+ [type="range"]::-moz-range-thumb {
1765
+ -webkit-appearance: none;
1766
+ width: 1.25rem;
1767
+ height: 1.25rem;
1768
+ margin-top: -0.4375rem;
1769
+ border: 2px solid var(--pico-range-thumb-border-color);
1770
+ border-radius: 50%;
1771
+ background-color: var(--pico-range-thumb-color);
1772
+ cursor: pointer;
1773
+ -moz-transition:
1774
+ background-color var(--pico-transition),
1775
+ transform var(--pico-transition);
1776
+ transition:
1777
+ background-color var(--pico-transition),
1778
+ transform var(--pico-transition);
1779
+ }
1780
+ [type="range"]::-ms-thumb {
1781
+ -webkit-appearance: none;
1782
+ width: 1.25rem;
1783
+ height: 1.25rem;
1784
+ margin-top: -0.4375rem;
1785
+ border: 2px solid var(--pico-range-thumb-border-color);
1786
+ border-radius: 50%;
1787
+ background-color: var(--pico-range-thumb-color);
1788
+ cursor: pointer;
1789
+ -ms-transition:
1790
+ background-color var(--pico-transition),
1791
+ transform var(--pico-transition);
1792
+ transition:
1793
+ background-color var(--pico-transition),
1794
+ transform var(--pico-transition);
1795
+ }
1796
+ [type="range"]:active,
1797
+ [type="range"]:focus-within {
1798
+ --pico-range-border-color: var(--pico-range-active-border-color);
1799
+ --pico-range-thumb-color: var(--pico-range-thumb-active-color);
1800
+ }
1801
+ [type="range"]:active::-webkit-slider-thumb {
1802
+ transform: scale(1.25);
1803
+ }
1804
+ [type="range"]:active::-moz-range-thumb {
1805
+ transform: scale(1.25);
1806
+ }
1807
+ [type="range"]:active::-ms-thumb {
1808
+ transform: scale(1.25);
1809
+ }
1810
+ /**
1811
+ * Input type search
1812
+ */
1813
+ :where(:scope),
1814
+ :host {
1815
+ --pico-icon-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E");
1816
+ }
1817
+
1818
+ input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"])[type="search"] {
1819
+ padding-inline-start: calc(var(--pico-form-element-spacing-horizontal) + 1.75rem);
1820
+ background-image: var(--pico-icon-search);
1821
+ background-position: center left calc(var(--pico-form-element-spacing-horizontal) + 0.125rem);
1822
+ background-size: 1rem auto;
1823
+ background-repeat: no-repeat;
1824
+ }
1825
+ input:not(
1826
+ [type="checkbox"],
1827
+ [type="radio"],
1828
+ [type="range"],
1829
+ [type="file"]
1830
+ )[type="search"][aria-invalid] {
1831
+ padding-inline-start: calc(var(--pico-form-element-spacing-horizontal) + 1.75rem) !important;
1832
+ background-position:
1833
+ center left 1.125rem,
1834
+ center right 0.75rem;
1835
+ }
1836
+ input:not(
1837
+ [type="checkbox"],
1838
+ [type="radio"],
1839
+ [type="range"],
1840
+ [type="file"]
1841
+ )[type="search"][aria-invalid="false"] {
1842
+ background-image: var(--pico-icon-search), var(--pico-icon-valid);
1843
+ }
1844
+ input:not(
1845
+ [type="checkbox"],
1846
+ [type="radio"],
1847
+ [type="range"],
1848
+ [type="file"]
1849
+ )[type="search"][aria-invalid="true"] {
1850
+ background-image: var(--pico-icon-search), var(--pico-icon-invalid);
1851
+ }
1852
+
1853
+ [dir="rtl"]
1854
+ :where(input):not(
1855
+ [type="checkbox"],
1856
+ [type="radio"],
1857
+ [type="range"],
1858
+ [type="file"]
1859
+ )[type="search"] {
1860
+ background-position: center right 1.125rem;
1861
+ }
1862
+ [dir="rtl"]
1863
+ :where(input):not(
1864
+ [type="checkbox"],
1865
+ [type="radio"],
1866
+ [type="range"],
1867
+ [type="file"]
1868
+ )[type="search"][aria-invalid] {
1869
+ background-position:
1870
+ center right 1.125rem,
1871
+ center left 0.75rem;
1872
+ }
1873
+ /**
1874
+ * Accordion (<details>)
1875
+ */
1876
+ :where(:scope, [data-theme="light"], [data-theme="dark"]),
1877
+ :host {
1878
+ --pico-accordion-border-color: var(--pico-muted-border-color);
1879
+ --pico-accordion-active-summary-color: var(--pico-primary-hover);
1880
+ --pico-accordion-close-summary-color: var(--pico-color);
1881
+ --pico-accordion-open-summary-color: var(--pico-muted-color);
1882
+ }
1883
+
1884
+ details {
1885
+ display: block;
1886
+ margin-bottom: var(--pico-spacing);
1887
+ }
1888
+ details summary {
1889
+ line-height: 1rem;
1890
+ list-style-type: none;
1891
+ cursor: pointer;
1892
+ transition: color var(--pico-transition);
1893
+ }
1894
+ details summary:not([role]) {
1895
+ color: var(--pico-accordion-close-summary-color);
1896
+ }
1897
+ details summary::-webkit-details-marker {
1898
+ display: none;
1899
+ }
1900
+ details summary::marker {
1901
+ display: none;
1902
+ }
1903
+ details summary::-moz-list-bullet {
1904
+ list-style-type: none;
1905
+ }
1906
+ details summary::after {
1907
+ display: block;
1908
+ width: 1rem;
1909
+ height: 1rem;
1910
+ margin-inline-start: calc(var(--pico-spacing, 1rem) * 0.5);
1911
+ float: right;
1912
+ transform: rotate(-90deg);
1913
+ background-image: var(--pico-icon-chevron);
1914
+ background-position: right center;
1915
+ background-size: 1rem auto;
1916
+ background-repeat: no-repeat;
1917
+ content: "";
1918
+ transition: transform var(--pico-transition);
1919
+ }
1920
+ details summary:focus {
1921
+ outline: none;
1922
+ }
1923
+ details summary:focus:not([role]) {
1924
+ color: var(--pico-accordion-active-summary-color);
1925
+ }
1926
+ details summary:focus-visible:not([role]) {
1927
+ outline: var(--pico-outline-width) solid var(--pico-primary-focus);
1928
+ outline-offset: calc(var(--pico-spacing, 1rem) * 0.5);
1929
+ color: var(--pico-primary);
1930
+ }
1931
+ details summary[role="button"] {
1932
+ width: 100%;
1933
+ text-align: start;
1934
+ }
1935
+ details summary[role="button"]::after {
1936
+ height: calc(1rem * var(--pico-line-height, 1.5));
1937
+ }
1938
+ details[open] > summary {
1939
+ margin-bottom: var(--pico-spacing);
1940
+ }
1941
+ details[open] > summary:not([role]):not(:focus) {
1942
+ color: var(--pico-accordion-open-summary-color);
1943
+ }
1944
+ details[open] > summary::after {
1945
+ transform: rotate(0);
1946
+ }
1947
+
1948
+ [dir="rtl"] details summary {
1949
+ text-align: end;
1950
+ }
1951
+ [dir="rtl"] details summary::after {
1952
+ float: left;
1953
+ background-position: left center;
1954
+ }
1955
+ /**
1956
+ * Card (<article>)
1957
+ */
1958
+ :where(:scope, [data-theme="light"], [data-theme="dark"]),
1959
+ :host {
1960
+ --pico-card-background-color: light-dark(var(--pico-background-color), #181c25);
1961
+ --pico-card-border-color: light-dark(
1962
+ var(--pico-muted-border-color),
1963
+ var(--pico-card-background-color)
1964
+ );
1965
+ --pico-card-box-shadow: var(--pico-box-shadow);
1966
+ --pico-card-sectioning-background-color: light-dark(
1967
+ rgb(251, 251.5, 252.25),
1968
+ rgb(26, 30.5, 40.25)
1969
+ );
1970
+ }
1971
+
1972
+ article {
1973
+ margin-bottom: var(--pico-block-spacing-vertical);
1974
+ padding: var(--pico-block-spacing-vertical) var(--pico-block-spacing-horizontal);
1975
+ border-radius: var(--pico-border-radius);
1976
+ background: var(--pico-card-background-color);
1977
+ box-shadow: var(--pico-card-box-shadow);
1978
+ }
1979
+ article > header,
1980
+ article > footer {
1981
+ margin-right: calc(var(--pico-block-spacing-horizontal) * -1);
1982
+ margin-left: calc(var(--pico-block-spacing-horizontal) * -1);
1983
+ padding: calc(var(--pico-block-spacing-vertical) * 0.66) var(--pico-block-spacing-horizontal);
1984
+ background-color: var(--pico-card-sectioning-background-color);
1985
+ }
1986
+ article > header {
1987
+ margin-top: calc(var(--pico-block-spacing-vertical) * -1);
1988
+ margin-bottom: var(--pico-block-spacing-vertical);
1989
+ border-bottom: var(--pico-border-width) solid var(--pico-card-border-color);
1990
+ border-top-right-radius: var(--pico-border-radius);
1991
+ border-top-left-radius: var(--pico-border-radius);
1992
+ }
1993
+ article > footer {
1994
+ margin-top: var(--pico-block-spacing-vertical);
1995
+ margin-bottom: calc(var(--pico-block-spacing-vertical) * -1);
1996
+ border-top: var(--pico-border-width) solid var(--pico-card-border-color);
1997
+ border-bottom-right-radius: var(--pico-border-radius);
1998
+ border-bottom-left-radius: var(--pico-border-radius);
1999
+ }
2000
+ /**
2001
+ * Dropdown (details.dropdown)
2002
+ */
2003
+ :where(:scope, [data-theme="light"], [data-theme="dark"]),
2004
+ :host {
2005
+ --pico-dropdown-background-color: light-dark(#fff, #181c25);
2006
+ --pico-dropdown-border-color: light-dark(#eff1f4, #202632);
2007
+ --pico-dropdown-box-shadow: var(--pico-box-shadow);
2008
+ --pico-dropdown-color: var(--pico-color);
2009
+ --pico-dropdown-hover-background-color: light-dark(#eff1f4, #202632);
2010
+ }
2011
+
2012
+ details.dropdown {
2013
+ position: relative;
2014
+ border-bottom: none;
2015
+ }
2016
+ details.dropdown > summary::after,
2017
+ details.dropdown > button::after,
2018
+ details.dropdown > a::after {
2019
+ display: block;
2020
+ width: 1rem;
2021
+ height: calc(1rem * var(--pico-line-height, 1.5));
2022
+ margin-inline-start: 0.25rem;
2023
+ float: right;
2024
+ transform: rotate(0deg) translateX(0.2rem);
2025
+ background-image: var(--pico-icon-chevron);
2026
+ background-position: right center;
2027
+ background-size: 1rem auto;
2028
+ background-repeat: no-repeat;
2029
+ content: "";
2030
+ }
2031
+
2032
+ nav details.dropdown {
2033
+ margin-bottom: 0;
2034
+ }
2035
+
2036
+ details.dropdown > summary:not([role]) {
2037
+ height: calc(
2038
+ 1rem * var(--pico-line-height) + var(--pico-form-element-spacing-vertical) * 2 +
2039
+ var(--pico-border-width) * 2
2040
+ );
2041
+ padding: var(--pico-form-element-spacing-vertical) var(--pico-form-element-spacing-horizontal);
2042
+ border: var(--pico-border-width) solid var(--pico-form-element-border-color);
2043
+ border-radius: var(--pico-border-radius);
2044
+ background-color: var(--pico-form-element-background-color);
2045
+ color: var(--pico-form-element-placeholder-color);
2046
+ line-height: inherit;
2047
+ cursor: pointer;
2048
+ -webkit-user-select: none;
2049
+ -moz-user-select: none;
2050
+ transition:
2051
+ background-color var(--pico-transition),
2052
+ border-color var(--pico-transition),
2053
+ color var(--pico-transition),
2054
+ box-shadow var(--pico-transition);
2055
+ user-select: none;
2056
+ }
2057
+ details.dropdown > summary:not([role]):active,
2058
+ details.dropdown > summary:not([role]):focus {
2059
+ border-color: var(--pico-form-element-active-border-color);
2060
+ background-color: var(--pico-form-element-active-background-color);
2061
+ }
2062
+ details.dropdown > summary:not([role]):focus {
2063
+ box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-form-element-focus-color);
2064
+ }
2065
+ details.dropdown > summary:not([role]):focus-visible {
2066
+ outline: none;
2067
+ }
2068
+ details.dropdown > summary:not([role])[aria-invalid="false"] {
2069
+ --pico-form-element-border-color: var(--pico-form-element-valid-border-color);
2070
+ --pico-form-element-active-border-color: var(--pico-form-element-valid-focus-color);
2071
+ --pico-form-element-focus-color: var(--pico-form-element-valid-focus-color);
2072
+ }
2073
+ details.dropdown > summary:not([role])[aria-invalid="true"] {
2074
+ --pico-form-element-border-color: var(--pico-form-element-invalid-border-color);
2075
+ --pico-form-element-active-border-color: var(--pico-form-element-invalid-focus-color);
2076
+ --pico-form-element-focus-color: var(--pico-form-element-invalid-focus-color);
2077
+ }
2078
+
2079
+ nav details.dropdown {
2080
+ display: inline-block;
2081
+ margin: calc(var(--pico-nav-element-spacing-vertical) * -1) 0;
2082
+ }
2083
+ nav details.dropdown > summary::after {
2084
+ transform: rotate(0deg) translateX(0rem);
2085
+ }
2086
+ nav details.dropdown > summary:not([role]) {
2087
+ height: calc(1rem * var(--pico-line-height) + var(--pico-nav-link-spacing-vertical) * 2);
2088
+ padding: calc(var(--pico-nav-link-spacing-vertical) - var(--pico-border-width) * 2)
2089
+ var(--pico-nav-link-spacing-horizontal);
2090
+ }
2091
+ nav details.dropdown > summary:not([role]):focus-visible {
2092
+ box-shadow: 0 0 0 var(--pico-outline-width) var(--pico-primary-focus);
2093
+ }
2094
+
2095
+ details.dropdown > summary + ul {
2096
+ display: flex;
2097
+ z-index: 99;
2098
+ position: absolute;
2099
+ left: 0;
2100
+ flex-direction: column;
2101
+ width: 100%;
2102
+ min-width: -moz-fit-content;
2103
+ min-width: fit-content;
2104
+ margin: 0;
2105
+ margin-top: var(--pico-outline-width);
2106
+ padding: 0;
2107
+ border: var(--pico-border-width) solid var(--pico-dropdown-border-color);
2108
+ border-radius: var(--pico-border-radius);
2109
+ background-color: var(--pico-dropdown-background-color);
2110
+ box-shadow: var(--pico-dropdown-box-shadow);
2111
+ color: var(--pico-dropdown-color);
2112
+ white-space: nowrap;
2113
+ opacity: 0;
2114
+ transition:
2115
+ opacity var(--pico-transition),
2116
+ transform 0s ease-in-out 1s;
2117
+ }
2118
+ details.dropdown > summary + ul[dir="rtl"] {
2119
+ right: 0;
2120
+ left: auto;
2121
+ }
2122
+ details.dropdown > summary + ul li {
2123
+ width: 100%;
2124
+ margin-bottom: 0;
2125
+ padding: calc(var(--pico-form-element-spacing-vertical) * 0.5)
2126
+ var(--pico-form-element-spacing-horizontal);
2127
+ list-style: none;
2128
+ }
2129
+ details.dropdown > summary + ul li:first-of-type {
2130
+ margin-top: calc(var(--pico-form-element-spacing-vertical) * 0.5);
2131
+ }
2132
+ details.dropdown > summary + ul li:last-of-type {
2133
+ margin-bottom: calc(var(--pico-form-element-spacing-vertical) * 0.5);
2134
+ }
2135
+ details.dropdown > summary + ul li a {
2136
+ display: block;
2137
+ margin: calc(var(--pico-form-element-spacing-vertical) * -0.5)
2138
+ calc(var(--pico-form-element-spacing-horizontal) * -1);
2139
+ padding: calc(var(--pico-form-element-spacing-vertical) * 0.5)
2140
+ var(--pico-form-element-spacing-horizontal);
2141
+ overflow: hidden;
2142
+ border-radius: 0;
2143
+ color: var(--pico-dropdown-color);
2144
+ text-decoration: none;
2145
+ text-overflow: ellipsis;
2146
+ }
2147
+ details.dropdown > summary + ul li a:hover,
2148
+ details.dropdown > summary + ul li a:focus,
2149
+ details.dropdown > summary + ul li a:active,
2150
+ details.dropdown > summary + ul li a:focus-visible,
2151
+ details.dropdown > summary + ul li a[aria-current]:not([aria-current="false"]) {
2152
+ background-color: var(--pico-dropdown-hover-background-color);
2153
+ }
2154
+ details.dropdown > summary + ul li label {
2155
+ width: 100%;
2156
+ }
2157
+ details.dropdown > summary + ul li:has(label):hover {
2158
+ background-color: var(--pico-dropdown-hover-background-color);
2159
+ }
2160
+
2161
+ details.dropdown[open] > summary {
2162
+ margin-bottom: 0;
2163
+ }
2164
+
2165
+ details.dropdown[open] > summary + ul {
2166
+ transform: scaleY(1);
2167
+ opacity: 1;
2168
+ transition:
2169
+ opacity var(--pico-transition),
2170
+ transform 0s ease-in-out 0s;
2171
+ }
2172
+
2173
+ details.dropdown[open] > summary::before {
2174
+ display: block;
2175
+ z-index: 1;
2176
+ position: fixed;
2177
+ width: 100vw;
2178
+ height: 100vh;
2179
+ inset: 0;
2180
+ background: none;
2181
+ content: "";
2182
+ cursor: default;
2183
+ }
2184
+
2185
+ label > details.dropdown {
2186
+ margin-top: calc(var(--pico-spacing) * 0.25);
2187
+ }
2188
+
2189
+ /**
2190
+ * Group ([role="group"], [role="search"])
2191
+ */
2192
+ :where(:scope),
2193
+ :host {
2194
+ --pico-group-box-shadow: 0 0 0 rgba(0, 0, 0, 0);
2195
+ --pico-group-box-shadow-focus-with-button: 0 0 0 var(--pico-outline-width)
2196
+ var(--pico-primary-focus);
2197
+ --pico-group-box-shadow-focus-with-input: 0 0 0 0.0625rem var(--pico-form-element-border-color);
2198
+ }
2199
+ [role="search"]:has(
2200
+ button.secondary:focus,
2201
+ [type="submit"].secondary:focus,
2202
+ [type="button"].secondary:focus,
2203
+ [role="button"].secondary:focus
2204
+ ),
2205
+ [role="group"]:has(
2206
+ button.secondary:focus,
2207
+ [type="submit"].secondary:focus,
2208
+ [type="button"].secondary:focus,
2209
+ [role="button"].secondary:focus
2210
+ ) {
2211
+ --pico-group-box-shadow-focus-with-button: 0 0 0 var(--pico-outline-width)
2212
+ var(--pico-secondary-focus);
2213
+ }
2214
+ [role="search"]:has(
2215
+ button.contrast:focus,
2216
+ [type="submit"].contrast:focus,
2217
+ [type="button"].contrast:focus,
2218
+ [role="button"].contrast:focus
2219
+ ),
2220
+ [role="group"]:has(
2221
+ button.contrast:focus,
2222
+ [type="submit"].contrast:focus,
2223
+ [type="button"].contrast:focus,
2224
+ [role="button"].contrast:focus
2225
+ ) {
2226
+ --pico-group-box-shadow-focus-with-button: 0 0 0 var(--pico-outline-width)
2227
+ var(--pico-contrast-focus);
2228
+ }
2229
+
2230
+ [role="search"],
2231
+ [role="group"] {
2232
+ display: inline-flex;
2233
+ position: relative;
2234
+ width: 100%;
2235
+ margin-bottom: var(--pico-spacing);
2236
+ border-radius: var(--pico-border-radius);
2237
+ box-shadow: var(--pico-group-box-shadow, 0 0 0 rgba(0, 0, 0, 0));
2238
+ vertical-align: middle;
2239
+ transition: box-shadow var(--pico-transition);
2240
+ }
2241
+ [role="search"] > *,
2242
+ [role="search"] input:not([type="checkbox"], [type="radio"]),
2243
+ [role="search"] select,
2244
+ [role="group"] > *,
2245
+ [role="group"] input:not([type="checkbox"], [type="radio"]),
2246
+ [role="group"] select {
2247
+ position: relative;
2248
+ flex: 1 1 auto;
2249
+ margin-bottom: 0;
2250
+ }
2251
+ [role="search"] > *:not(:first-child),
2252
+ [role="search"] input:not([type="checkbox"], [type="radio"]):not(:first-child),
2253
+ [role="search"] select:not(:first-child),
2254
+ [role="group"] > *:not(:first-child),
2255
+ [role="group"] input:not([type="checkbox"], [type="radio"]):not(:first-child),
2256
+ [role="group"] select:not(:first-child) {
2257
+ margin-left: 0;
2258
+ border-top-left-radius: 0;
2259
+ border-bottom-left-radius: 0;
2260
+ }
2261
+ [role="search"] > *:not(:last-child),
2262
+ [role="search"] input:not([type="checkbox"], [type="radio"]):not(:last-child),
2263
+ [role="search"] select:not(:last-child),
2264
+ [role="group"] > *:not(:last-child),
2265
+ [role="group"] input:not([type="checkbox"], [type="radio"]):not(:last-child),
2266
+ [role="group"] select:not(:last-child) {
2267
+ border-top-right-radius: 0;
2268
+ border-bottom-right-radius: 0;
2269
+ }
2270
+ [role="search"] > *:focus,
2271
+ [role="search"] input:not([type="checkbox"], [type="radio"]):focus,
2272
+ [role="search"] select:focus,
2273
+ [role="group"] > *:focus,
2274
+ [role="group"] input:not([type="checkbox"], [type="radio"]):focus,
2275
+ [role="group"] select:focus {
2276
+ z-index: 2;
2277
+ }
2278
+ [role="search"] button:not(:first-child),
2279
+ [role="search"] [type="submit"]:not(:first-child),
2280
+ [role="search"] [type="reset"]:not(:first-child),
2281
+ [role="search"] [type="button"]:not(:first-child),
2282
+ [role="search"] [role="button"]:not(:first-child),
2283
+ [role="search"] input:not([type="checkbox"], [type="radio"]):not(:first-child),
2284
+ [role="search"] select:not(:first-child),
2285
+ [role="group"] button:not(:first-child),
2286
+ [role="group"] [type="submit"]:not(:first-child),
2287
+ [role="group"] [type="reset"]:not(:first-child),
2288
+ [role="group"] [type="button"]:not(:first-child),
2289
+ [role="group"] [role="button"]:not(:first-child),
2290
+ [role="group"] input:not([type="checkbox"], [type="radio"]):not(:first-child),
2291
+ [role="group"] select:not(:first-child) {
2292
+ margin-left: calc(var(--pico-border-width) * -1);
2293
+ }
2294
+ [role="search"] button,
2295
+ [role="search"] [type="submit"],
2296
+ [role="search"] [type="reset"],
2297
+ [role="search"] [type="button"],
2298
+ [role="search"] [role="button"],
2299
+ [role="group"] button,
2300
+ [role="group"] [type="submit"],
2301
+ [role="group"] [type="reset"],
2302
+ [role="group"] [type="button"],
2303
+ [role="group"] [role="button"] {
2304
+ width: auto;
2305
+ }
2306
+ @supports selector(:has(*)) {
2307
+ [role="search"]:has(
2308
+ button:focus,
2309
+ [type="submit"]:focus,
2310
+ [type="button"]:focus,
2311
+ [role="button"]:focus
2312
+ ),
2313
+ [role="group"]:has(
2314
+ button:focus,
2315
+ [type="submit"]:focus,
2316
+ [type="button"]:focus,
2317
+ [role="button"]:focus
2318
+ ) {
2319
+ --pico-group-box-shadow: var(--pico-group-box-shadow-focus-with-button);
2320
+ }
2321
+ [role="search"]:has(
2322
+ button:focus,
2323
+ [type="submit"]:focus,
2324
+ [type="button"]:focus,
2325
+ [role="button"]:focus
2326
+ )
2327
+ input:not([type="checkbox"], [type="radio"]),
2328
+ [role="search"]:has(
2329
+ button:focus,
2330
+ [type="submit"]:focus,
2331
+ [type="button"]:focus,
2332
+ [role="button"]:focus
2333
+ )
2334
+ select,
2335
+ [role="group"]:has(
2336
+ button:focus,
2337
+ [type="submit"]:focus,
2338
+ [type="button"]:focus,
2339
+ [role="button"]:focus
2340
+ )
2341
+ input:not([type="checkbox"], [type="radio"]),
2342
+ [role="group"]:has(
2343
+ button:focus,
2344
+ [type="submit"]:focus,
2345
+ [type="button"]:focus,
2346
+ [role="button"]:focus
2347
+ )
2348
+ select {
2349
+ border-color: transparent;
2350
+ }
2351
+ [role="search"]:has(input:not([type="submit"], [type="button"]):focus, select:focus),
2352
+ [role="group"]:has(input:not([type="submit"], [type="button"]):focus, select:focus) {
2353
+ --pico-group-box-shadow: var(--pico-group-box-shadow-focus-with-input);
2354
+ }
2355
+ [role="search"]:has(input:not([type="submit"], [type="button"]):focus, select:focus) button,
2356
+ [role="search"]:has(input:not([type="submit"], [type="button"]):focus, select:focus)
2357
+ [type="submit"],
2358
+ [role="search"]:has(input:not([type="submit"], [type="button"]):focus, select:focus)
2359
+ [type="button"],
2360
+ [role="search"]:has(input:not([type="submit"], [type="button"]):focus, select:focus)
2361
+ [role="button"],
2362
+ [role="group"]:has(input:not([type="submit"], [type="button"]):focus, select:focus) button,
2363
+ [role="group"]:has(input:not([type="submit"], [type="button"]):focus, select:focus)
2364
+ [type="submit"],
2365
+ [role="group"]:has(input:not([type="submit"], [type="button"]):focus, select:focus)
2366
+ [type="button"],
2367
+ [role="group"]:has(input:not([type="submit"], [type="button"]):focus, select:focus)
2368
+ [role="button"] {
2369
+ --pico-button-box-shadow: 0 0 0 var(--pico-border-width) var(--pico-primary-border);
2370
+ --pico-button-hover-box-shadow: 0 0 0 var(--pico-border-width) var(--pico-primary-hover-border);
2371
+ }
2372
+ [role="search"] button:focus,
2373
+ [role="search"] [type="submit"]:focus,
2374
+ [role="search"] [type="reset"]:focus,
2375
+ [role="search"] [type="button"]:focus,
2376
+ [role="search"] [role="button"]:focus,
2377
+ [role="group"] button:focus,
2378
+ [role="group"] [type="submit"]:focus,
2379
+ [role="group"] [type="reset"]:focus,
2380
+ [role="group"] [type="button"]:focus,
2381
+ [role="group"] [role="button"]:focus {
2382
+ box-shadow: none;
2383
+ }
2384
+ }
2385
+
2386
+ [role="search"] > *:first-child {
2387
+ border-top-left-radius: 5rem;
2388
+ border-bottom-left-radius: 5rem;
2389
+ }
2390
+ [role="search"] > *:last-child {
2391
+ border-top-right-radius: 5rem;
2392
+ border-bottom-right-radius: 5rem;
2393
+ }
2394
+ /**
2395
+ * Loading ([aria-busy=true])
2396
+ */
2397
+ :where(:scope),
2398
+ :host {
2399
+ --pico-icon-loading: url("data:image/svg+xml,%3Csvg fill='none' height='24' width='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E g %7B animation: rotate 2s linear infinite; transform-origin: center center; %7D circle %7B stroke-dasharray: 75,100; stroke-dashoffset: -5; animation: dash 1.5s ease-in-out infinite; stroke-linecap: round; %7D @keyframes rotate %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D @keyframes dash %7B 0%25 %7B stroke-dasharray: 1,100; stroke-dashoffset: 0; %7D 50%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -17.5; %7D 100%25 %7B stroke-dasharray: 44.5,100; stroke-dashoffset: -62; %7D %7D %3C/style%3E%3Cg%3E%3Ccircle cx='12' cy='12' r='10' fill='none' stroke='rgb(136, 145, 164)' stroke-width='4' /%3E%3C/g%3E%3C/svg%3E");
2400
+ }
2401
+ :where(:scope, [data-theme="light"], [data-theme="dark"]),
2402
+ :host {
2403
+ --pico-loading-spinner-opacity: 0.5;
2404
+ }
2405
+
2406
+ [aria-busy="true"]:not(input, select, textarea, html, form) {
2407
+ white-space: nowrap;
2408
+ }
2409
+ [aria-busy="true"]:not(input, select, textarea, html, form)::before {
2410
+ display: inline-block;
2411
+ width: 1em;
2412
+ height: 1em;
2413
+ background-image: var(--pico-icon-loading);
2414
+ background-size: 1em auto;
2415
+ background-repeat: no-repeat;
2416
+ content: "";
2417
+ vertical-align: -0.125em;
2418
+ }
2419
+ [aria-busy="true"]:not(input, select, textarea, html, form):not(:empty)::before {
2420
+ margin-inline-end: calc(var(--pico-spacing) * 0.5);
2421
+ }
2422
+ [aria-busy="true"]:not(input, select, textarea, html, form):empty {
2423
+ text-align: center;
2424
+ }
2425
+
2426
+ button[aria-busy="true"],
2427
+ [type="submit"][aria-busy="true"],
2428
+ [type="button"][aria-busy="true"],
2429
+ [type="reset"][aria-busy="true"],
2430
+ [role="button"][aria-busy="true"],
2431
+ a[aria-busy="true"] {
2432
+ pointer-events: none;
2433
+ }
2434
+
2435
+ /**
2436
+ * Modal (<dialog>)
2437
+ */
2438
+ :where(:scope),
2439
+ :host {
2440
+ --pico-modal-overlay-backdrop-filter: blur(0.375rem);
2441
+ --pico-icon-close: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(136, 145, 164)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");
2442
+ }
2443
+ :where(:scope, [data-theme="light"], [data-theme="dark"]),
2444
+ :host {
2445
+ --pico-modal-overlay-background-color: light-dark(
2446
+ rgba(232, 234, 237, 0.75),
2447
+ rgba(7.5, 8.5, 10, 0.75)
2448
+ );
2449
+ }
2450
+
2451
+ :scope,
2452
+ :host {
2453
+ --pico-scrollbar-width: 0px;
2454
+ }
2455
+
2456
+ dialog {
2457
+ display: flex;
2458
+ z-index: 999;
2459
+ position: fixed;
2460
+ top: 0;
2461
+ right: 0;
2462
+ bottom: 0;
2463
+ left: 0;
2464
+ align-items: center;
2465
+ justify-content: center;
2466
+ width: inherit;
2467
+ min-width: 100%;
2468
+ height: inherit;
2469
+ min-height: 100%;
2470
+ padding: 0;
2471
+ border: 0;
2472
+ backdrop-filter: var(--pico-modal-overlay-backdrop-filter);
2473
+ background-color: var(--pico-modal-overlay-background-color);
2474
+ color: var(--pico-color);
2475
+ }
2476
+ dialog > article {
2477
+ width: 100%;
2478
+ max-height: calc(100vh - var(--pico-spacing) * 2);
2479
+ margin: var(--pico-spacing);
2480
+ overflow: auto;
2481
+ }
2482
+ @media (min-width: 576px) {
2483
+ dialog > article {
2484
+ max-width: 510px;
2485
+ }
2486
+ }
2487
+ @media (min-width: 768px) {
2488
+ dialog > article {
2489
+ max-width: 700px;
2490
+ }
2491
+ }
2492
+ dialog > article > header > * {
2493
+ margin-bottom: 0;
2494
+ }
2495
+ dialog > article > header .close,
2496
+ dialog > article > header :is(a, button)[rel="prev"] {
2497
+ margin: 0;
2498
+ margin-left: var(--pico-spacing);
2499
+ padding: 0;
2500
+ float: right;
2501
+ }
2502
+ dialog > article > footer {
2503
+ text-align: end;
2504
+ }
2505
+ dialog > article > footer button,
2506
+ dialog > article > footer [role="button"] {
2507
+ margin-bottom: 0;
2508
+ }
2509
+ dialog > article > footer button:not(:first-of-type),
2510
+ dialog > article > footer [role="button"]:not(:first-of-type) {
2511
+ margin-left: calc(var(--pico-spacing) * 0.5);
2512
+ }
2513
+ dialog > article .close,
2514
+ dialog > article :is(a, button)[rel="prev"] {
2515
+ display: block;
2516
+ width: 1rem;
2517
+ height: 1rem;
2518
+ margin-top: calc(var(--pico-spacing) * -1);
2519
+ margin-bottom: var(--pico-spacing);
2520
+ margin-left: auto;
2521
+ border: none;
2522
+ background-image: var(--pico-icon-close);
2523
+ background-position: center;
2524
+ background-size: auto 1rem;
2525
+ background-repeat: no-repeat;
2526
+ background-color: transparent;
2527
+ opacity: 0.5;
2528
+ transition: opacity var(--pico-transition);
2529
+ }
2530
+ dialog > article .close:is([aria-current]:not([aria-current="false"]), :hover, :active, :focus),
2531
+ dialog
2532
+ > article
2533
+ :is(a, button)[rel="prev"]:is(
2534
+ [aria-current]:not([aria-current="false"]),
2535
+ :hover,
2536
+ :active,
2537
+ :focus
2538
+ ) {
2539
+ opacity: 1;
2540
+ }
2541
+ dialog:not([open]),
2542
+ dialog[open="false"] {
2543
+ display: none;
2544
+ }
2545
+
2546
+ .modal-is-open {
2547
+ padding-right: var(--pico-scrollbar-width, 0px);
2548
+ overflow: hidden;
2549
+ pointer-events: none;
2550
+ touch-action: none;
2551
+ }
2552
+ .modal-is-open dialog {
2553
+ pointer-events: auto;
2554
+ touch-action: auto;
2555
+ }
2556
+
2557
+ :where(.modal-is-opening, .modal-is-closing) dialog,
2558
+ :where(.modal-is-opening, .modal-is-closing) dialog > article {
2559
+ animation-duration: 0.2s;
2560
+ animation-timing-function: ease-in-out;
2561
+ animation-fill-mode: both;
2562
+ }
2563
+ :where(.modal-is-opening, .modal-is-closing) dialog {
2564
+ animation-duration: 0.8s;
2565
+ animation-name: modal-overlay;
2566
+ }
2567
+ :where(.modal-is-opening, .modal-is-closing) dialog > article {
2568
+ animation-delay: 0.2s;
2569
+ animation-name: modal;
2570
+ }
2571
+
2572
+ .modal-is-closing dialog,
2573
+ .modal-is-closing dialog > article {
2574
+ animation-delay: 0s;
2575
+ animation-direction: reverse;
2576
+ }
2577
+
2578
+ @keyframes modal-overlay {
2579
+ from {
2580
+ backdrop-filter: none;
2581
+ background-color: transparent;
2582
+ }
2583
+ }
2584
+ @keyframes modal {
2585
+ from {
2586
+ transform: translateY(-100%);
2587
+ opacity: 0;
2588
+ }
2589
+ }
2590
+ /**
2591
+ * Nav
2592
+ */
2593
+ :where(:scope),
2594
+ :host {
2595
+ --pico-nav-element-spacing-horizontal: 0.5rem;
2596
+ --pico-nav-breadcrumb-divider: ">";
2597
+ }
2598
+
2599
+ :where(nav li)::before {
2600
+ float: left;
2601
+ content: "​";
2602
+ }
2603
+
2604
+ nav,
2605
+ nav ul {
2606
+ display: flex;
2607
+ }
2608
+
2609
+ nav {
2610
+ justify-content: space-between;
2611
+ overflow: visible;
2612
+ }
2613
+ nav ol,
2614
+ nav ul {
2615
+ align-items: center;
2616
+ margin-bottom: 0;
2617
+ padding: 0;
2618
+ list-style: none;
2619
+ }
2620
+ nav ol:first-of-type,
2621
+ nav ul:first-of-type {
2622
+ margin-left: calc(var(--pico-nav-element-spacing-horizontal) * -1);
2623
+ }
2624
+ nav ol:last-of-type,
2625
+ nav ul:last-of-type {
2626
+ margin-right: calc(var(--pico-nav-element-spacing-horizontal) * -1);
2627
+ }
2628
+ nav li {
2629
+ display: inline-block;
2630
+ margin: 0;
2631
+ padding: var(--pico-nav-element-spacing-vertical) var(--pico-nav-element-spacing-horizontal);
2632
+ }
2633
+ nav li :where(a, [role="link"]) {
2634
+ display: inline-block;
2635
+ margin: calc(var(--pico-nav-link-spacing-vertical) * -1)
2636
+ calc(var(--pico-nav-link-spacing-horizontal) * -1);
2637
+ padding: var(--pico-nav-link-spacing-vertical) var(--pico-nav-link-spacing-horizontal);
2638
+ border-radius: var(--pico-border-radius);
2639
+ }
2640
+ nav li :where(a, [role="link"]):not(:hover) {
2641
+ text-decoration: none;
2642
+ }
2643
+ nav li button,
2644
+ nav li [role="button"],
2645
+ nav li [type="button"],
2646
+ nav li input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"]),
2647
+ nav li select {
2648
+ height: auto;
2649
+ margin-right: inherit;
2650
+ margin-bottom: 0;
2651
+ margin-left: inherit;
2652
+ padding: calc(var(--pico-nav-link-spacing-vertical) - var(--pico-border-width) * 2)
2653
+ var(--pico-nav-link-spacing-horizontal);
2654
+ }
2655
+ nav[aria-label="breadcrumb"] {
2656
+ align-items: center;
2657
+ justify-content: start;
2658
+ }
2659
+ nav[aria-label="breadcrumb"] ul li:not(:first-child) {
2660
+ margin-inline-start: var(--pico-nav-link-spacing-horizontal);
2661
+ }
2662
+ nav[aria-label="breadcrumb"] ul li a {
2663
+ margin: calc(var(--pico-nav-link-spacing-vertical) * -1) 0;
2664
+ margin-inline-start: calc(var(--pico-nav-link-spacing-horizontal) * -1);
2665
+ }
2666
+ nav[aria-label="breadcrumb"] ul li:not(:last-child)::after {
2667
+ display: inline-block;
2668
+ position: absolute;
2669
+ width: calc(var(--pico-nav-link-spacing-horizontal) * 4);
2670
+ margin: 0 calc(var(--pico-nav-link-spacing-horizontal) * -1);
2671
+ content: var(--pico-nav-breadcrumb-divider);
2672
+ color: var(--pico-muted-color);
2673
+ text-align: center;
2674
+ text-decoration: none;
2675
+ white-space: nowrap;
2676
+ }
2677
+ nav[aria-label="breadcrumb"] a[aria-current]:not([aria-current="false"]) {
2678
+ background-color: transparent;
2679
+ color: inherit;
2680
+ text-decoration: none;
2681
+ pointer-events: none;
2682
+ }
2683
+
2684
+ aside nav,
2685
+ aside ol,
2686
+ aside ul,
2687
+ aside li {
2688
+ display: block;
2689
+ }
2690
+ aside li {
2691
+ padding: calc(var(--pico-nav-element-spacing-vertical) * 0.5)
2692
+ var(--pico-nav-element-spacing-horizontal);
2693
+ }
2694
+ aside li a {
2695
+ display: block;
2696
+ }
2697
+ aside li [role="button"] {
2698
+ margin: inherit;
2699
+ }
2700
+
2701
+ [dir="rtl"] nav[aria-label="breadcrumb"] ul li:not(:last-child)::after {
2702
+ content: "\\";
2703
+ }
2704
+
2705
+ /**
2706
+ * Progress
2707
+ */
2708
+ :where(:scope, [data-theme="light"], [data-theme="dark"]),
2709
+ :host {
2710
+ --pico-progress-background-color: light-dark(#dfe3eb, #202632);
2711
+ --pico-progress-color: var(--pico-primary-background);
2712
+ }
2713
+
2714
+ progress {
2715
+ display: inline-block;
2716
+ vertical-align: baseline;
2717
+ }
2718
+
2719
+ progress {
2720
+ -webkit-appearance: none;
2721
+ -moz-appearance: none;
2722
+ display: inline-block;
2723
+ appearance: none;
2724
+ width: 100%;
2725
+ height: 0.5rem;
2726
+ margin-bottom: calc(var(--pico-spacing) * 0.5);
2727
+ overflow: hidden;
2728
+ border: 0;
2729
+ border-radius: var(--pico-border-radius);
2730
+ background-color: var(--pico-progress-background-color);
2731
+ color: var(--pico-progress-color);
2732
+ }
2733
+ progress::-webkit-progress-bar {
2734
+ border-radius: var(--pico-border-radius);
2735
+ background: none;
2736
+ }
2737
+ progress[value]::-webkit-progress-value {
2738
+ background-color: var(--pico-progress-color);
2739
+ -webkit-transition: inline-size var(--pico-transition);
2740
+ transition: inline-size var(--pico-transition);
2741
+ }
2742
+ progress::-moz-progress-bar {
2743
+ background-color: var(--pico-progress-color);
2744
+ }
2745
+ @media (prefers-reduced-motion: no-preference) {
2746
+ progress:indeterminate {
2747
+ background: var(--pico-progress-background-color)
2748
+ linear-gradient(
2749
+ to right,
2750
+ var(--pico-progress-color) 30%,
2751
+ var(--pico-progress-background-color) 30%
2752
+ )
2753
+ top left/150% 150% no-repeat;
2754
+ animation: progress-indeterminate 1s linear infinite;
2755
+ }
2756
+ progress:indeterminate[value]::-webkit-progress-value {
2757
+ background-color: transparent;
2758
+ }
2759
+ progress:indeterminate::-moz-progress-bar {
2760
+ background-color: transparent;
2761
+ }
2762
+ }
2763
+
2764
+ @media (prefers-reduced-motion: no-preference) {
2765
+ [dir="rtl"] progress:indeterminate {
2766
+ animation-direction: reverse;
2767
+ }
2768
+ }
2769
+
2770
+ @keyframes progress-indeterminate {
2771
+ 0% {
2772
+ background-position: 200% 0;
2773
+ }
2774
+ 100% {
2775
+ background-position: -200% 0;
2776
+ }
2777
+ }
2778
+
2779
+ /**
2780
+ * Tooltip ([data-tooltip])
2781
+ */
2782
+ :where(:scope, [data-theme="light"], [data-theme="dark"]),
2783
+ :host {
2784
+ --pico-tooltip-background-color: var(--pico-contrast-background);
2785
+ --pico-tooltip-color: var(--pico-contrast-inverse);
2786
+ }
2787
+
2788
+ [data-tooltip] {
2789
+ position: relative;
2790
+ }
2791
+ [data-tooltip]:not(a, button, input, [role="button"]) {
2792
+ border-bottom: 1px dotted;
2793
+ text-decoration: none;
2794
+ cursor: help;
2795
+ }
2796
+ [data-tooltip][data-placement="top"]::before,
2797
+ [data-tooltip][data-placement="top"]::after,
2798
+ [data-tooltip]::before,
2799
+ [data-tooltip]::after {
2800
+ display: block;
2801
+ z-index: 99;
2802
+ position: absolute;
2803
+ bottom: 100%;
2804
+ left: 50%;
2805
+ padding: 0.25rem 0.5rem;
2806
+ overflow: hidden;
2807
+ transform: translate(-50%, -0.25rem);
2808
+ border-radius: var(--pico-border-radius);
2809
+ background: var(--pico-tooltip-background-color);
2810
+ content: attr(data-tooltip);
2811
+ color: var(--pico-tooltip-color);
2812
+ font-style: normal;
2813
+ font-weight: var(--pico-font-weight);
2814
+ font-size: 0.875rem;
2815
+ text-decoration: none;
2816
+ text-overflow: ellipsis;
2817
+ white-space: nowrap;
2818
+ opacity: 0;
2819
+ pointer-events: none;
2820
+ }
2821
+ [data-tooltip][data-placement="top"]::after,
2822
+ [data-tooltip]::after {
2823
+ padding: 0;
2824
+ transform: translate(-50%, 0rem);
2825
+ border-top: 0.3rem solid;
2826
+ border-right: 0.3rem solid transparent;
2827
+ border-left: 0.3rem solid transparent;
2828
+ border-radius: 0;
2829
+ background-color: transparent;
2830
+ content: "";
2831
+ color: var(--pico-tooltip-background-color);
2832
+ }
2833
+ [data-tooltip][data-placement="bottom"]::before,
2834
+ [data-tooltip][data-placement="bottom"]::after {
2835
+ top: 100%;
2836
+ bottom: auto;
2837
+ transform: translate(-50%, 0.25rem);
2838
+ }
2839
+ [data-tooltip][data-placement="bottom"]:after {
2840
+ transform: translate(-50%, -0.3rem);
2841
+ border: 0.3rem solid transparent;
2842
+ border-bottom: 0.3rem solid;
2843
+ }
2844
+ [data-tooltip][data-placement="left"]::before,
2845
+ [data-tooltip][data-placement="left"]::after {
2846
+ top: 50%;
2847
+ right: 100%;
2848
+ bottom: auto;
2849
+ left: auto;
2850
+ transform: translate(-0.25rem, -50%);
2851
+ }
2852
+ [data-tooltip][data-placement="left"]:after {
2853
+ transform: translate(0.3rem, -50%);
2854
+ border: 0.3rem solid transparent;
2855
+ border-left: 0.3rem solid;
2856
+ }
2857
+ [data-tooltip][data-placement="right"]::before,
2858
+ [data-tooltip][data-placement="right"]::after {
2859
+ top: 50%;
2860
+ right: auto;
2861
+ bottom: auto;
2862
+ left: 100%;
2863
+ transform: translate(0.25rem, -50%);
2864
+ }
2865
+ [data-tooltip][data-placement="right"]:after {
2866
+ transform: translate(-0.3rem, -50%);
2867
+ border: 0.3rem solid transparent;
2868
+ border-right: 0.3rem solid;
2869
+ }
2870
+ [data-tooltip]:focus::before,
2871
+ [data-tooltip]:focus::after,
2872
+ [data-tooltip]:hover::before,
2873
+ [data-tooltip]:hover::after {
2874
+ opacity: 1;
2875
+ }
2876
+ @media (hover: hover) and (pointer: fine) {
2877
+ [data-tooltip]:focus::before,
2878
+ [data-tooltip]:focus::after,
2879
+ [data-tooltip]:hover::before,
2880
+ [data-tooltip]:hover::after {
2881
+ --pico-tooltip-slide-to: translate(-50%, -0.25rem);
2882
+ transform: translate(-50%, 0.75rem);
2883
+ animation-duration: 0.2s;
2884
+ animation-fill-mode: forwards;
2885
+ animation-name: tooltip-slide;
2886
+ opacity: 0;
2887
+ }
2888
+ [data-tooltip]:focus::after,
2889
+ [data-tooltip]:hover::after {
2890
+ --pico-tooltip-caret-slide-to: translate(-50%, 0rem);
2891
+ transform: translate(-50%, -0.25rem);
2892
+ animation-name: tooltip-caret-slide;
2893
+ }
2894
+ [data-tooltip][data-placement="bottom"]:focus::before,
2895
+ [data-tooltip][data-placement="bottom"]:focus::after,
2896
+ [data-tooltip][data-placement="bottom"]:hover::before,
2897
+ [data-tooltip][data-placement="bottom"]:hover::after {
2898
+ --pico-tooltip-slide-to: translate(-50%, 0.25rem);
2899
+ transform: translate(-50%, -0.75rem);
2900
+ animation-name: tooltip-slide;
2901
+ }
2902
+ [data-tooltip][data-placement="bottom"]:focus::after,
2903
+ [data-tooltip][data-placement="bottom"]:hover::after {
2904
+ --pico-tooltip-caret-slide-to: translate(-50%, -0.3rem);
2905
+ transform: translate(-50%, -0.5rem);
2906
+ animation-name: tooltip-caret-slide;
2907
+ }
2908
+ [data-tooltip][data-placement="left"]:focus::before,
2909
+ [data-tooltip][data-placement="left"]:focus::after,
2910
+ [data-tooltip][data-placement="left"]:hover::before,
2911
+ [data-tooltip][data-placement="left"]:hover::after {
2912
+ --pico-tooltip-slide-to: translate(-0.25rem, -50%);
2913
+ transform: translate(0.75rem, -50%);
2914
+ animation-name: tooltip-slide;
2915
+ }
2916
+ [data-tooltip][data-placement="left"]:focus::after,
2917
+ [data-tooltip][data-placement="left"]:hover::after {
2918
+ --pico-tooltip-caret-slide-to: translate(0.3rem, -50%);
2919
+ transform: translate(0.05rem, -50%);
2920
+ animation-name: tooltip-caret-slide;
2921
+ }
2922
+ [data-tooltip][data-placement="right"]:focus::before,
2923
+ [data-tooltip][data-placement="right"]:focus::after,
2924
+ [data-tooltip][data-placement="right"]:hover::before,
2925
+ [data-tooltip][data-placement="right"]:hover::after {
2926
+ --pico-tooltip-slide-to: translate(0.25rem, -50%);
2927
+ transform: translate(-0.75rem, -50%);
2928
+ animation-name: tooltip-slide;
2929
+ }
2930
+ [data-tooltip][data-placement="right"]:focus::after,
2931
+ [data-tooltip][data-placement="right"]:hover::after {
2932
+ --pico-tooltip-caret-slide-to: translate(-0.3rem, -50%);
2933
+ transform: translate(-0.05rem, -50%);
2934
+ animation-name: tooltip-caret-slide;
2935
+ }
2936
+ }
2937
+ @keyframes tooltip-slide {
2938
+ to {
2939
+ transform: var(--pico-tooltip-slide-to);
2940
+ opacity: 1;
2941
+ }
2942
+ }
2943
+ @keyframes tooltip-caret-slide {
2944
+ 50% {
2945
+ opacity: 0;
2946
+ }
2947
+ to {
2948
+ transform: var(--pico-tooltip-caret-slide-to);
2949
+ opacity: 1;
2950
+ }
2951
+ }
2952
+ /**
2953
+ * Accessibility & User interaction
2954
+ */
2955
+ [aria-controls] {
2956
+ cursor: pointer;
2957
+ }
2958
+
2959
+ [aria-disabled="true"],
2960
+ [disabled] {
2961
+ cursor: not-allowed;
2962
+ }
2963
+
2964
+ [dir="rtl"] {
2965
+ direction: rtl;
2966
+ }
2967
+
2968
+ /**
2969
+ * Reduce Motion Features
2970
+ */
2971
+ @media (prefers-reduced-motion: reduce) {
2972
+ *:not([aria-busy="true"]):not(.unreduce-motion),
2973
+ :not([aria-busy="true"])::before,
2974
+ :not([aria-busy="true"])::after {
2975
+ background-attachment: initial !important;
2976
+ animation-duration: 1ms !important;
2977
+ animation-delay: -1ms !important;
2978
+ animation-iteration-count: 1 !important;
2979
+ scroll-behavior: auto !important;
2980
+ transition-delay: 0s !important;
2981
+ transition-duration: 0s !important;
2982
+ }
2983
+ }
2984
+ /*!
2985
+ * Blades CSS standalone kit v3 🥷
2986
+ * Copyright 2026 (https://blades.ninja/css/standalone/)
2987
+ * Licensed under MIT
2988
+ */
2989
+ /*\3c !--section:code-->```css */
2990
+
2991
+ /* Follows https://github.com/picocss/pico/blob/main/scss/_index.scss */
2992
+
2993
+ :scope,
2994
+ :host {
2995
+ /**
2996
+ * Design Tokens !!! NAMING NOT FINALIZED YET !!!
2997
+ * `--in-pico: *` props below are for reference only (not to be used)
2998
+ */
2999
+ --blades-token-primary: var(--pico-primary, dodgerblue);
3000
+ --in-pico: #01aaff;
3001
+ --blades-token-secondary: var(--pico-secondary, lightslategray);
3002
+ --in-pico: #969eaf;
3003
+
3004
+ /**
3005
+ * Inherited Variables
3006
+ */
3007
+ --blades-timeline-border-color: color-mix(
3008
+ in srgb,
3009
+ var(--blades-token-secondary) 50%,
3010
+ transparent
3011
+ );
3012
+ }
3013
+
3014
+ /* Layout */
3015
+
3016
+ /*\3c !--section:docs-->
3017
+
3018
+ `.columns` automatically creates columns with at least 30 characters each:
3019
+
3020
+ <article class="columns">
3021
+ <p>1</p><p>2</p><p>3</p><p>4</p><p>5</p><p>6</p>
3022
+ </article>
3023
+
3024
+ The smaller the font size, the more columns will be created:
3025
+
3026
+ <article class="columns" style="font-size: 65%">
3027
+ <p>1</p><p>2</p><p>3</p><p>4</p><p>5</p><p>6</p><p>7</p><p>8</p><p>9</p>
3028
+ </article>
3029
+
3030
+ Useful for tables of contents and long lists.
3031
+
3032
+ \3c !--section:code-->
3033
+ ```css */
3034
+ .columns {
3035
+ -moz-columns: 25ch auto;
3036
+ columns: 25ch auto; /* common container 65ch / 25ch => 2 columns max, with a buffer for list paddings */
3037
+ }
3038
+ /* Avoid breaking inside elements, such as nested lists */
3039
+ .columns > * {
3040
+ -moz-column-break-inside: avoid;
3041
+ break-inside: avoid;
3042
+ }
3043
+ /* Content */
3044
+ /*\3c !--section:docs-->
3045
+
3046
+ The `<pre><code>` blocks are Prism-compatible and support captions via `data-caption="..."` attribute:
3047
+
3048
+ ```treeview {data-caption="Blades CSS ships:"}
3049
+ /css/
3050
+ ├── blades.css (Pico CSS successor)
3051
+ ├── blades.standalone.css (framework-agnostic)
3052
+ ├── ninja.css (experimental add-ons)
3053
+ └── pico.css (underlying fork)
3054
+ ```
3055
+
3056
+ \3c !--section:code-->
3057
+ ```css */
3058
+ @media (width < 768px) {
3059
+ pre {
3060
+ border-radius: 0
3061
+ }
3062
+ }
3063
+
3064
+ /* Code block caption via data-attr (to display filename, etc.) */
3065
+
3066
+ code[data-caption]::before {
3067
+ display: block;
3068
+ margin-bottom: 1rem;
3069
+ content: attr(data-caption);
3070
+ font-style: italic;
3071
+ opacity: 50%;
3072
+ }
3073
+
3074
+ /* Forms */
3075
+
3076
+ /*!
3077
+ * Float Label CSS v2 by Blades CSS 🥷🏷️
3078
+ * Copyright 2016–2026 (https://blades.ninja/css/float-label/)
3079
+ * Licensed under MIT
3080
+ */
3081
+ /*\3c !--section:docs-->
3082
+
3083
+ First, we target either:
3084
+ 1. `<label>` which `:has` inner form inputs (classless approach)
3085
+ 2. or explicit `.has-float-label` class (explicit approach)
3086
+
3087
+ ```css */
3088
+ label:has(> span):has(
3089
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3090
+ textarea,
3091
+ select
3092
+ ),
3093
+ .has-float-label {
3094
+ display: block;
3095
+ position: relative;
3096
+ /*```
3097
+ Finally, we detect if placeholder is shown, but not in focus. That means we can safely hide it, and enlarge the float label instead:
3098
+ ```css */
3099
+ }
3100
+ /*```
3101
+ Then, we define the default/fallback state (when the float label should be minimized):
3102
+ ```css */
3103
+ label:has(> span):has(
3104
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3105
+ textarea,
3106
+ select
3107
+ ) > span,
3108
+ label:has(> span):has(
3109
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3110
+ textarea,
3111
+ select
3112
+ ) label,
3113
+ .has-float-label > span,
3114
+ .has-float-label label {
3115
+ position: absolute;
3116
+ top: 0;
3117
+ left: 0;
3118
+ font-size: 75%;
3119
+ cursor: text;
3120
+ }
3121
+ label:has(> span):has(
3122
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3123
+ textarea,
3124
+ select
3125
+ ) *:placeholder-shown:not(:focus)::-moz-placeholder, .has-float-label *:placeholder-shown:not(:focus)::-moz-placeholder {
3126
+ opacity: 0;
3127
+ }
3128
+ label:has(> span):has(
3129
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3130
+ textarea,
3131
+ select
3132
+ ) *:-moz-placeholder:not(:focus)::placeholder, .has-float-label *:-moz-placeholder:not(:focus)::placeholder {
3133
+ opacity: 0;
3134
+ }
3135
+ label:has(> span):has(
3136
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3137
+ textarea,
3138
+ select
3139
+ ) *:placeholder-shown:not(:focus)::placeholder, .has-float-label *:placeholder-shown:not(:focus)::placeholder {
3140
+ opacity: 0;
3141
+ }
3142
+ label:has(> span):has(
3143
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3144
+ textarea,
3145
+ select
3146
+ ):has(*:-moz-placeholder:not(:focus)) > span, label:has(> span):has(
3147
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3148
+ textarea,
3149
+ select
3150
+ ):has(*:-moz-placeholder:not(:focus)) label, .has-float-label:has(*:-moz-placeholder:not(:focus)) > span, .has-float-label:has(*:-moz-placeholder:not(:focus)) label {
3151
+ font-size: inherit;
3152
+ opacity: 50%;
3153
+ }
3154
+ label:has(> span):has(
3155
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3156
+ textarea,
3157
+ select
3158
+ ):has(*:placeholder-shown:not(:focus)) > span,
3159
+ label:has(> span):has(
3160
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3161
+ textarea,
3162
+ select
3163
+ ):has(*:placeholder-shown:not(:focus)) label,
3164
+ .has-float-label:has(*:placeholder-shown:not(:focus)) > span,
3165
+ .has-float-label:has(*:placeholder-shown:not(:focus)) label {
3166
+ font-size: inherit;
3167
+ opacity: 50%;
3168
+ }
3169
+ /*```
3170
+
3171
+ The `:has(*:placeholder-shown:not(:focus))` trick allows this input state information to *propagate* to the parent level. This enables modern CSS to target inner float label (`<span>` or `<label>`) regardless of its position relative to the input field.
3172
+
3173
+ Historically, this was not possible: the float label had to be placed after the input field to be targeted using the `input:focus + label` selector.
3174
+
3175
+ */
3176
+ label:has(> span):has(
3177
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3178
+ textarea,
3179
+ select
3180
+ ),
3181
+ .has-float-label {
3182
+
3183
+ /* Enlarged state */
3184
+ }
3185
+ /* Default/fallback state */
3186
+ label:has(> span):has(
3187
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3188
+ textarea,
3189
+ select
3190
+ ) > span,
3191
+ label:has(> span):has(
3192
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3193
+ textarea,
3194
+ select
3195
+ ) label,
3196
+ .has-float-label > span,
3197
+ .has-float-label label {
3198
+ padding-inline-start: calc(1rem + 1px); /* match Pico's padding + border */
3199
+ padding-block-start: 0.25rem;
3200
+ opacity: 75%;
3201
+ transition: all 0.25s;
3202
+ }
3203
+ label:has(> span):has(
3204
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3205
+ textarea,
3206
+ select
3207
+ ) input,
3208
+ label:has(> span):has(
3209
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3210
+ textarea,
3211
+ select
3212
+ ) textarea,
3213
+ label:has(> span):has(
3214
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3215
+ textarea,
3216
+ select
3217
+ ) select,
3218
+ .has-float-label input,
3219
+ .has-float-label textarea,
3220
+ .has-float-label select {
3221
+ margin-block-start: 0; /* reset Pico */
3222
+ padding-inline-start: 1rem; /* match Pico */
3223
+ padding-block: 1.125rem 0.375rem; /* match Pico's total: 2 x 0.75rem = 1.5rem */
3224
+ }
3225
+ label:has(> span):has(
3226
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3227
+ textarea,
3228
+ select
3229
+ ) input::-moz-placeholder, label:has(> span):has(
3230
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3231
+ textarea,
3232
+ select
3233
+ ) textarea::-moz-placeholder, label:has(> span):has(
3234
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3235
+ textarea,
3236
+ select
3237
+ ) select::-moz-placeholder, .has-float-label input::-moz-placeholder, .has-float-label textarea::-moz-placeholder, .has-float-label select::-moz-placeholder {
3238
+ opacity: 100%;
3239
+ -moz-transition: all 0.25s;
3240
+ transition: all 0.25s;
3241
+ }
3242
+ label:has(> span):has(
3243
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3244
+ textarea,
3245
+ select
3246
+ ) input::placeholder, label:has(> span):has(
3247
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3248
+ textarea,
3249
+ select
3250
+ ) textarea::placeholder, label:has(> span):has(
3251
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3252
+ textarea,
3253
+ select
3254
+ ) select::placeholder, .has-float-label input::placeholder, .has-float-label textarea::placeholder, .has-float-label select::placeholder {
3255
+ opacity: 100%;
3256
+ transition: all 0.25s;
3257
+ }
3258
+ label:has(> span):has(
3259
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3260
+ textarea,
3261
+ select
3262
+ ):has(*:-moz-placeholder:not(:focus)) > span, label:has(> span):has(
3263
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3264
+ textarea,
3265
+ select
3266
+ ):has(*:-moz-placeholder:not(:focus)) label, .has-float-label:has(*:-moz-placeholder:not(:focus)) > span, .has-float-label:has(*:-moz-placeholder:not(:focus)) label {
3267
+ padding-block: 0.75rem; /* match Pico */
3268
+ }
3269
+ label:has(> span):has(
3270
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3271
+ textarea,
3272
+ select
3273
+ ):has(*:placeholder-shown:not(:focus)) > span,
3274
+ label:has(> span):has(
3275
+ input:not([type="checkbox"], [type="radio"], [type="range"]),
3276
+ textarea,
3277
+ select
3278
+ ):has(*:placeholder-shown:not(:focus)) label,
3279
+ .has-float-label:has(*:placeholder-shown:not(:focus)) > span,
3280
+ .has-float-label:has(*:placeholder-shown:not(:focus)) label {
3281
+ padding-block: 0.75rem; /* match Pico */
3282
+ }
3283
+ /* Components */
3284
+ /* Extends https://github.com/picocss/pico/blob/main/scss/content/_link.scss
3285
+ \3c !--section:code-->
3286
+ ```css */
3287
+ /* Use inline flex only if link contains an icon */
3288
+ a:not(.does-not-exist):has(> i) {
3289
+ display: inline-flex;
3290
+ overflow-y: clip; /* to work in pair with text-underline-offset in Safari */
3291
+ gap: 0.375ch; /* =3/8 */
3292
+ text-wrap: balance;
3293
+ }
3294
+ a:not(.does-not-exist) > i {
3295
+ float: left; /* ✅ Chrome ❌ Safari */
3296
+ font-style: normal;
3297
+ text-underline-offset: -2em; /* ❌ Chrome ✅ Safari - to clip it with overflow-y */
3298
+ }
3299
+ /* Favicons */
3300
+ a:not(.does-not-exist) > i > img {
3301
+ display: inline-block; /* for Tailwind CSS Typography */
3302
+ max-width: none; /* to keep ratio safe */
3303
+ height: 1.25em;
3304
+ margin-block-start: calc(-0.25em / 2);
3305
+ }
3306
+ a:not(.does-not-exist) > i[class^="fa-"],
3307
+ a:not(.does-not-exist) > i[class*=" fa-"] {
3308
+ line-height: inherit;
3309
+ --fa-width: auto;
3310
+ }
3311
+ /* Font Awesome */
3312
+ a:not(.does-not-exist) > i.fa-lg {
3313
+ line-height: normal;
3314
+ }
3315
+ /*```
3316
+ \3c !--section:summary-->
3317
+
3318
+ Use *Bl*ades `<i>`-helper to wrap emojis, favicons, or simply drop Font Awesome icons inside links.
3319
+ It automatically handles sizing and alignment while preventing underline on icons.
3320
+
3321
+ \3c !--section:docs-->
3322
+
3323
+ <article class="breakout-item">
3324
+
3325
+ | Use `<i>`-helper with | Clean HTML without `<span>ning` |
3326
+ | ------------------------------------------------------------------------------------- | ------------------------------------ |
3327
+ | [<i>🥷</i> Emojis](#) | `<a><i>🥷</i> Text</a>` |
3328
+ | [<i>![](https://www.google.com/s2/favicons?domain=any.digital&sz=64)</i> Favicons](#) | `<a><i><img src="..."></i> Text</a>` |
3329
+ | [<i class="fa-brands fa-github fa-lg"></i> Font Awesome icons](#) | `<a><i class="fa-..."></i> Text</a>` |
3330
+ </article>
3331
+
3332
+ Or even for:
3333
+
3334
+ <article>
3335
+ <a href="#" style="margin: 0 0 0 1rem"><i>🥷</i> very-very-very-very-very-<br>long-multiline-links</a>
3336
+ </article>
3337
+
3338
+ How we made it: https://codepen.io/editor/anydigital/pen/019d2b94-5616-75dc-a23e-e111869d5237
3339
+
3340
+ \3c !--section--> */
3341
+ /*\3c !--section:docs-->
3342
+
3343
+ Use `dl.timeline` or wrap a `<dl>` with `.has-timeline` to style it as a
3344
+ vertical timeline — each `<dd>` gets a left border strip acting as the track:
3345
+
3346
+ <article class="has-timeline">
3347
+
3348
+ May 11, 2026
3349
+ : First Blades CSS stable release (v2.2.0).
3350
+
3351
+ Mar 15, 2025
3352
+ : Last Pico CSS update (v2.1.1).
3353
+
3354
+ </article>
3355
+
3356
+ \3c !--section:code-->```css */
3357
+ dl.timeline dd, .has-timeline > dl dd {
3358
+ margin-block: 0;
3359
+ padding: 0.25rem 0 0.75rem 1rem;
3360
+ border-inline-start: 0.25rem solid var(--blades-timeline-border-color);
3361
+ }
3362
+ /*
3363
+ * Compact: opt-in denser sizing and a more current look, applied under `data-compact` on
3364
+ * <html> (whole page) or on any element such as a single <form>. Without the attribute it
3365
+ * changes nothing. Part of blades.css (and blades.layered.css); with per-part imports, import it
3366
+ * last (in the same layer as the other parts).
3367
+ *
3368
+ * The extra selectors keep the values winning where Pico re-declares them at the same
3369
+ * specificity: nested [data-theme] sections, the `.pico` root when combined with the conditional build,
3370
+ * and a shadow host.
3371
+ */
3372
+ [data-compact],
3373
+ [data-compact] :is([data-theme], .pico),
3374
+ .pico[data-compact],
3375
+ :host([data-compact]),
3376
+ :host([data-compact]) [data-theme] {
3377
+ --pico-border-radius: 0.5rem;
3378
+ --pico-outline-width: 0.1875rem;
3379
+ --pico-block-spacing-vertical: 1.5rem;
3380
+ --pico-block-spacing-horizontal: 1.5rem;
3381
+ --pico-form-element-spacing-vertical: 0.375rem;
3382
+ --pico-form-element-spacing-horizontal: 0.75rem;
3383
+ --pico-form-label-font-weight: 500;
3384
+ --pico-button-font-weight: 500;
3385
+ --pico-form-element-background-color: light-dark(#fff, rgb(28, 33, 43.5));
3386
+ --pico-card-border-color: var(--pico-muted-border-color);
3387
+ --pico-card-box-shadow:
3388
+ 0 0 0 var(--pico-border-width) var(--pico-card-border-color), 0 1px 2px rgba(0, 0, 0, 0.05);
3389
+ --pico-card-sectioning-background-color: var(--pico-card-background-color);
3390
+ }
3391
+
3392
+ /* Search fields keep their pill shape */
3393
+ [data-compact]:is([role="search"], [type="search"]) {
3394
+ --pico-border-radius: 5rem;
3395
+ }
3396
+
3397
+ /* Page-level only: everything is sized in rem, so the root size can't change per element */
3398
+ :root[data-compact],
3399
+ :host([data-compact]) {
3400
+ --pico-font-size: 100%;
3401
+ }
3402
+
3403
+ [data-compact] :is(h1, h2, h3, h4, h5, h6),
3404
+ :host([data-compact]) :is(h1, h2, h3, h4, h5, h6) {
3405
+ --pico-font-weight: 600;
3406
+ }
3407
+
3408
+ /* Keep helper text at the normal weight under the 500-weight labels */
3409
+ [data-compact] :where(input, select, textarea, fieldset, .grid) + small,
3410
+ :host([data-compact]) :where(input, select, textarea, fieldset, .grid) + small {
3411
+ font-weight: var(--pico-font-weight);
3412
+ }
3413
+ /**
3414
+ * Landmarks
3415
+ * Included in pico.css and blades.ninja.css; not in blades.css
3416
+ */
3417
+ body > header,
3418
+ body > main,
3419
+ body > footer {
3420
+ padding-block: var(--pico-block-spacing-vertical);
3421
+ }
3422
+ /*!
3423
+ * Blades CSS' ninja add-ons (experimental) 🥷🧪
3424
+ * Copyright 2026 (https://blades.ninja/css/ninja/)
3425
+ * Licensed under MIT
3426
+ */
3427
+
3428
+ /* Layout */
3429
+
3430
+ /*
3431
+ \3c !--section:code-->
3432
+ ```css */
3433
+ .breakout,
3434
+ .breakout-all {
3435
+ max-width: calc(10% + 65ch + 10%);
3436
+ /* Prepare the container for breakout elements */
3437
+ padding-inline: 10%;
3438
+ }
3439
+ @media (width < 768px) {
3440
+ .breakout,
3441
+ .breakout-all {
3442
+ max-width: calc(1rem + 65ch + 1rem);
3443
+ padding-inline: 1rem
3444
+ }
3445
+ }
3446
+ /* Breakout direct children only */
3447
+ .breakout > *:is(
3448
+ table,
3449
+ pre,
3450
+ figure, video, iframe, canvas,
3451
+ img, picture,
3452
+
3453
+ .breakout-item,
3454
+ .breakout-item-max
3455
+ ),
3456
+ .breakout-all > *:is(
3457
+ table,
3458
+ pre,
3459
+ figure, video, iframe, canvas,
3460
+ img, picture,
3461
+
3462
+ .breakout-item,
3463
+ .breakout-item-max
3464
+ ) {
3465
+ width: -moz-fit-content;
3466
+ width: fit-content;
3467
+ min-width: 100%;
3468
+ max-width: min(125%, 100dvw);
3469
+ margin-left: 50%;
3470
+ transform: translateX(-50%);
3471
+ }
3472
+ /* Respect img/picture min-width */
3473
+ .breakout > *:is(img, picture):not(.does-not-exist), .breakout-all > *:is(img, picture):not(.does-not-exist) /* soft win specificity over .breakout-item above */ {
3474
+ min-width: auto;
3475
+ }
3476
+ /* Max out the width of the element */
3477
+ .breakout > *.breakout-item-max, .breakout-all > *.breakout-item-max {
3478
+ width: min(125%, 100dvw) !important;
3479
+ /* !important is for cases like figure.breakout-item-max @TODO */
3480
+ }
3481
+
3482
+ .breakout-all > *:is(h2, h3, h4, h5, h6, hr):not([class]) {
3483
+ position: relative;
3484
+ }
3485
+
3486
+ .breakout-all > *:is(h2, h3, h4, h5, h6, hr):not([class])::before {
3487
+ display: block;
3488
+ position: absolute;
3489
+ background: gray;
3490
+ content: "";
3491
+ opacity: 12.5%;
3492
+ }
3493
+
3494
+ .breakout-all > *:is(h2, h3, h4, h5, h6):not([class])::before {
3495
+ top: 50%;
3496
+ right: 100%;
3497
+ width: 10em;
3498
+ height: 0.25em;
3499
+ margin-right: 0.8ch;
3500
+ transform: translateY(-50%);
3501
+ background: linear-gradient(to left, gray, transparent);
3502
+ }
3503
+
3504
+ /* @TODO: add to tricks-wiki why `*` works here, but `&` fails */
3505
+
3506
+ .breakout-all > *:is(h2, h3, h4, h5, h6):not([class]):where(hr:not([class]) + *)::before {
3507
+ display: none !important;
3508
+ }
3509
+
3510
+ .breakout-all > *:is(hr):not([class]) {
3511
+ height: 0.5rem;
3512
+ overflow: visible;
3513
+ border: none;
3514
+ }
3515
+
3516
+ .breakout-all > *:is(hr):not([class])::before {
3517
+ left: 50%;
3518
+ width: 100dvw;
3519
+ height: 100%;
3520
+ transform: translateX(-50%);
3521
+ }
3522
+ /*```
3523
+ \3c !--section:docs-->
3524
+
3525
+ The `.breakout` layout allows images, tables, and other figures to automatically extend or bleed beyond their parent container’s width.
3526
+
3527
+ Break out a wide image from the text flow:
3528
+
3529
+ <div>\3c !-- Dummy div to avoid p tag in Markdown --></div><img
3530
+ src="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='3000' height='300'><rect width='100%' height='100%' fill='gray'/></svg>">
3531
+
3532
+ Or table:
3533
+
3534
+ | Imagine<hr> | a<hr> | really<hr> | wide<hr> | table<hr> | here<hr> |
3535
+ | ----------- | ----- | ---------- | -------- | --------- | -------- |
3536
+ | ... |
3537
+
3538
+ Or code block:
3539
+
3540
+ ```html
3541
+ <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod. Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam, quod.</p>
3542
+ ```
3543
+
3544
+ Or anything else:
3545
+
3546
+ <article class="breakout-item-max" data-theme="dark">
3547
+
3548
+ Using `.breakout-item` and `.breakout-item-max` helpers {style=margin:0}
3549
+ </article>
3550
+
3551
+ <div><hr></div>
3552
+
3553
+ `.breakout-all` also visually breaks out headings and horizontal rules:
3554
+
3555
+ <h2>Heading 2</h2><h3>Heading 3</h3><h4>Heading 4</h4><h5>Heading 5</h5><h6>Heading 6</h6>
3556
+ <hr>
3557
+
3558
+ \3c !--section--> */
3559
+ /*```\3c !--section:docs-->
3560
+
3561
+ `<a href="#top">` is automatically fixed to the bottom-right corner with extra top padding for easier clicking:
3562
+ ```css */
3563
+ [href="#top"] {
3564
+ position: fixed;
3565
+ right: 0;
3566
+ bottom: 0;
3567
+ padding-top: 50vh;
3568
+ }
3569
+ /* Content */
3570
+ /*\3c !--section:docs-->
3571
+
3572
+ ## Heading anchors
3573
+
3574
+ Links with `href="#..."` inside headings are automatically displayed as anchors:
3575
+
3576
+ <article>
3577
+ <h2 style="margin: 0 0 0 1.5rem">Heading with anchor <a aria-hidden="true" style="visibility: visible">#</a></h2>
3578
+ </article>
3579
+
3580
+ How it works:
3581
+ ```css */
3582
+ h1,
3583
+ h2,
3584
+ h3,
3585
+ h4,
3586
+ h5,
3587
+ h6 {
3588
+ position: relative;
3589
+ }
3590
+ h1 a[aria-hidden="true"], h2 a[aria-hidden="true"], h3 a[aria-hidden="true"], h4 a[aria-hidden="true"], h5 a[aria-hidden="true"], h6 a[aria-hidden="true"] {
3591
+ visibility: hidden;
3592
+ position: absolute;
3593
+ top: 50%;
3594
+ right: 100%;
3595
+ padding-right: 0.2ch;
3596
+ transform: translateY(-50%);
3597
+ color: silver;
3598
+ text-decoration: none;
3599
+ }
3600
+ @media /* to avoid double-tap on touch devices */ (hover: hover) {
3601
+ h1:hover a[aria-hidden="true"], h2:hover a[aria-hidden="true"], h3:hover a[aria-hidden="true"], h4:hover a[aria-hidden="true"], h5:hover a[aria-hidden="true"], h6:hover a[aria-hidden="true"] {
3602
+ visibility: visible;
3603
+ }
3604
+ }
3605
+ /*\3c !--section:docs-->
3606
+
3607
+ ## Custom markers
3608
+
3609
+ Customize markers using inline `style="--list-marker:..."` on `<ul>/<ol>` or even individual `<li>`:
3610
+
3611
+ <article>
3612
+
3613
+ - you
3614
+ - can
3615
+ - make
3616
+ - really
3617
+ - cool markers {style="--list-marker:'🧊 '"}
3618
+ - with
3619
+ - *Bl*ades {style="--list-marker:'🥷 '"}
3620
+
3621
+ {style="--list-marker:'→ '"}
3622
+ </article>
3623
+
3624
+ How it works:
3625
+ ```css */
3626
+ ul[style*="--list-marker:"], ol[style*="--list-marker:"] {
3627
+ list-style-type: var(--list-marker);
3628
+ }
3629
+ ul[style*="--list-marker:"] > li, ol[style*="--list-marker:"] > li {
3630
+ list-style-type: inherit;
3631
+ }
3632
+ ul li[style*="--list-marker:"], ol li[style*="--list-marker:"] {
3633
+ list-style-type: var(--list-marker);
3634
+ }
3635
+ ul li[data-marker]::marker, ol li[data-marker]::marker {
3636
+ content: attr(data-marker) " "; /* ⚠️ Chrome and Firefox only */
3637
+ }
3638
+ /*```
3639
+
3640
+ ## Markerless
3641
+
3642
+ `.markerless` removes markers and reduces padding:
3643
+
3644
+ <article>
3645
+
3646
+ - 1️⃣ so you can use
3647
+ - 2️⃣ emojis or images
3648
+ - 3️⃣ instead of bullets
3649
+
3650
+ {.markerless}
3651
+ </article>
3652
+
3653
+ How it works:
3654
+ ```css */
3655
+ ul.markerless, ol.markerless {
3656
+ padding-inline-start: 1.25rem;
3657
+ }
3658
+ ul.markerless li, ol.markerless li {
3659
+ list-style: none;
3660
+ }
3661
+ /*```
3662
+
3663
+ ## Unlist
3664
+
3665
+ `.unlist` removes list styling at all:
3666
+
3667
+ <article>
3668
+
3669
+ - One: <article>1</article>
3670
+ - Two: <article>2</article>
3671
+ - Three: <article>3</article>
3672
+
3673
+ {.unlist .grid style=margin:0}
3674
+ </article>
3675
+
3676
+ `.unlist-all` removes styling from all nested lists too.
3677
+
3678
+ How it works:
3679
+ ```css */
3680
+ ul.unlist,
3681
+ ul.unlist-all,
3682
+ .unlist-all ul,
3683
+ ol.unlist,
3684
+ ol.unlist-all,
3685
+ .unlist-all ol {
3686
+ padding-inline-start: 0;
3687
+ }
3688
+ ul.unlist > li, ul.unlist-all > li, .unlist-all ul > li, ol.unlist > li, ol.unlist-all > li, .unlist-all ol > li {
3689
+ list-style: none;
3690
+ }
3691
+ /*\3c !--section:docs-->
3692
+
3693
+ ## Column expanders
3694
+
3695
+ Place `<hr>` element inside `<th>` column to expand it horizontally:
3696
+
3697
+ <article>
3698
+
3699
+ | Column with `<hr>`<hr> | Same column without `<hr>` | ... {style=width:100%} |
3700
+ | --- | --- | --- |
3701
+ | (012) 345-6789 | (012) 345-6789 |
3702
+ </article>
3703
+
3704
+ Living examples of big tables with `<hr>`-expanders: \3c !--A-Z-->
3705
+ - https://blades.ninja/ai/ide/
3706
+ - https://blades.ninja/build-awesome-11ty/starters/
3707
+ - https://blades.ninja/css/frameworks/
3708
+ - https://blades.ninja/ssg/
3709
+
3710
+ How it works:
3711
+ ```css */
3712
+ th hr {
3713
+ visibility: hidden;
3714
+ width: 12ch; /* min ~65/12 = ~5 cols */
3715
+ height: 0;
3716
+ margin: 0;
3717
+ }
3718
+ th hr.lg {
3719
+ width: 18ch;
3720
+ }
3721
+ th hr.x2 {
3722
+ width: 24ch;
3723
+ }
3724
+ /*```
3725
+
3726
+ ## Borderless table
3727
+
3728
+ `.borderless` removes all default borders:
3729
+
3730
+ <article>
3731
+
3732
+ | Less | borders |
3733
+ | ---- | ------- |
3734
+ | More | fun |
3735
+
3736
+ {.borderless}
3737
+ </article>
3738
+
3739
+ \3c !--section-->*/
3740
+ table.borderless th,
3741
+ table.borderless td {
3742
+ border: none;
3743
+ }
3744
+ /*
3745
+ \3c !--section:code-->
3746
+ ```css */
3747
+ table.responsive,
3748
+ .breakout > table:not(.does-not-exist),
3749
+ .breakout-all > table:not(.does-not-exist) {
3750
+
3751
+ /* Let them scroll */
3752
+ display: block;
3753
+
3754
+ /* Let them full-bleed */
3755
+ width: -moz-max-content;
3756
+ width: max-content;
3757
+ min-width: auto;
3758
+ max-width: 100dvw;
3759
+ /* Center horizontally */
3760
+ margin-left: 50%;
3761
+ padding-inline: 7.5%;
3762
+ overflow-x: auto;
3763
+ transform: translateX(-50%);
3764
+ -webkit-overflow-scrolling: touch; /* Smooth scroll for iOS */
3765
+ }
3766
+ table.responsive th,
3767
+ table.responsive td,
3768
+ .breakout > table:not(.does-not-exist) th,
3769
+ .breakout > table:not(.does-not-exist) td,
3770
+ .breakout-all > table:not(.does-not-exist) th,
3771
+ .breakout-all > table:not(.does-not-exist) td {
3772
+ padding-inline-start: 0;
3773
+ }
3774
+ /*```
3775
+ `table:not(.does-not-exist)` trick (inspired by postcss) is used here to increase specificity against selectors like `&:is(table, .table)`
3776
+
3777
+ \3c !--section:summary-->
3778
+
3779
+ `.responsive` makes a table full-bleed and scroll on mobile, without a need for a redundant wrapper (finally).
3780
+ Tables inside https://blades.ninja/css/breakout/ are responsive by default.
3781
+
3782
+ \3c !--section:docs-->
3783
+
3784
+ ### Demo table
3785
+
3786
+ | Term | Description <hr class="x2"> | Link |
3787
+ | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
3788
+ | Responsive design | Approach to web design that aims to make web pages render well on a variety of devices and window or screen sizes from minimum to maximum display size to ensure usability and satisfaction. | https://en.wikipedia.org/wiki/Responsive_web_design |
3789
+
3790
+ {.responsive}
3791
+
3792
+ ---
3793
+
3794
+ Living examples: \3c !--A-Z-->
3795
+ - https://blades.ninja/ai/ide/
3796
+ - https://blades.ninja/build-awesome-11ty/starters/
3797
+ - https://blades.ninja/css/frameworks/
3798
+ - https://blades.ninja/ssg/
3799
+
3800
+ \3c !--section--> */
3801
+ /* Other */
3802
+ /*\3c !--section:docs-->
3803
+
3804
+ ### `sup`er &nbsp; and &nbsp; `sub`headings
3805
+
3806
+ <article><br>
3807
+
3808
+ # <sup style>Parent page</sup> Page title <sub style>Subtitle</sub>
3809
+
3810
+ </article>
3811
+
3812
+ How it works:
3813
+ ```css */
3814
+ sup[style] {
3815
+ display: block;
3816
+ font-size: min(50%, 0.75rem);
3817
+ letter-spacing: 0.0625em;
3818
+ text-transform: uppercase;
3819
+ }
3820
+ sub[style] {
3821
+ display: block;
3822
+ bottom: 0;
3823
+ font-weight: 300;
3824
+ line-height: 1.1;
3825
+ opacity: 75%;
3826
+ }
3827
+ sub[style]:where(h1 > *) {
3828
+ font-size: 50%;
3829
+ }
3830
+ /*```
3831
+
3832
+ ### Teasers
3833
+
3834
+ <article style="padding-inline: 2rem">
3835
+ <a href="https://blades.ninja/" role="button" class="outline">
3836
+ <h4>Blades CSS</h4>
3837
+ Fully compatible and actively maintained successor to Pico CSS.
3838
+ </a>
3839
+ </article>
3840
+
3841
+ How it works:
3842
+ ```css */
3843
+ a[role="button"]:has(h1, h2, h3, h4, h5, h6) {
3844
+ margin: 0 0 0.5rem -1rem;
3845
+ border-width: 1px 0 0 1px;
3846
+ text-align: start;
3847
+ }
3848
+ /*```
3849
+
3850
+ ### `.opt`ional content
3851
+
3852
+ How it works:
3853
+ ```css */
3854
+ @media (width < 1024px) {
3855
+ .opt:not(.does-not-exist) {
3856
+ display: none
3857
+ }
3858
+ }
3859
+ /*```
3860
+
3861
+ ### Nicer GitHub favicons
3862
+
3863
+ <article>
3864
+
3865
+ https://github.com/anyblades/blades
3866
+
3867
+ </article>
3868
+
3869
+ How it works:
3870
+ ```css */
3871
+ img[src*="?domain=github.com&"] {
3872
+ border-radius: 50%;
3873
+ }
3874
+ @media (prefers-color-scheme: dark) {
3875
+ img[src*="?domain=github.com&"] {
3876
+ filter: invert(1)
3877
+ }
3878
+ }
3879
+ /*```
3880
+
3881
+ ## Dark auto
3882
+
3883
+ `.dark-auto` automatically creates a simple dark version of any element:
3884
+
3885
+ <article data-theme="dark">
3886
+ <p>Look how cool <big class="dark-auto">🔥🕷️🐦‍⬛🐄🦓</big> can look in the dark!</p>
3887
+ </article>
3888
+
3889
+ How it works:
3890
+ ```css */
3891
+ /* Per https://picocss.com/docs/css-variables#css-variables-for-color-schemes */
3892
+ :root {
3893
+ --blades-dark-filter: invert(100%) hue-rotate(180deg);
3894
+ }
3895
+ .dark-auto {
3896
+ /* Dark color scheme (Forced) */
3897
+ }
3898
+ /* Dark color scheme (Auto) */
3899
+ @media (prefers-color-scheme: dark) {
3900
+ .dark-auto {
3901
+ filter: var(--blades-dark-filter)
3902
+ }
3903
+ }
3904
+ .dark-auto[data-theme="dark"],
3905
+ .dark-auto:where([data-theme="dark"] *) {
3906
+ filter: var(--blades-dark-filter);
3907
+ }
3908
+ /*```
3909
+
3910
+ ## Faded
3911
+
3912
+ `.faded` reduces the opacity of an element:
3913
+
3914
+ <article class="faded">
3915
+ Hover to unfade me!
3916
+ </article>
3917
+
3918
+ How it works:
3919
+ ```css */
3920
+ .faded {
3921
+ opacity: 50%;
3922
+ }
3923
+ .faded:hover {
3924
+ opacity: 87.5%;
3925
+ }
3926
+ /*```
3927
+ \3c !--section--> */
3928
+
3929
+ /* Fix the scrollbar color when inverted by https://tailwindcss.com/docs/filter-invert */
3930
+ .invert ::-webkit-scrollbar {
3931
+ filter: invert(1) !important;
3932
+ }
3933
+ /*\3c !--section:code-->```css */
3934
+ html {
3935
+ /* Prevent horizontal overflow and scrolling, modern way. */
3936
+ overflow-x: clip;
3937
+
3938
+ /* Enable font smoothing */
3939
+ -webkit-font-smoothing: antialiased;
3940
+ -moz-osx-font-smoothing: grayscale;
3941
+ }
3942
+
3943
+ body {
3944
+
3945
+ /* Make the `body` a flex container with column layout, and `main` to automatically fill available space. This is useful for creating sticky footers and full-height layouts. */
3946
+ display: flex;
3947
+ flex-direction: column;
3948
+ /* Ensure `body` takes at least the full height of the viewport (using dynamic viewport height for better mobile support). */
3949
+ min-height: 100dvh;
3950
+
3951
+ /* Evaluates the last ~4 lines of text blocks to prevent a single word from sitting on the final line. */
3952
+
3953
+ /* Enable global hyphenation */
3954
+ /* ... except for links and tables which are better (safer) without hyphenation */
3955
+ }
3956
+
3957
+ body > main {
3958
+ flex-grow: 1;
3959
+ }
3960
+
3961
+ body {
3962
+ hyphens: auto;
3963
+ text-wrap: pretty;
3964
+ }
3965
+
3966
+ body a,
3967
+ body table {
3968
+ hyphens: none;
3969
+ }
3970
+
3971
+ a:not([href^="#"]) {
3972
+ text-decoration-thickness: 1px;
3973
+ }
3974
+
3975
+ a:not([href^="#"]):hover {
3976
+ text-decoration-thickness: 2px;
3977
+ }
3978
+
3979
+ h1,
3980
+ h2,
3981
+ h3,
3982
+ h4,
3983
+ h5,
3984
+ h6 {
3985
+ text-wrap: balance;
3986
+ }
3987
+ h1 {
3988
+ margin-bottom: 1rem; /* for tw-typography */
3989
+ font-size: 2.5em; /* for pico.css & tw-typography */
3990
+ }
3991
+
3992
+ hr {
3993
+ margin-block: 2em; /* for pico.css & tw-typography */
3994
+ }
3995
+
3996
+ ul ul {
3997
+ font-size: 87.5%;
3998
+ }
3999
+
4000
+ dl dt {
4001
+ margin-block: 0.25rem;
4002
+ font-weight: 500;
4003
+ }
4004
+
4005
+ dl dd {
4006
+ margin-block-end: 1rem;
4007
+ }
4008
+
4009
+ pre small {
4010
+ font-weight: lighter;
4011
+ opacity: 75%;
4012
+ }
4013
+
4014
+ pre:has(code) {
4015
+ background: #181c25 !important;
4016
+ }
4017
+
4018
+ table th {
4019
+ font-weight: bold;
4020
+ vertical-align: bottom;
4021
+ }
4022
+
4023
+ table td {
4024
+ vertical-align: top;
4025
+ }
4026
+
4027
+ table pre {
4028
+ margin-bottom: 0.25rem;
4029
+ }
4030
+
4031
+ [href="#top"] {
4032
+ opacity: 25%;
4033
+ }
4034
+
4035
+ [href="#top"]:hover {
4036
+ opacity: 75%;
4037
+ }
4038
+
4039
+ [href="#top"] > i {
4040
+ display: inline-block;
4041
+ margin: 0.5rem;
4042
+ padding: 0.25rem 0.375rem;
4043
+ border-color: black;
4044
+ color: black;
4045
+ font-size: 0.75rem;
4046
+ }
4047
+
4048
+ .breakout > img,
4049
+ .breakout > figure,
4050
+ .breakout-all > img,
4051
+ .breakout-all > figure {
4052
+ margin-bottom: 1rem;
4053
+ }
4054
+
4055
+ .faded a {
4056
+ text-decoration-style: dotted;
4057
+ }