Author:
Hash:
Timestamp:
+2768 -2434 +/-93 browse
Kevin Schoon [me@kevinschoon.com]
7e4043bf6811a5aa497ac3b3c76e9616bbc3631b
Mon, 06 May 2024 19:48:30 +0000 (1.1 years ago)
1 | diff --git a/ATTRIBUTIONS.md b/ATTRIBUTIONS.md |
2 | index 29a70bd..f173e9f 100644 |
3 | --- a/ATTRIBUTIONS.md |
4 | +++ b/ATTRIBUTIONS.md |
5 | @@ -14,9 +14,14 @@ Ayllu would not be possible without many free software projects. |
6 | * [tree-sitter](https://github.com/tree-sitter/tree-sitter) |
7 | * [comrak](https://github.com/kivikakk/comrak) |
8 | * [tokei](https://github.com/XAMPPRocky/tokei/) |
9 | + * [lightningcss](https://docs.rs/lightningcss/latest/lightningcss/index.html) |
10 | |
11 | And many more, see the `Cargo.toml` file. |
12 | |
13 | + ##### MIT |
14 | + |
15 | + [open-props.style](https://open-props.style/) used for base CSS and normalizing. |
16 | + |
17 | ##### WTFPL |
18 | |
19 | The "smart git" http backend is inspired / modified from [rgit](https://github.com/w4/rgit). |
20 | diff --git a/Cargo.lock b/Cargo.lock |
21 | index ca1b622..aea4172 100644 |
22 | --- a/Cargo.lock |
23 | +++ b/Cargo.lock |
24 | @@ -28,6 +28,17 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" |
25 | |
26 | [[package]] |
27 | name = "ahash" |
28 | + version = "0.7.8" |
29 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
30 | + checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" |
31 | + dependencies = [ |
32 | + "getrandom", |
33 | + "once_cell", |
34 | + "version_check", |
35 | + ] |
36 | + |
37 | + [[package]] |
38 | + name = "ahash" |
39 | version = "0.8.11" |
40 | source = "registry+https://github.com/rust-lang/crates.io-index" |
41 | checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" |
42 | @@ -517,9 +528,11 @@ dependencies = [ |
43 | "globwalk", |
44 | "headers", |
45 | "httparse", |
46 | + "include_dir", |
47 | "lazy_static", |
48 | "libloading 0.8.3", |
49 | "libsqlite3-sys", |
50 | + "lightningcss", |
51 | "log", |
52 | "mime", |
53 | "mime_guess", |
54 | @@ -710,6 +723,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" |
55 | checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" |
56 | |
57 | [[package]] |
58 | + name = "base64-simd" |
59 | + version = "0.7.0" |
60 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
61 | + checksum = "781dd20c3aff0bd194fe7d2a977dd92f21c173891f3a03b677359e5fa457e5d5" |
62 | + dependencies = [ |
63 | + "simd-abstraction", |
64 | + ] |
65 | + |
66 | + [[package]] |
67 | name = "base64ct" |
68 | version = "1.6.0" |
69 | source = "registry+https://github.com/rust-lang/crates.io-index" |
70 | @@ -761,6 +783,18 @@ dependencies = [ |
71 | ] |
72 | |
73 | [[package]] |
74 | + name = "bitvec" |
75 | + version = "1.0.1" |
76 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
77 | + checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" |
78 | + dependencies = [ |
79 | + "funty", |
80 | + "radium", |
81 | + "tap", |
82 | + "wyz", |
83 | + ] |
84 | + |
85 | + [[package]] |
86 | name = "blake2" |
87 | version = "0.10.6" |
88 | source = "registry+https://github.com/rust-lang/crates.io-index" |
89 | @@ -811,6 +845,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" |
90 | checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" |
91 | |
92 | [[package]] |
93 | + name = "bytecheck" |
94 | + version = "0.6.12" |
95 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
96 | + checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" |
97 | + dependencies = [ |
98 | + "bytecheck_derive", |
99 | + "ptr_meta", |
100 | + "simdutf8", |
101 | + ] |
102 | + |
103 | + [[package]] |
104 | + name = "bytecheck_derive" |
105 | + version = "0.6.12" |
106 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
107 | + checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" |
108 | + dependencies = [ |
109 | + "proc-macro2", |
110 | + "quote", |
111 | + "syn 1.0.109", |
112 | + ] |
113 | + |
114 | + [[package]] |
115 | name = "bytecount" |
116 | version = "0.6.7" |
117 | source = "registry+https://github.com/rust-lang/crates.io-index" |
118 | @@ -879,7 +935,7 @@ checksum = "d59ae0466b83e838b81a54256c39d5d7c20b9d7daa10510a242d9b75abd5936e" |
119 | dependencies = [ |
120 | "chrono", |
121 | "chrono-tz-build", |
122 | - "phf", |
123 | + "phf 0.11.2", |
124 | ] |
125 | |
126 | [[package]] |
127 | @@ -889,8 +945,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" |
128 | checksum = "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f" |
129 | dependencies = [ |
130 | "parse-zoneinfo", |
131 | - "phf", |
132 | - "phf_codegen", |
133 | + "phf 0.11.2", |
134 | + "phf_codegen 0.11.2", |
135 | ] |
136 | |
137 | [[package]] |
138 | @@ -1030,6 +1086,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" |
139 | checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" |
140 | |
141 | [[package]] |
142 | + name = "const-str" |
143 | + version = "0.3.2" |
144 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
145 | + checksum = "21077772762a1002bb421c3af42ac1725fa56066bfc53d9a55bb79905df2aaf3" |
146 | + dependencies = [ |
147 | + "const-str-proc-macro", |
148 | + ] |
149 | + |
150 | + [[package]] |
151 | + name = "const-str-proc-macro" |
152 | + version = "0.3.2" |
153 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
154 | + checksum = "5e1e0fdd2e5d3041e530e1b21158aeeef8b5d0e306bc5c1e3d6cf0930d10e25a" |
155 | + dependencies = [ |
156 | + "proc-macro2", |
157 | + "quote", |
158 | + "syn 1.0.109", |
159 | + ] |
160 | + |
161 | + [[package]] |
162 | name = "cookie" |
163 | version = "0.18.0" |
164 | source = "registry+https://github.com/rust-lang/crates.io-index" |
165 | @@ -1185,6 +1261,38 @@ dependencies = [ |
166 | ] |
167 | |
168 | [[package]] |
169 | + name = "cssparser" |
170 | + version = "0.33.0" |
171 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
172 | + checksum = "9be934d936a0fbed5bcdc01042b770de1398bf79d0e192f49fa7faea0e99281e" |
173 | + dependencies = [ |
174 | + "cssparser-macros", |
175 | + "dtoa-short", |
176 | + "itoa", |
177 | + "phf 0.11.2", |
178 | + "smallvec", |
179 | + ] |
180 | + |
181 | + [[package]] |
182 | + name = "cssparser-color" |
183 | + version = "0.1.0" |
184 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
185 | + checksum = "556c099a61d85989d7af52b692e35a8d68a57e7df8c6d07563dc0778b3960c9f" |
186 | + dependencies = [ |
187 | + "cssparser", |
188 | + ] |
189 | + |
190 | + [[package]] |
191 | + name = "cssparser-macros" |
192 | + version = "0.6.1" |
193 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
194 | + checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" |
195 | + dependencies = [ |
196 | + "quote", |
197 | + "syn 2.0.52", |
198 | + ] |
199 | + |
200 | + [[package]] |
201 | name = "darling" |
202 | version = "0.14.4" |
203 | source = "registry+https://github.com/rust-lang/crates.io-index" |
204 | @@ -1231,12 +1339,34 @@ dependencies = [ |
205 | ] |
206 | |
207 | [[package]] |
208 | + name = "dashmap" |
209 | + version = "5.5.3" |
210 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
211 | + checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" |
212 | + dependencies = [ |
213 | + "cfg-if 1.0.0", |
214 | + "hashbrown 0.14.3", |
215 | + "lock_api", |
216 | + "once_cell", |
217 | + "parking_lot_core 0.9.9", |
218 | + ] |
219 | + |
220 | + [[package]] |
221 | name = "data-encoding" |
222 | version = "2.5.0" |
223 | source = "registry+https://github.com/rust-lang/crates.io-index" |
224 | checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" |
225 | |
226 | [[package]] |
227 | + name = "data-url" |
228 | + version = "0.1.1" |
229 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
230 | + checksum = "3a30bfce702bcfa94e906ef82421f2c0e61c076ad76030c16ee5d2e9a32fe193" |
231 | + dependencies = [ |
232 | + "matches", |
233 | + ] |
234 | + |
235 | + [[package]] |
236 | name = "der" |
237 | version = "0.7.8" |
238 | source = "registry+https://github.com/rust-lang/crates.io-index" |
239 | @@ -1377,6 +1507,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" |
240 | checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" |
241 | |
242 | [[package]] |
243 | + name = "dtoa" |
244 | + version = "1.0.9" |
245 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
246 | + checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" |
247 | + |
248 | + [[package]] |
249 | + name = "dtoa-short" |
250 | + version = "0.3.4" |
251 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
252 | + checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74" |
253 | + dependencies = [ |
254 | + "dtoa", |
255 | + ] |
256 | + |
257 | + [[package]] |
258 | name = "dwrote" |
259 | version = "0.11.0" |
260 | source = "registry+https://github.com/rust-lang/crates.io-index" |
261 | @@ -1871,6 +2016,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" |
262 | checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" |
263 | |
264 | [[package]] |
265 | + name = "funty" |
266 | + version = "2.0.0" |
267 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
268 | + checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" |
269 | + |
270 | + [[package]] |
271 | name = "futures" |
272 | version = "0.3.30" |
273 | source = "registry+https://github.com/rust-lang/crates.io-index" |
274 | @@ -1999,6 +2150,15 @@ dependencies = [ |
275 | ] |
276 | |
277 | [[package]] |
278 | + name = "fxhash" |
279 | + version = "0.2.1" |
280 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
281 | + checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" |
282 | + dependencies = [ |
283 | + "byteorder", |
284 | + ] |
285 | + |
286 | + [[package]] |
287 | name = "generic-array" |
288 | version = "0.14.7" |
289 | source = "registry+https://github.com/rust-lang/crates.io-index" |
290 | @@ -2053,6 +2213,12 @@ dependencies = [ |
291 | ] |
292 | |
293 | [[package]] |
294 | + name = "glob" |
295 | + version = "0.3.1" |
296 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
297 | + checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" |
298 | + |
299 | + [[package]] |
300 | name = "globset" |
301 | version = "0.4.14" |
302 | source = "registry+https://github.com/rust-lang/crates.io-index" |
303 | @@ -2143,6 +2309,9 @@ name = "hashbrown" |
304 | version = "0.12.3" |
305 | source = "registry+https://github.com/rust-lang/crates.io-index" |
306 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" |
307 | + dependencies = [ |
308 | + "ahash 0.7.8", |
309 | + ] |
310 | |
311 | [[package]] |
312 | name = "hashbrown" |
313 | @@ -2150,7 +2319,7 @@ version = "0.14.3" |
314 | source = "registry+https://github.com/rust-lang/crates.io-index" |
315 | checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" |
316 | dependencies = [ |
317 | - "ahash", |
318 | + "ahash 0.8.11", |
319 | "allocator-api2", |
320 | ] |
321 | |
322 | @@ -2555,6 +2724,26 @@ dependencies = [ |
323 | ] |
324 | |
325 | [[package]] |
326 | + name = "include_dir" |
327 | + version = "0.7.3" |
328 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
329 | + checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" |
330 | + dependencies = [ |
331 | + "glob", |
332 | + "include_dir_macros", |
333 | + ] |
334 | + |
335 | + [[package]] |
336 | + name = "include_dir_macros" |
337 | + version = "0.7.3" |
338 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
339 | + checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" |
340 | + dependencies = [ |
341 | + "proc-macro2", |
342 | + "quote", |
343 | + ] |
344 | + |
345 | + [[package]] |
346 | name = "indexmap" |
347 | version = "1.9.3" |
348 | source = "registry+https://github.com/rust-lang/crates.io-index" |
349 | @@ -2742,7 +2931,7 @@ version = "0.17.1" |
350 | source = "registry+https://github.com/rust-lang/crates.io-index" |
351 | checksum = "2a071f4f7efc9a9118dfb627a0a94ef247986e1ab8606a4c806ae2b3aa3b6978" |
352 | dependencies = [ |
353 | - "ahash", |
354 | + "ahash 0.8.11", |
355 | "anyhow", |
356 | "base64 0.21.7", |
357 | "bytecount", |
358 | @@ -2924,6 +3113,31 @@ dependencies = [ |
359 | ] |
360 | |
361 | [[package]] |
362 | + name = "lightningcss" |
363 | + version = "1.0.0-alpha.55" |
364 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
365 | + checksum = "3bd5bed3814fb631bfc1e24c2be6f7e86a9837c660909acab79a38374dcb8798" |
366 | + dependencies = [ |
367 | + "ahash 0.8.11", |
368 | + "bitflags 2.4.2", |
369 | + "const-str", |
370 | + "cssparser", |
371 | + "cssparser-color", |
372 | + "dashmap 5.5.3", |
373 | + "data-encoding", |
374 | + "getrandom", |
375 | + "itertools 0.10.5", |
376 | + "lazy_static", |
377 | + "parcel_selectors", |
378 | + "parcel_sourcemap", |
379 | + "paste", |
380 | + "pathdiff", |
381 | + "rayon", |
382 | + "serde", |
383 | + "smallvec", |
384 | + ] |
385 | + |
386 | + [[package]] |
387 | name = "line-wrap" |
388 | version = "0.1.1" |
389 | source = "registry+https://github.com/rust-lang/crates.io-index" |
390 | @@ -3708,12 +3922,48 @@ dependencies = [ |
391 | ] |
392 | |
393 | [[package]] |
394 | + name = "outref" |
395 | + version = "0.1.0" |
396 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
397 | + checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4" |
398 | + |
399 | + [[package]] |
400 | name = "overload" |
401 | version = "0.1.1" |
402 | source = "registry+https://github.com/rust-lang/crates.io-index" |
403 | checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" |
404 | |
405 | [[package]] |
406 | + name = "parcel_selectors" |
407 | + version = "0.26.4" |
408 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
409 | + checksum = "05d74befe2d076330d9a58bf9ca2da424568724ab278adf15fb5718253133887" |
410 | + dependencies = [ |
411 | + "bitflags 2.4.2", |
412 | + "cssparser", |
413 | + "fxhash", |
414 | + "log", |
415 | + "phf 0.10.1", |
416 | + "phf_codegen 0.10.0", |
417 | + "precomputed-hash", |
418 | + "smallvec", |
419 | + ] |
420 | + |
421 | + [[package]] |
422 | + name = "parcel_sourcemap" |
423 | + version = "2.1.1" |
424 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
425 | + checksum = "485b74d7218068b2b7c0e3ff12fbc61ae11d57cb5d8224f525bd304c6be05bbb" |
426 | + dependencies = [ |
427 | + "base64-simd", |
428 | + "data-url", |
429 | + "rkyv", |
430 | + "serde", |
431 | + "serde_json", |
432 | + "vlq", |
433 | + ] |
434 | + |
435 | + [[package]] |
436 | name = "parking" |
437 | version = "2.2.0" |
438 | source = "registry+https://github.com/rust-lang/crates.io-index" |
439 | @@ -3783,6 +4033,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" |
440 | checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" |
441 | |
442 | [[package]] |
443 | + name = "pathdiff" |
444 | + version = "0.2.1" |
445 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
446 | + checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" |
447 | + |
448 | + [[package]] |
449 | name = "pathfinder_geometry" |
450 | version = "0.5.1" |
451 | source = "registry+https://github.com/rust-lang/crates.io-index" |
452 | @@ -3882,25 +4138,55 @@ dependencies = [ |
453 | |
454 | [[package]] |
455 | name = "phf" |
456 | + version = "0.10.1" |
457 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
458 | + checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" |
459 | + dependencies = [ |
460 | + "phf_shared 0.10.0", |
461 | + ] |
462 | + |
463 | + [[package]] |
464 | + name = "phf" |
465 | version = "0.11.2" |
466 | source = "registry+https://github.com/rust-lang/crates.io-index" |
467 | checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" |
468 | dependencies = [ |
469 | + "phf_macros", |
470 | "phf_shared 0.11.2", |
471 | ] |
472 | |
473 | [[package]] |
474 | name = "phf_codegen" |
475 | + version = "0.10.0" |
476 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
477 | + checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" |
478 | + dependencies = [ |
479 | + "phf_generator 0.10.0", |
480 | + "phf_shared 0.10.0", |
481 | + ] |
482 | + |
483 | + [[package]] |
484 | + name = "phf_codegen" |
485 | version = "0.11.2" |
486 | source = "registry+https://github.com/rust-lang/crates.io-index" |
487 | checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" |
488 | dependencies = [ |
489 | - "phf_generator", |
490 | + "phf_generator 0.11.2", |
491 | "phf_shared 0.11.2", |
492 | ] |
493 | |
494 | [[package]] |
495 | name = "phf_generator" |
496 | + version = "0.10.0" |
497 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
498 | + checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" |
499 | + dependencies = [ |
500 | + "phf_shared 0.10.0", |
501 | + "rand", |
502 | + ] |
503 | + |
504 | + [[package]] |
505 | + name = "phf_generator" |
506 | version = "0.11.2" |
507 | source = "registry+https://github.com/rust-lang/crates.io-index" |
508 | checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" |
509 | @@ -3910,6 +4196,19 @@ dependencies = [ |
510 | ] |
511 | |
512 | [[package]] |
513 | + name = "phf_macros" |
514 | + version = "0.11.2" |
515 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
516 | + checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" |
517 | + dependencies = [ |
518 | + "phf_generator 0.11.2", |
519 | + "phf_shared 0.11.2", |
520 | + "proc-macro2", |
521 | + "quote", |
522 | + "syn 2.0.52", |
523 | + ] |
524 | + |
525 | + [[package]] |
526 | name = "phf_shared" |
527 | version = "0.10.0" |
528 | source = "registry+https://github.com/rust-lang/crates.io-index" |
529 | @@ -4140,6 +4439,26 @@ dependencies = [ |
530 | ] |
531 | |
532 | [[package]] |
533 | + name = "ptr_meta" |
534 | + version = "0.1.4" |
535 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
536 | + checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" |
537 | + dependencies = [ |
538 | + "ptr_meta_derive", |
539 | + ] |
540 | + |
541 | + [[package]] |
542 | + name = "ptr_meta_derive" |
543 | + version = "0.1.4" |
544 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
545 | + checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" |
546 | + dependencies = [ |
547 | + "proc-macro2", |
548 | + "quote", |
549 | + "syn 1.0.109", |
550 | + ] |
551 | + |
552 | + [[package]] |
553 | name = "quick-error" |
554 | version = "1.2.3" |
555 | source = "registry+https://github.com/rust-lang/crates.io-index" |
556 | @@ -4193,6 +4512,12 @@ dependencies = [ |
557 | ] |
558 | |
559 | [[package]] |
560 | + name = "radium" |
561 | + version = "0.7.0" |
562 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
563 | + checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" |
564 | + |
565 | + [[package]] |
566 | name = "rand" |
567 | version = "0.8.5" |
568 | source = "registry+https://github.com/rust-lang/crates.io-index" |
569 | @@ -4316,6 +4641,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" |
570 | checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" |
571 | |
572 | [[package]] |
573 | + name = "rend" |
574 | + version = "0.4.2" |
575 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
576 | + checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" |
577 | + dependencies = [ |
578 | + "bytecheck", |
579 | + ] |
580 | + |
581 | + [[package]] |
582 | name = "reqwest" |
583 | version = "0.11.26" |
584 | source = "registry+https://github.com/rust-lang/crates.io-index" |
585 | @@ -4425,6 +4759,35 @@ dependencies = [ |
586 | ] |
587 | |
588 | [[package]] |
589 | + name = "rkyv" |
590 | + version = "0.7.44" |
591 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
592 | + checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" |
593 | + dependencies = [ |
594 | + "bitvec", |
595 | + "bytecheck", |
596 | + "bytes", |
597 | + "hashbrown 0.12.3", |
598 | + "ptr_meta", |
599 | + "rend", |
600 | + "rkyv_derive", |
601 | + "seahash", |
602 | + "tinyvec", |
603 | + "uuid", |
604 | + ] |
605 | + |
606 | + [[package]] |
607 | + name = "rkyv_derive" |
608 | + version = "0.7.44" |
609 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
610 | + checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" |
611 | + dependencies = [ |
612 | + "proc-macro2", |
613 | + "quote", |
614 | + "syn 1.0.109", |
615 | + ] |
616 | + |
617 | + [[package]] |
618 | name = "rsa" |
619 | version = "0.9.6" |
620 | source = "registry+https://github.com/rust-lang/crates.io-index" |
621 | @@ -4646,6 +5009,12 @@ dependencies = [ |
622 | ] |
623 | |
624 | [[package]] |
625 | + name = "seahash" |
626 | + version = "4.1.0" |
627 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
628 | + checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" |
629 | + |
630 | + [[package]] |
631 | name = "security-framework" |
632 | version = "2.9.2" |
633 | source = "registry+https://github.com/rust-lang/crates.io-index" |
634 | @@ -4859,12 +5228,27 @@ dependencies = [ |
635 | ] |
636 | |
637 | [[package]] |
638 | + name = "simd-abstraction" |
639 | + version = "0.7.1" |
640 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
641 | + checksum = "9cadb29c57caadc51ff8346233b5cec1d240b68ce55cf1afc764818791876987" |
642 | + dependencies = [ |
643 | + "outref", |
644 | + ] |
645 | + |
646 | + [[package]] |
647 | name = "simd-adler32" |
648 | version = "0.3.7" |
649 | source = "registry+https://github.com/rust-lang/crates.io-index" |
650 | checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" |
651 | |
652 | [[package]] |
653 | + name = "simdutf8" |
654 | + version = "0.1.4" |
655 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
656 | + checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" |
657 | + |
658 | + [[package]] |
659 | name = "simple-counter" |
660 | version = "0.1.0" |
661 | source = "registry+https://github.com/rust-lang/crates.io-index" |
662 | @@ -5007,7 +5391,7 @@ version = "0.7.4" |
663 | source = "registry+https://github.com/rust-lang/crates.io-index" |
664 | checksum = "24ba59a9342a3d9bab6c56c118be528b27c9b60e490080e9711a04dccac83ef6" |
665 | dependencies = [ |
666 | - "ahash", |
667 | + "ahash 0.8.11", |
668 | "atoi", |
669 | "byteorder", |
670 | "bytes", |
671 | @@ -5349,6 +5733,12 @@ dependencies = [ |
672 | ] |
673 | |
674 | [[package]] |
675 | + name = "tap" |
676 | + version = "1.0.1" |
677 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
678 | + checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" |
679 | + |
680 | + [[package]] |
681 | name = "tarpc" |
682 | version = "0.34.0" |
683 | source = "registry+https://github.com/rust-lang/crates.io-index" |
684 | @@ -5560,7 +5950,7 @@ dependencies = [ |
685 | "aho-corasick 0.7.20", |
686 | "clap 2.34.0", |
687 | "crossbeam-channel", |
688 | - "dashmap", |
689 | + "dashmap 4.0.2", |
690 | "dirs", |
691 | "encoding_rs_io", |
692 | "env_logger 0.8.4", |
693 | @@ -6122,6 +6512,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" |
694 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" |
695 | |
696 | [[package]] |
697 | + name = "vlq" |
698 | + version = "0.5.1" |
699 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
700 | + checksum = "65dd7eed29412da847b0f78bcec0ac98588165988a8cfe41d4ea1d429f8ccfff" |
701 | + |
702 | + [[package]] |
703 | name = "void" |
704 | version = "1.0.2" |
705 | source = "registry+https://github.com/rust-lang/crates.io-index" |
706 | @@ -6544,6 +6940,15 @@ dependencies = [ |
707 | ] |
708 | |
709 | [[package]] |
710 | + name = "wyz" |
711 | + version = "0.5.1" |
712 | + source = "registry+https://github.com/rust-lang/crates.io-index" |
713 | + checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" |
714 | + dependencies = [ |
715 | + "tap", |
716 | + ] |
717 | + |
718 | + [[package]] |
719 | name = "xdg" |
720 | version = "2.5.2" |
721 | source = "registry+https://github.com/rust-lang/crates.io-index" |
722 | diff --git a/ayllu/Cargo.toml b/ayllu/Cargo.toml |
723 | index 00d511a..5a84546 100644 |
724 | --- a/ayllu/Cargo.toml |
725 | +++ b/ayllu/Cargo.toml |
726 | @@ -66,6 +66,7 @@ tokio-stream = "0.1.15" |
727 | httparse = "1.8.0" |
728 | thiserror = "1.0.58" |
729 | headers = "0.4.0" |
730 | + include_dir = { version = "0.7.3", features = ["glob"] } |
731 | |
732 | # NOTE: this must be cautiously updated along with sqlx and rusqlite. |
733 | [dependencies.libsqlite3-sys] |
734 | @@ -73,3 +74,4 @@ version = "0.27.0" |
735 | |
736 | [build-dependencies] |
737 | cc="*" |
738 | + lightningcss = "1.0.0-alpha.55" |
739 | diff --git a/ayllu/build.rs b/ayllu/build.rs |
740 | new file mode 100644 |
741 | index 0000000..abafb99 |
742 | --- /dev/null |
743 | +++ b/ayllu/build.rs |
744 | @@ -0,0 +1,30 @@ |
745 | + use lightningcss::{ |
746 | + bundler::{Bundler, FileProvider}, |
747 | + stylesheet::{ParserOptions, PrinterOptions}, |
748 | + }; |
749 | + |
750 | + use std::env::var; |
751 | + use std::fs::{create_dir_all, File}; |
752 | + use std::io::prelude::*; |
753 | + use std::path::Path; |
754 | + |
755 | + fn main() { |
756 | + let fs = FileProvider::new(); |
757 | + let mut bundler = Bundler::new(&fs, None, ParserOptions::default()); |
758 | + // compiles a minified version of the base theme which all additional |
759 | + // themes inherit from. |
760 | + let out_dir = var("OUT_DIR").unwrap(); |
761 | + let stylesheet = bundler |
762 | + .bundle(Path::new("themes/default/theme.css")) |
763 | + .unwrap(); |
764 | + let css = stylesheet |
765 | + .to_css(PrinterOptions { |
766 | + minify: true, |
767 | + ..Default::default() |
768 | + }) |
769 | + .unwrap(); |
770 | + let theme_dir = Path::new(&out_dir).join("themes/default"); |
771 | + create_dir_all(theme_dir.clone()).unwrap(); |
772 | + let mut file = File::create(theme_dir.join("theme.min.css")).unwrap(); |
773 | + write!(file, "{}", css.code).unwrap(); |
774 | + } |
775 | diff --git a/ayllu/colors/nord.css b/ayllu/colors/nord.css |
776 | new file mode 100644 |
777 | index 0000000..e492c4f |
778 | --- /dev/null |
779 | +++ b/ayllu/colors/nord.css |
780 | @@ -0,0 +1,231 @@ |
781 | + /* |
782 | + * Copyright (c) 2016-present Sven Greb <development@svengreb.de> |
783 | + * This source code is licensed under the MIT license found in the license file. |
784 | + */ |
785 | + |
786 | + /* |
787 | + * References: |
788 | + * 1. https://www.w3.org/TR/css-variables |
789 | + * 2. https://www.w3.org/TR/selectors/#root-pseudo |
790 | + * 3. https://drafts.csswg.org/css-variables |
791 | + * 4. https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables |
792 | + * 5. https://warpspire.com/kss |
793 | + * 6. https://github.com/kss-node/kss-node |
794 | + */ |
795 | + |
796 | + /* |
797 | + An arctic, north-bluish color palette. |
798 | + Created for the clean- and minimal flat design pattern to achieve a optimal focus and readability for code syntax |
799 | + highlighting and UI. |
800 | + It consists of a total of sixteen, carefully selected, dimmed pastel colors for a eye-comfortable, but yet colorful |
801 | + ambiance. |
802 | + |
803 | + Styleguide Nord |
804 | + */ |
805 | + |
806 | + :root { |
807 | + /* |
808 | + Base component color of "Polar Night". |
809 | + |
810 | + Used for texts, backgrounds, carets and structuring characters like curly- and square brackets. |
811 | + |
812 | + Markup: |
813 | + <div style="background-color:#2e3440; width=60; height=60"></div> |
814 | + |
815 | + Styleguide Nord - Polar Night |
816 | + */ |
817 | + --nord0: #2e3440; |
818 | + |
819 | + /* |
820 | + Lighter shade color of the base component color. |
821 | + |
822 | + Used as a lighter background color for UI elements like status bars. |
823 | + |
824 | + Markup: |
825 | + <div style="background-color:#3b4252; width=60; height=60"></div> |
826 | + |
827 | + Styleguide Nord - Polar Night |
828 | + */ |
829 | + --nord1: #3b4252; |
830 | + |
831 | + /* |
832 | + Lighter shade color of the base component color. |
833 | + |
834 | + Used as line highlighting in the editor. |
835 | + In the UI scope it may be used as selection- and highlight color. |
836 | + |
837 | + Markup: |
838 | + <div style="background-color:#434c5e; width=60; height=60"></div> |
839 | + |
840 | + Styleguide Nord - Polar Night |
841 | + */ |
842 | + --nord2: #434c5e; |
843 | + |
844 | + /* |
845 | + Lighter shade color of the base component color. |
846 | + |
847 | + Used for comments, invisibles, indent- and wrap guide marker. |
848 | + In the UI scope used as pseudoclass color for disabled elements. |
849 | + |
850 | + Markup: |
851 | + <div style="background-color:#4c566a; width=60; height=60"></div> |
852 | + |
853 | + Styleguide Nord - Polar Night |
854 | + */ |
855 | + --nord3: #4c566a; |
856 | + |
857 | + /* |
858 | + Base component color of "Snow Storm". |
859 | + |
860 | + Main color for text, variables, constants and attributes. |
861 | + In the UI scope used as semi-light background depending on the theme shading design. |
862 | + |
863 | + Markup: |
864 | + <div style="background-color:#d8dee9; width=60; height=60"></div> |
865 | + |
866 | + Styleguide Nord - Snow Storm |
867 | + */ |
868 | + --nord4: #d8dee9; |
869 | + |
870 | + /* |
871 | + Lighter shade color of the base component color. |
872 | + |
873 | + Used as a lighter background color for UI elements like status bars. |
874 | + Used as semi-light background depending on the theme shading design. |
875 | + |
876 | + Markup: |
877 | + <div style="background-color:#e5e9f0; width=60; height=60"></div> |
878 | + |
879 | + Styleguide Nord - Snow Storm |
880 | + */ |
881 | + --nord5: #e5e9f0; |
882 | + |
883 | + /* |
884 | + Lighter shade color of the base component color. |
885 | + |
886 | + Used for punctuations, carets and structuring characters like curly- and square brackets. |
887 | + In the UI scope used as background, selection- and highlight color depending on the theme shading design. |
888 | + |
889 | + Markup: |
890 | + <div style="background-color:#eceff4; width=60; height=60"></div> |
891 | + |
892 | + Styleguide Nord - Snow Storm |
893 | + */ |
894 | + --nord6: #eceff4; |
895 | + |
896 | + /* |
897 | + Bluish core color. |
898 | + |
899 | + Used for classes, types and documentation tags. |
900 | + |
901 | + Markup: |
902 | + <div style="background-color:#8fbcbb; width=60; height=60"></div> |
903 | + |
904 | + Styleguide Nord - Frost |
905 | + */ |
906 | + --nord7: #8fbcbb; |
907 | + |
908 | + /* |
909 | + Bluish core accent color. |
910 | + |
911 | + Represents the accent color of the color palette. |
912 | + Main color for primary UI elements and methods/functions. |
913 | + |
914 | + Can be used for |
915 | + - Markup quotes |
916 | + - Markup link URLs |
917 | + |
918 | + Markup: |
919 | + <div style="background-color:#88c0d0; width=60; height=60"></div> |
920 | + |
921 | + Styleguide Nord - Frost |
922 | + */ |
923 | + --nord8: #88c0d0; |
924 | + |
925 | + /* |
926 | + Bluish core color. |
927 | + |
928 | + Used for language-specific syntactic/reserved support characters and keywords, operators, tags, units and |
929 | + punctuations like (semi)colons,commas and braces. |
930 | + |
931 | + Markup: |
932 | + <div style="background-color:#81a1c1; width=60; height=60"></div> |
933 | + |
934 | + Styleguide Nord - Frost |
935 | + */ |
936 | + --nord9: #81a1c1; |
937 | + |
938 | + /* |
939 | + Bluish core color. |
940 | + |
941 | + Used for markup doctypes, import/include/require statements, pre-processor statements and at-rules (`@`). |
942 | + |
943 | + Markup: |
944 | + <div style="background-color:#5e81ac; width=60; height=60"></div> |
945 | + |
946 | + Styleguide Nord - Frost |
947 | + */ |
948 | + --nord10: #5e81ac; |
949 | + |
950 | + /* |
951 | + Colorful component color. |
952 | + |
953 | + Used for errors, git/diff deletion and linter marker. |
954 | + |
955 | + Markup: |
956 | + <div style="background-color:#bf616a; width=60; height=60"></div> |
957 | + |
958 | + Styleguide Nord - Aurora |
959 | + */ |
960 | + --nord11: #bf616a; |
961 | + |
962 | + /* |
963 | + Colorful component color. |
964 | + |
965 | + Used for annotations. |
966 | + |
967 | + Markup: |
968 | + <div style="background-color:#d08770; width=60; height=60"></div> |
969 | + |
970 | + Styleguide Nord - Aurora |
971 | + */ |
972 | + --nord12: #d08770; |
973 | + |
974 | + /* |
975 | + Colorful component color. |
976 | + |
977 | + Used for escape characters, regular expressions and markup entities. |
978 | + In the UI scope used for warnings and git/diff renamings. |
979 | + |
980 | + Markup: |
981 | + <div style="background-color:#ebcb8b; width=60; height=60"></div> |
982 | + |
983 | + Styleguide Nord - Aurora |
984 | + */ |
985 | + --nord13: #ebcb8b; |
986 | + |
987 | + /* |
988 | + Colorful component color. |
989 | + |
990 | + Main color for strings and attribute values. |
991 | + In the UI scope used for git/diff additions and success visualizations. |
992 | + |
993 | + Markup: |
994 | + <div style="background-color:#a3be8c; width=60; height=60"></div> |
995 | + |
996 | + Styleguide Nord - Aurora |
997 | + */ |
998 | + --nord14: #a3be8c; |
999 | + |
1000 | + /* |
1001 | + Colorful component color. |
1002 | + |
1003 | + Used for numbers. |
1004 | + |
1005 | + Markup: |
1006 | + <div style="background-color:#b48ead; width=60; height=60"></div> |
1007 | + |
1008 | + Styleguide Nord - Aurora |
1009 | + */ |
1010 | + --nord15: #b48ead; |
1011 | + } |
1012 | diff --git a/ayllu/src/config.rs b/ayllu/src/config.rs |
1013 | index 3e88b9e..792bf10 100644 |
1014 | --- a/ayllu/src/config.rs |
1015 | +++ b/ayllu/src/config.rs |
1016 | @@ -1,7 +1,8 @@ |
1017 | use std::collections::HashMap; |
1018 | use std::error::Error; |
1019 | - use std::fs::{metadata, read_dir}; |
1020 | + use std::fs::metadata; |
1021 | use std::num::NonZeroUsize; |
1022 | + use std::path::PathBuf; |
1023 | use std::thread::available_parallelism; |
1024 | |
1025 | use comrak::ComrakOptions; |
1026 | @@ -52,34 +53,25 @@ pub struct List { |
1027 | } |
1028 | |
1029 | #[derive(Deserialize, Serialize, Clone, Debug)] |
1030 | + pub struct Theme { |
1031 | + pub name: String, |
1032 | + pub path: PathBuf, |
1033 | + } |
1034 | + |
1035 | + #[derive(Deserialize, Serialize, Clone, Debug)] |
1036 | pub struct Web { |
1037 | - #[serde(default = "Web::default_themes_path")] |
1038 | - pub themes_path: String, |
1039 | - #[serde(default = "Web::default_base_theme")] |
1040 | - pub base_theme: String, |
1041 | + pub themes_path: Option<String>, |
1042 | #[serde(default = "Web::default_default_theme")] |
1043 | pub default_theme: String, |
1044 | - #[serde(default = "Web::default_themes")] |
1045 | - pub themes: Vec<String>, |
1046 | + pub themes: Option<Vec<Theme>>, |
1047 | #[serde(default = "Web::default_unsafe_markdown")] |
1048 | pub unsafe_markdown: bool, |
1049 | } |
1050 | |
1051 | impl Web { |
1052 | - fn default_themes_path() -> String { |
1053 | - String::from("/usr/lib/ayllu/themes") |
1054 | - } |
1055 | - |
1056 | - fn default_base_theme() -> String { |
1057 | - String::from("default") |
1058 | - } |
1059 | - |
1060 | - fn default_themes() -> Vec<String> { |
1061 | - Vec::new() |
1062 | - } |
1063 | |
1064 | fn default_default_theme() -> String { |
1065 | - String::from("tokyonight") |
1066 | + String::from("default") |
1067 | } |
1068 | |
1069 | fn default_unsafe_markdown() -> bool { |
1070 | @@ -95,7 +87,7 @@ pub struct Database { |
1071 | pub migrate: bool, |
1072 | #[serde(default = "Database::migrations_default")] |
1073 | /// path to migrations |
1074 | - pub migrations: String |
1075 | + pub migrations: String, |
1076 | } |
1077 | |
1078 | impl Database { |
1079 | @@ -277,32 +269,9 @@ pub struct Config { |
1080 | |
1081 | impl Configurable for Config { |
1082 | fn validate(&mut self) -> Result<(), Box<dyn Error>> { |
1083 | - // load themes from the file system when the configuration is loaded, they |
1084 | - // are made available in the configuration page of the UI. |
1085 | - let mut themes: Vec<String> = Vec::new(); |
1086 | - |
1087 | - match read_dir(&self.web.themes_path) { |
1088 | - Ok(paths) => { |
1089 | - for dir in paths.into_iter() { |
1090 | - let dir_path = dir?.path(); |
1091 | - let filename = dir_path.file_name().unwrap(); |
1092 | - let theme_name = filename.to_str().unwrap(); |
1093 | - themes.push(theme_name.to_string()); |
1094 | - } |
1095 | - } |
1096 | - Err(e) => { |
1097 | - return Err(format!( |
1098 | - "failed to load themes from path: {} ({})", |
1099 | - self.web.themes_path, e |
1100 | - ) |
1101 | - .into()) |
1102 | - } |
1103 | - } |
1104 | - |
1105 | let parsed_url = Url::parse(&self.origin)?; |
1106 | self.domain = parsed_url.domain().map(|domain| domain.to_string()); |
1107 | |
1108 | - self.web.themes = themes; |
1109 | // verify collection names are all valid |
1110 | if let Some(collection) = self.collections.iter().find(|collection| { |
1111 | BANNED_COLLECTION_NAMES |
1112 | diff --git a/ayllu/src/web2/highlight.rs b/ayllu/src/web2/highlight.rs |
1113 | index ff7d9b4..c276560 100644 |
1114 | --- a/ayllu/src/web2/highlight.rs |
1115 | +++ b/ayllu/src/web2/highlight.rs |
1116 | @@ -183,7 +183,7 @@ impl Loader { |
1117 | fn render_lines(lines: Vec<&str>, show_line_numbers: bool) -> String { |
1118 | let buf = Vec::new(); |
1119 | let mut file = Cursor::new(buf); |
1120 | - write!(&mut file, "<table>").unwrap(); |
1121 | + write!(&mut file, "<table class=\"code\">").unwrap(); |
1122 | for (i, line) in lines.into_iter().enumerate() { |
1123 | if show_line_numbers { |
1124 | write!(&mut file, "<tr><td class=line-number>{:?}</td>", i + 1).unwrap(); |
1125 | @@ -206,7 +206,7 @@ impl Highlighter { |
1126 | let mut classes: Vec<String> = Vec::new(); |
1127 | |
1128 | for name in names.iter() { |
1129 | - classes.push(format!("class=\"ts_{}\"", name)); |
1130 | + classes.push(format!("class=\"ts_{}\"", name.replace('.', "_"))); |
1131 | } |
1132 | Self { |
1133 | names: names.to_vec(), |
1134 | diff --git a/ayllu/src/web2/middleware/error.rs b/ayllu/src/web2/middleware/error.rs |
1135 | index 956589e..57edae0 100644 |
1136 | --- a/ayllu/src/web2/middleware/error.rs |
1137 | +++ b/ayllu/src/web2/middleware/error.rs |
1138 | @@ -6,14 +6,13 @@ use axum::{ |
1139 | middleware::Next, |
1140 | response::{Html, IntoResponse, Response}, |
1141 | }; |
1142 | - use tera::Tera; |
1143 | |
1144 | use crate::config::Config; |
1145 | use crate::web2::error::Error; |
1146 | use crate::web2::extractors::config::ConfigReader; |
1147 | - use crate::web2::terautil::{Loader, Options}; |
1148 | + use crate::web2::terautil::{Loader, Options, Themes}; |
1149 | |
1150 | - pub type State = Arc<(Config, Vec<(String, Tera)>)>; |
1151 | + pub type State = Arc<(Config, Themes)>; |
1152 | |
1153 | pub async fn middleware( |
1154 | extract::State(state): extract::State<State>, |
1155 | @@ -29,7 +28,7 @@ pub async fn middleware( |
1156 | }; |
1157 | // reload the theme since the middleware may not have ran yet |
1158 | let loader = Loader { |
1159 | - templates: state.1.clone(), |
1160 | + themes: state.1.clone(), |
1161 | default_theme: state.0.web.default_theme.clone(), |
1162 | }; |
1163 | let (template, mut ctx) = loader.load( |
1164 | diff --git a/ayllu/src/web2/middleware/rpc_initiator.rs b/ayllu/src/web2/middleware/rpc_initiator.rs |
1165 | index 0ef7534..5497747 100644 |
1166 | --- a/ayllu/src/web2/middleware/rpc_initiator.rs |
1167 | +++ b/ayllu/src/web2/middleware/rpc_initiator.rs |
1168 | @@ -10,16 +10,16 @@ use axum::{ |
1169 | response::Response, |
1170 | }; |
1171 | use mime::TEXT_HTML_UTF_8; |
1172 | - use tera::Tera; |
1173 | use tracing::log; |
1174 | |
1175 | use crate::config::Config; |
1176 | use crate::web2::config::Config as ClientConfig; |
1177 | use crate::web2::extractors::config::ConfigReader; |
1178 | + use crate::web2::terautil::Themes; |
1179 | use ayllu_api::{mail::ServerClient as MailClient, xmpp::ServerClient as XmppClient}; |
1180 | use ayllu_rpc::tarpc::{client, serde_transport::unix, tokio_serde::formats::Bincode}; |
1181 | |
1182 | - pub type State = Arc<(Config, Vec<(String, Tera)>, &'static [Kind])>; |
1183 | + pub type State = Arc<(Config, Themes, &'static [Kind])>; |
1184 | |
1185 | pub enum Kind { |
1186 | Mail, |
1187 | @@ -39,12 +39,12 @@ fn plugin_not_enabled( |
1188 | plugin_name: &str, |
1189 | cfg: &Config, |
1190 | client_config: ClientConfig, |
1191 | - templates: &[(String, Tera)], |
1192 | + templates: &Themes, |
1193 | ) -> Response { |
1194 | log::warn!("returning error due to missing plugin: {}", plugin_name); |
1195 | // reload the theme since the middleware may not have ran yet |
1196 | let loader = Loader { |
1197 | - templates: templates.to_vec(), |
1198 | + themes: templates.clone(), |
1199 | default_theme: cfg.web.default_theme.clone(), |
1200 | }; |
1201 | let (template, mut ctx) = loader.load( |
1202 | diff --git a/ayllu/src/web2/middleware/template.rs b/ayllu/src/web2/middleware/template.rs |
1203 | index 58f93cc..4efe163 100644 |
1204 | --- a/ayllu/src/web2/middleware/template.rs |
1205 | +++ b/ayllu/src/web2/middleware/template.rs |
1206 | @@ -6,10 +6,10 @@ use axum::{extract, middleware::Next, response::Response}; |
1207 | |
1208 | use crate::config::Config; |
1209 | use crate::web2::extractors::config::ConfigReader; |
1210 | - use crate::web2::terautil::{Loader, Options}; |
1211 | + use crate::web2::terautil::{Loader, Options, Themes}; |
1212 | |
1213 | pub type Template = (Tera, TeraContext); |
1214 | - pub type State = extract::State<Arc<(Config, Vec<(String, Tera)>)>>; |
1215 | + pub type State = extract::State<Arc<(Config, Themes)>>; |
1216 | |
1217 | #[derive(Deserialize)] |
1218 | pub struct CommonParams { |
1219 | @@ -25,7 +25,7 @@ pub async fn middleware( |
1220 | next: Next, |
1221 | ) -> Response { |
1222 | let loader = Loader { |
1223 | - templates: state.1.clone(), |
1224 | + themes: state.1.clone(), |
1225 | default_theme: state.0.web.default_theme.clone(), |
1226 | }; |
1227 | let (template, ctx) = loader.load( |
1228 | diff --git a/ayllu/src/web2/routes/assets.rs b/ayllu/src/web2/routes/assets.rs |
1229 | index 976f19b..700baba 100644 |
1230 | --- a/ayllu/src/web2/routes/assets.rs |
1231 | +++ b/ayllu/src/web2/routes/assets.rs |
1232 | @@ -1,68 +1,134 @@ |
1233 | - use std::path::PathBuf; |
1234 | - |
1235 | - use axum::{body::Body, extract::Path, http::header, response::Response, Extension}; |
1236 | - |
1237 | - use tokio::fs::File; |
1238 | - use tokio_util::io::ReaderStream; |
1239 | + use std::path::Path; |
1240 | + use std::sync::Arc; |
1241 | |
1242 | + use axum::{ |
1243 | + body::{Body, Bytes}, |
1244 | + extract, |
1245 | + http::header, |
1246 | + response::Response, |
1247 | + }; |
1248 | + use bytes::{BufMut, BytesMut}; |
1249 | use mime; |
1250 | - use mime_guess; |
1251 | + use mime_guess::MimeGuess; |
1252 | + use serde::Deserialize; |
1253 | + use tokio::fs::{read, File}; |
1254 | + use tokio_util::io::ReaderStream; |
1255 | |
1256 | use crate::config::Config; |
1257 | use crate::web2::error::Error; |
1258 | use crate::web2::extractors::config::ConfigReader; |
1259 | + use crate::web2::terautil::{Assets, Themes}; |
1260 | + |
1261 | + pub type State = Arc<(Config, Themes)>; |
1262 | |
1263 | - pub async fn serve_css( |
1264 | - Extension(system_config): Extension<Config>, |
1265 | + #[derive(Debug, Deserialize, Default)] |
1266 | + pub struct Resource { |
1267 | + pub name: String, |
1268 | + } |
1269 | + |
1270 | + async fn to_response(assets: &Assets, path: &str) -> Result<Response, Error> { |
1271 | + let guess = MimeGuess::from_path(Path::new(path)).first_or_octet_stream(); |
1272 | + let content_type = guess.to_string(); |
1273 | + tracing::debug!("serving static asset {}: {}", content_type, path); |
1274 | + if let Some(asset) = assets.0.get(path) { |
1275 | + match asset { |
1276 | + crate::web2::terautil::Asset::Raw(content) => { |
1277 | + let bytes = Bytes::from(content.clone()); |
1278 | + Ok(Response::builder() |
1279 | + .header(header::CONTENT_TYPE, content_type) |
1280 | + .body(Body::from(bytes)) |
1281 | + .unwrap()) |
1282 | + } |
1283 | + crate::web2::terautil::Asset::FilePath(path) => { |
1284 | + let file = File::open(path).await?; |
1285 | + let stream = ReaderStream::new(file); |
1286 | + Ok(Response::builder() |
1287 | + .header(header::CONTENT_TYPE, content_type) |
1288 | + .body(Body::from_stream(stream)) |
1289 | + .unwrap()) |
1290 | + } |
1291 | + } |
1292 | + } else { |
1293 | + Ok(Response::builder().status(404).body(Body::empty()).unwrap()) |
1294 | + } |
1295 | + } |
1296 | + |
1297 | + pub async fn serve_stylesheet( |
1298 | + extract::State(state): extract::State<State>, |
1299 | ConfigReader(user_config): ConfigReader, |
1300 | ) -> Result<Response, Error> { |
1301 | - let themes_path = &system_config.web.themes_path.clone(); |
1302 | - let mut file_path = PathBuf::from(themes_path); |
1303 | - file_path.push(user_config.theme.unwrap_or(system_config.web.default_theme)); |
1304 | - file_path.push("main.min.css"); |
1305 | - let file = tokio::fs::File::open(file_path).await?; |
1306 | - let stream = ReaderStream::new(file); |
1307 | - Ok(Response::builder() |
1308 | - .header(header::CONTENT_TYPE, mime::TEXT_CSS.as_ref()) |
1309 | - .body(Body::from_stream(stream)) |
1310 | - .unwrap()) |
1311 | + if let Some(theme_name) = user_config.theme { |
1312 | + if let Some(theme) = state.1 .0.get(&theme_name) { |
1313 | + tracing::debug!("serving alternative theme: {}", theme_name); |
1314 | + let default_theme = state |
1315 | + .1 |
1316 | + .0 |
1317 | + .get("default") |
1318 | + .expect("default theme not configured"); |
1319 | + let base_stylesheet = default_theme |
1320 | + .1 |
1321 | + .0 |
1322 | + .get("main.min.css") |
1323 | + .expect("default stylesheet not configured"); |
1324 | + let base_stylesheet_bytes = match base_stylesheet { |
1325 | + crate::web2::terautil::Asset::Raw(content) => content.clone(), |
1326 | + crate::web2::terautil::Asset::FilePath(path) => read(path).await?, |
1327 | + }; |
1328 | + if let Some(stylesheet) = theme.1 .0.get("theme.css") { |
1329 | + let stylesheet = match stylesheet { |
1330 | + crate::web2::terautil::Asset::Raw(content) => { |
1331 | + let mut raw_theme = BytesMut::from(base_stylesheet_bytes.as_slice()); |
1332 | + raw_theme.put(&b"\n"[..]); |
1333 | + raw_theme.put_slice(content.as_slice()); |
1334 | + raw_theme |
1335 | + } |
1336 | + crate::web2::terautil::Asset::FilePath(path) => { |
1337 | + let mut raw_theme = BytesMut::from(base_stylesheet_bytes.as_slice()); |
1338 | + raw_theme.put(&b"\n"[..]); |
1339 | + raw_theme.put_slice(read(path).await?.as_slice()); |
1340 | + // let mut raw_theme = read(path).await?.as_slice(); |
1341 | + raw_theme |
1342 | + } |
1343 | + }; |
1344 | + return Ok(Response::builder() |
1345 | + .status(200) |
1346 | + .header(header::CONTENT_TYPE, mime::TEXT_CSS_UTF_8.to_string()) |
1347 | + .body(Body::from(stylesheet.to_vec())) |
1348 | + .unwrap()); |
1349 | + } |
1350 | + } |
1351 | + }; |
1352 | + to_response( |
1353 | + &state |
1354 | + .1 |
1355 | + .0 |
1356 | + .get("default") |
1357 | + .expect("default theme not configured") |
1358 | + .1, |
1359 | + "main.min.css", |
1360 | + ) |
1361 | + .await |
1362 | } |
1363 | |
1364 | pub async fn serve_asset( |
1365 | - Extension(system_config): Extension<Config>, |
1366 | + extract::Path(resource): extract::Path<Resource>, |
1367 | + extract::State(state): extract::State<State>, |
1368 | ConfigReader(user_config): ConfigReader, |
1369 | - Path(asset): Path<String>, |
1370 | ) -> Result<Response, Error> { |
1371 | - let themes_path = &system_config.web.themes_path.clone(); |
1372 | - let mut file_path = PathBuf::from(themes_path); |
1373 | - file_path.push(user_config.theme.unwrap_or(system_config.web.default_theme)); |
1374 | - file_path.push("assets"); |
1375 | - file_path.push(&asset); |
1376 | - let file_path = file_path.to_str().unwrap(); |
1377 | - let file = { |
1378 | - match File::open(file_path).await { |
1379 | - Ok(file) => { |
1380 | - log::debug!("loaded asset from: {}", file_path); |
1381 | - file |
1382 | - } |
1383 | - Err(_) => { |
1384 | - let mut fallback_path = PathBuf::from(themes_path); |
1385 | - fallback_path.push(system_config.web.base_theme.clone()); |
1386 | - fallback_path.push("assets"); |
1387 | - fallback_path.push(&asset); |
1388 | - let fallback_path = fallback_path.to_str().unwrap(); |
1389 | - let file = File::open(fallback_path).await?; |
1390 | - log::debug!("loaded asset from: {}", fallback_path); |
1391 | - file |
1392 | - } |
1393 | + if let Some(theme_name) = user_config.theme { |
1394 | + if let Some(theme) = state.1 .0.get(&theme_name) { |
1395 | + tracing::debug!("serving alternative theme: {}", theme_name); |
1396 | + return to_response(&theme.1, &resource.name).await; |
1397 | } |
1398 | }; |
1399 | - let stream = ReaderStream::new(file); |
1400 | - let mime = mime_guess::from_path(file_path) |
1401 | - .first_or_octet_stream() |
1402 | - .to_string(); |
1403 | - Ok(Response::builder() |
1404 | - .header("Content-Type", mime) |
1405 | - .body(Body::from_stream(stream)) |
1406 | - .unwrap()) |
1407 | + to_response( |
1408 | + &state |
1409 | + .1 |
1410 | + .0 |
1411 | + .get("default") |
1412 | + .expect("default theme is not configured") |
1413 | + .1, |
1414 | + &resource.name, |
1415 | + ) |
1416 | + .await |
1417 | } |
1418 | diff --git a/ayllu/src/web2/routes/config.rs b/ayllu/src/web2/routes/config.rs |
1419 | index 85d7184..788efba 100644 |
1420 | --- a/ayllu/src/web2/routes/config.rs |
1421 | +++ b/ayllu/src/web2/routes/config.rs |
1422 | @@ -14,12 +14,13 @@ use crate::web2::navigation; |
1423 | |
1424 | pub async fn serve( |
1425 | Extension(cfg): Extension<SystemConfig>, |
1426 | + Extension(themes): Extension<Vec<String>>, |
1427 | ConfigReader(client_config): ConfigReader, |
1428 | Extension((templates, mut ctx)): Extension<Template>, |
1429 | ) -> Result<Html<String>, Error> { |
1430 | ctx.insert("title", "config"); |
1431 | ctx.insert("config", &client_config); |
1432 | - ctx.insert("themes", &cfg.web.themes); |
1433 | + ctx.insert("themes", &themes); |
1434 | ctx.insert( |
1435 | "nav_elements", |
1436 | &navigation::global("config", cfg.mail.is_some()), |
1437 | diff --git a/ayllu/src/web2/routes/rss.rs b/ayllu/src/web2/routes/rss.rs |
1438 | index cf80278..e309cf3 100644 |
1439 | --- a/ayllu/src/web2/routes/rss.rs |
1440 | +++ b/ayllu/src/web2/routes/rss.rs |
1441 | @@ -21,7 +21,7 @@ use ayllu_git::{Commit, Scanner, Stats, Tag, Wrapper}; |
1442 | |
1443 | fn stylesheet_hack(input: String) -> String { |
1444 | const ORIGINAL: &str = r#"<?xml version="1.0" encoding="utf-8"?>"#; |
1445 | - const REPLACEMENT: &str = r#"<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href="/static/assets/feed.xsl" type="text/xsl"?>"#; |
1446 | + const REPLACEMENT: &str = r#"<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href="/static/feed.xsl" type="text/xsl"?>"#; |
1447 | input.replacen(ORIGINAL, REPLACEMENT, 1) |
1448 | } |
1449 | |
1450 | diff --git a/ayllu/src/web2/server.rs b/ayllu/src/web2/server.rs |
1451 | index 770b355..8cfc4cd 100644 |
1452 | --- a/ayllu/src/web2/server.rs |
1453 | +++ b/ayllu/src/web2/server.rs |
1454 | @@ -1,6 +1,5 @@ |
1455 | use std::collections::HashMap; |
1456 | use std::error::Error; |
1457 | - use std::fs; |
1458 | use std::net::SocketAddrV4; |
1459 | use std::sync::Arc; |
1460 | |
1461 | @@ -8,8 +7,6 @@ use axum::{ |
1462 | body::Body, extract::Request, middleware::from_fn_with_state, routing, routing::MethodFilter, |
1463 | Extension, Router, ServiceExt, |
1464 | }; |
1465 | - use globwalk::glob_builder; |
1466 | - use tera::Tera; |
1467 | use tokio::net::TcpListener; |
1468 | use tower::Layer; |
1469 | use tower_http::{ |
1470 | @@ -47,7 +44,7 @@ use crate::web2::routes::rest::ping; |
1471 | use crate::web2::routes::robots; |
1472 | use crate::web2::routes::rss; |
1473 | use crate::web2::routes::xmpp; |
1474 | - use crate::web2::terautil; |
1475 | + use crate::web2::terautil::load_themes; |
1476 | use ayllu_database::Builder; |
1477 | |
1478 | pub async fn serve(cfg: &Config) -> Result<(), Box<dyn Error>> { |
1479 | @@ -99,54 +96,14 @@ pub async fn serve(cfg: &Config) -> Result<(), Box<dyn Error>> { |
1480 | .build() |
1481 | .await?; |
1482 | |
1483 | - // NOTE: files modified on the file system will see their changes |
1484 | - // immediately in the rendered server output however added new files |
1485 | - // will require that the server be restarted. |
1486 | - let templates_path = format!("{}/{}/templates/*", cfg.web.themes_path, cfg.web.base_theme); |
1487 | - // map of all loaded themes at startup, new themes require that the server |
1488 | - // be restarted for now. |
1489 | - let mut templates: Vec<(String, Tera)> = Vec::new(); |
1490 | - let mut templates_base = Tera::new(&templates_path)?; |
1491 | - templates_base.register_filter("friendly_time", terautil::FriendlyTime {}); |
1492 | - templates_base.register_filter("format_epoch", terautil::FormatEpoch {}); |
1493 | - templates_base.register_filter("filemode", terautil::FileMode {}); |
1494 | - templates_base.register_filter("human_bytes", terautil::HumanBytes {}); |
1495 | - templates_base.register_filter("emoji", terautil::Emojis {}); |
1496 | + let themes = load_themes(cfg.web.themes.as_ref().map_or(vec![], |themes| { |
1497 | + themes |
1498 | + .iter() |
1499 | + .map(|theme| (theme.name.clone(), theme.path.clone())) |
1500 | + .collect() |
1501 | + }))?; |
1502 | |
1503 | - for theme in cfg.web.themes.iter().filter(|item| *item != "default") { |
1504 | - let templates_base_path = format!("{}/{}/templates", cfg.web.themes_path, theme); |
1505 | - if fs::metadata(templates_base_path.clone()).is_err() { |
1506 | - // its valid to include a theme without any templates |
1507 | - continue; |
1508 | - } |
1509 | - let templates_path = format!("{}/*.html", templates_base_path); |
1510 | - let mut template_files: Vec<(String, Option<String>)> = Vec::new(); |
1511 | - match glob_builder(templates_path).build() { |
1512 | - Ok(globwalker) => { |
1513 | - for entry in globwalker.into_iter() { |
1514 | - let entry = entry?; |
1515 | - let path = String::from(entry.path().to_str().unwrap()); |
1516 | - let name = String::from(entry.file_name().to_str().unwrap()); |
1517 | - log::info!("loaded template override {} {}", path, name); |
1518 | - template_files.push((path, Some(name))); |
1519 | - } |
1520 | - } |
1521 | - Err(_) => { |
1522 | - continue; |
1523 | - } |
1524 | - } |
1525 | - let mut tera_theme = templates_base.clone(); |
1526 | - if !template_files.is_empty() { |
1527 | - log::info!( |
1528 | - "loaded {} template files for theme {}", |
1529 | - template_files.len(), |
1530 | - theme |
1531 | - ); |
1532 | - tera_theme.add_template_files(template_files)?; |
1533 | - } |
1534 | - templates.push((theme.clone(), tera_theme)); |
1535 | - } |
1536 | - templates.push((String::from("default"), templates_base)); |
1537 | + let theme_names: Vec<String> = themes.0.iter().map(|theme| theme.0.clone()).collect(); |
1538 | |
1539 | let site_mapping = if cfg.sites.enabled { |
1540 | sites::sites(cfg.clone())? |
1541 | @@ -173,8 +130,9 @@ pub async fn serve(cfg: &Config) -> Result<(), Box<dyn Error>> { |
1542 | .route("/rss/1m.xml", routing::get(rss::feed_1m)) |
1543 | .route("/about", routing::get(about::serve)) |
1544 | .route("/config", routing::get(config::serve).post(config::update)) |
1545 | + .layer(Extension(theme_names)) |
1546 | .layer(from_fn_with_state( |
1547 | - Arc::new((cfg.clone(), templates.clone())), |
1548 | + Arc::new((cfg.clone(), themes.clone())), |
1549 | template::middleware, |
1550 | )), |
1551 | ) |
1552 | @@ -198,11 +156,11 @@ pub async fn serve(cfg: &Config) -> Result<(), Box<dyn Error>> { |
1553 | .route("/thread/:list_id/:thread_id", routing::get(mail::thread)) |
1554 | .route("/message/:list_id/:message_id", routing::get(mail::message)) |
1555 | .layer(from_fn_with_state( |
1556 | - Arc::new((cfg.clone(), templates.clone(), mail_required_plugins)), |
1557 | + Arc::new((cfg.clone(), themes.clone(), mail_required_plugins)), |
1558 | rpc_initiator::required, |
1559 | )) |
1560 | .layer(from_fn_with_state( |
1561 | - Arc::new((cfg.clone(), templates.clone())), |
1562 | + Arc::new((cfg.clone(), themes.clone())), |
1563 | template::middleware, |
1564 | )), |
1565 | ) |
1566 | @@ -213,11 +171,11 @@ pub async fn serve(cfg: &Config) -> Result<(), Box<dyn Error>> { |
1567 | .route("/:channel", routing::get(xmpp::channel)) |
1568 | .route("/:channel/:last_message", routing::get(xmpp::channel)) |
1569 | .layer(from_fn_with_state( |
1570 | - Arc::new((cfg.clone(), templates.clone(), xmpp_required_plugins)), |
1571 | + Arc::new((cfg.clone(), themes.clone(), xmpp_required_plugins)), |
1572 | rpc_initiator::required, |
1573 | )) |
1574 | .layer(from_fn_with_state( |
1575 | - Arc::new((cfg.clone(), templates.clone())), |
1576 | + Arc::new((cfg.clone(), themes.clone())), |
1577 | template::middleware, |
1578 | )), |
1579 | ) |
1580 | @@ -275,7 +233,7 @@ pub async fn serve(cfg: &Config) -> Result<(), Box<dyn Error>> { |
1581 | rpc_initiator::optional, |
1582 | )) |
1583 | .layer(from_fn_with_state( |
1584 | - Arc::new((cfg.clone(), templates.clone())), |
1585 | + Arc::new((cfg.clone(), themes.clone())), |
1586 | template::middleware, |
1587 | )), |
1588 | ) |
1589 | @@ -286,15 +244,20 @@ pub async fn serve(cfg: &Config) -> Result<(), Box<dyn Error>> { |
1590 | config: Arc::new(cfg.clone()), |
1591 | })), |
1592 | ) |
1593 | - .route("/static/main.min.css", routing::get(assets::serve_css)) |
1594 | - .route("/static/assets/:asset", routing::get(assets::serve_asset)) |
1595 | + .nest( |
1596 | + "/static", |
1597 | + Router::new() |
1598 | + .route("/main.min.css", routing::get(assets::serve_stylesheet)) |
1599 | + .route("/:name", routing::get(assets::serve_asset)) |
1600 | + .with_state(Arc::new((cfg.clone(), themes.clone()))), |
1601 | + ) |
1602 | .layer(Extension(cfg.clone())) |
1603 | .layer(Extension(Arc::new(db))) |
1604 | .layer(Extension(highlighter)) |
1605 | .layer(Extension(adapter)) |
1606 | // error handling |
1607 | .layer(from_fn_with_state( |
1608 | - Arc::new((cfg.clone(), templates.clone())), |
1609 | + Arc::new((cfg.clone(), themes.clone())), |
1610 | error::middleware, |
1611 | )) |
1612 | // git hosted static sites |
1613 | diff --git a/ayllu/src/web2/terautil/filters.rs b/ayllu/src/web2/terautil/filters.rs |
1614 | index 6eef1cc..4aa2288 100644 |
1615 | --- a/ayllu/src/web2/terautil/filters.rs |
1616 | +++ b/ayllu/src/web2/terautil/filters.rs |
1617 | @@ -1,9 +1,12 @@ |
1618 | + use std::fs::read_to_string; |
1619 | + |
1620 | use tera::{to_value, Filter, Result, Value}; |
1621 | |
1622 | use file_mode::Mode; |
1623 | use time::{format_description::well_known, OffsetDateTime}; |
1624 | |
1625 | use crate::time as ctime; |
1626 | + use crate::web2::terautil::themes::Assets; |
1627 | use crate::web2::util; |
1628 | |
1629 | pub struct FriendlyTime {} |
1630 | @@ -48,33 +51,28 @@ impl Filter for HumanBytes { |
1631 | } |
1632 | } |
1633 | |
1634 | - pub struct Emojis {} |
1635 | + pub struct Emojis(pub Assets); |
1636 | |
1637 | impl Filter for Emojis { |
1638 | fn filter(&self, value: &Value, _: &std::collections::HashMap<String, Value>) -> Result<Value> { |
1639 | - // TODO: load these dynamically with the rest of the theme assets |
1640 | let name = value.as_str().unwrap(); |
1641 | - let svg_content = match name { |
1642 | - "books" => include_str!("../../../themes/default/assets/books.svg"), |
1643 | - "building" => include_str!("../../../themes/default/assets/building.svg"), |
1644 | - "check" => include_str!("../../../themes/default/assets/check.svg"), |
1645 | - "chat" => include_str!("../../../themes/default/assets/chat.svg"), |
1646 | - "code" => include_str!("../../../themes/default/assets/code.svg"), |
1647 | - "feed" => include_str!("../../../themes/default/assets/feed.svg"), |
1648 | - "moon" => include_str!("../../../themes/default/assets/moon.svg"), |
1649 | - "textile-pattern-1" => { |
1650 | - include_str!("../../../themes/default/assets/textile-pattern-1.svg") |
1651 | - } |
1652 | - "textile-pattern-2" => { |
1653 | - include_str!("../../../themes/default/assets/textile-pattern-2.svg") |
1654 | + if let Some(asset) = self.0 .0.get(name) { |
1655 | + match asset { |
1656 | + super::themes::Asset::Raw(content) => { |
1657 | + let content = String::from_utf8_lossy(content); |
1658 | + return Ok(to_value(content)?); |
1659 | + } |
1660 | + super::themes::Asset::FilePath(path) => { |
1661 | + let file_name = path.file_name().unwrap().to_string_lossy(); |
1662 | + if file_name == name { |
1663 | + if let Ok(content) = read_to_string(path) { |
1664 | + return Ok(to_value(content)?); |
1665 | + } |
1666 | + } |
1667 | + } |
1668 | } |
1669 | - "question" => include_str!("../../../themes/default/assets/question.svg"), |
1670 | - "rss" => include_str!("../../../themes/default/assets/rss.svg"), |
1671 | - "scale" => include_str!("../../../themes/default/assets/scale.svg"), |
1672 | - "xmpp" => include_str!("../../../themes/default/assets/xmpp.svg"), |
1673 | - _ => "", |
1674 | }; |
1675 | - let result = to_value(svg_content)?; |
1676 | - Ok(result) |
1677 | + tracing::warn!("failed to load theme asset: {}", name); |
1678 | + Ok(to_value("")?) |
1679 | } |
1680 | } |
1681 | diff --git a/ayllu/src/web2/terautil/loader.rs b/ayllu/src/web2/terautil/loader.rs |
1682 | index 54d3933..9c9b37c 100644 |
1683 | --- a/ayllu/src/web2/terautil/loader.rs |
1684 | +++ b/ayllu/src/web2/terautil/loader.rs |
1685 | @@ -1,6 +1,8 @@ |
1686 | use serde::{Deserialize, Serialize}; |
1687 | use tera::{Context, Tera}; |
1688 | |
1689 | + use super::Themes; |
1690 | + |
1691 | const DEFAULT_NAV: &[(&str, &str)] = &[]; |
1692 | |
1693 | /// top-level theme options available in all pages |
1694 | @@ -17,27 +19,32 @@ pub struct Options { |
1695 | } |
1696 | |
1697 | pub struct Loader { |
1698 | - pub templates: Vec<(String, Tera)>, |
1699 | + pub themes: Themes, |
1700 | pub default_theme: String, |
1701 | } |
1702 | |
1703 | impl Loader { |
1704 | - pub fn load(&self, options: Options, theme_name: Option<String>) -> (Tera, Context) { |
1705 | - let _default_template = || { |
1706 | - self.templates |
1707 | - .iter() |
1708 | - .find(|template| template.0 == self.default_theme) |
1709 | - .unwrap() |
1710 | - .1 |
1711 | + fn theme(&self, name: Option<&str>) -> super::themes::Theme { |
1712 | + let default_tmpl = || { |
1713 | + self.themes |
1714 | + .0 |
1715 | + .get(&self.default_theme) |
1716 | + .expect("default theme is not configured") |
1717 | .clone() |
1718 | }; |
1719 | - let template = match theme_name { |
1720 | - Some(name) => match self.templates.iter().find(|template| template.0 == name) { |
1721 | - Some(template) => template.1.clone(), |
1722 | - None => _default_template(), |
1723 | + |
1724 | + match name { |
1725 | + Some(name) => match self.themes.0.get(name) { |
1726 | + Some(theme) => theme.clone(), |
1727 | + None => default_tmpl(), |
1728 | }, |
1729 | - None => _default_template(), |
1730 | - }; |
1731 | + None => default_tmpl(), |
1732 | + } |
1733 | + } |
1734 | + |
1735 | + // load the tera context of the theme or default theme if unspecified |
1736 | + pub fn load(&self, options: Options, theme_name: Option<String>) -> (Tera, Context) { |
1737 | + let theme = self.theme(theme_name.as_deref()); |
1738 | let mut ctx = Context::new(); |
1739 | ctx.insert("title", ""); |
1740 | ctx.insert("origin", &options.origin); |
1741 | @@ -50,6 +57,11 @@ impl Loader { |
1742 | ctx.insert("path", &options.path); |
1743 | ctx.insert("fluid", &false); |
1744 | ctx.insert("subpath_mode", &options.subpath_mode); |
1745 | - (template, ctx) |
1746 | + (theme.0, ctx) |
1747 | + } |
1748 | + |
1749 | + // load assets for the configured theme or default theme if unspecified |
1750 | + pub fn assets(&self, theme_name: Option<&str>) -> super::themes::Assets { |
1751 | + self.theme(theme_name).1 |
1752 | } |
1753 | } |
1754 | diff --git a/ayllu/src/web2/terautil/mod.rs b/ayllu/src/web2/terautil/mod.rs |
1755 | index b06a8ca..5d8b6e9 100644 |
1756 | --- a/ayllu/src/web2/terautil/mod.rs |
1757 | +++ b/ayllu/src/web2/terautil/mod.rs |
1758 | @@ -1,5 +1,6 @@ |
1759 | mod filters; |
1760 | mod loader; |
1761 | + mod themes; |
1762 | |
1763 | - pub use filters::*; |
1764 | - pub use loader::{Loader, Options}; |
1765 | + pub use loader::*; |
1766 | + pub use themes::*; |
1767 | diff --git a/ayllu/src/web2/terautil/themes.rs b/ayllu/src/web2/terautil/themes.rs |
1768 | new file mode 100644 |
1769 | index 0000000..705ab70 |
1770 | --- /dev/null |
1771 | +++ b/ayllu/src/web2/terautil/themes.rs |
1772 | @@ -0,0 +1,177 @@ |
1773 | + use std::collections::BTreeMap; |
1774 | + use std::fs::metadata; |
1775 | + use std::io::Error as IoError; |
1776 | + use std::path::PathBuf; |
1777 | + |
1778 | + use globwalk::{glob_builder, DirEntry, FileType, GlobError, WalkError}; |
1779 | + use include_dir::{include_dir, Dir}; |
1780 | + use tera::{Error as TeraError, Tera}; |
1781 | + |
1782 | + use crate::web2::terautil::filters; |
1783 | + |
1784 | + /// An error occured while initializing themes |
1785 | + #[derive(thiserror::Error, Debug)] |
1786 | + pub enum Error { |
1787 | + #[error("Theme Related IO Error: {0}")] |
1788 | + Io(#[from] IoError), |
1789 | + #[error("Template Error: {0}")] |
1790 | + Config(#[from] TeraError), |
1791 | + #[error("Theme Filepath Error: {0}")] |
1792 | + Glob(#[from] GlobError), |
1793 | + #[error("Problem Loading Theme: {0}")] |
1794 | + Walk(#[from] WalkError), |
1795 | + } |
1796 | + |
1797 | + // Ayllu comes with a collection of builtin themes |
1798 | + static BUILTIN_THEMES_DIR: Dir<'_> = include_dir!("$CARGO_MANIFEST_DIR/themes"); |
1799 | + |
1800 | + static BASE_CSS_TEMPLATE: &str = |
1801 | + include_str!(concat!(env!("OUT_DIR"), "/themes/default/theme.min.css")); |
1802 | + |
1803 | + /// An asset file that may either be in-memory or on the file system, all |
1804 | + /// assets are initialized at start time and dynamic loading of files from the |
1805 | + /// os is unsupported. |
1806 | + #[derive(Clone, Debug)] |
1807 | + pub enum Asset { |
1808 | + /// Path offset from /static and the actual file contents loaded in memory |
1809 | + Raw(Vec<u8>), |
1810 | + /// Path offset from /static and a full filesystem path loaded at startup |
1811 | + FilePath(PathBuf), |
1812 | + } |
1813 | + |
1814 | + /// Collection of all the assets associated with the given theme that are |
1815 | + /// served either from memory or on the file system. |
1816 | + #[derive(Clone, Debug)] |
1817 | + pub struct Assets(pub BTreeMap<String, Asset>); |
1818 | + |
1819 | + /// Theme is a tuple containing a unique name, a tera template, and an optional |
1820 | + /// stylesheet. If no stylesheet is provided then the default base stylesheet |
1821 | + /// that is compiled during compilation is served. If an additional stylesheet |
1822 | + /// is loaded from disk then the default one and the custom one is served. |
1823 | + #[derive(Clone)] |
1824 | + pub struct Theme(pub Tera, pub Assets); |
1825 | + |
1826 | + /// Collection of themes which are a mixture of in-memory and user provided |
1827 | + /// themes. |
1828 | + #[derive(Clone)] |
1829 | + pub struct Themes(pub BTreeMap<String, Theme>); |
1830 | + |
1831 | + /// load is responsible for constructing Tera templates which can come from |
1832 | + /// built-in memory objects or from the file system in the case of user defined |
1833 | + /// templates. User defined stylesheets and custom built-in themes both inherit |
1834 | + /// configuration from the default theme. |
1835 | + /// |
1836 | + /// Order of theme loading: |
1837 | + /// |
1838 | + /// [default] # compiled in-memory |
1839 | + /// | |
1840 | + /// [built-in custom themes] # compiled in-memory |
1841 | + /// | |
1842 | + /// [user defined themes] # on disk |
1843 | + pub fn load_themes(user_themes: Vec<(String, PathBuf)>) -> Result<Themes, Error> { |
1844 | + let mut themes: BTreeMap<String, Theme> = BTreeMap::new(); |
1845 | + let mut default_tmpl = Tera::default(); |
1846 | + default_tmpl.register_filter("friendly_time", filters::FriendlyTime {}); |
1847 | + default_tmpl.register_filter("format_epoch", filters::FormatEpoch {}); |
1848 | + default_tmpl.register_filter("filemode", filters::FileMode {}); |
1849 | + default_tmpl.register_filter("human_bytes", filters::HumanBytes {}); |
1850 | + |
1851 | + default_tmpl.add_raw_templates( |
1852 | + BUILTIN_THEMES_DIR |
1853 | + .find("default/templates/*.html") |
1854 | + .unwrap() |
1855 | + .filter_map(|tmpl_file| match tmpl_file.as_file() { |
1856 | + Some(file) => { |
1857 | + let file_name = file.path().file_name().unwrap().to_str().unwrap(); |
1858 | + Some((file_name.to_string(), file.contents_utf8().unwrap())) |
1859 | + } |
1860 | + None => None, |
1861 | + }), |
1862 | + )?; |
1863 | + |
1864 | + let mut default_assets = BTreeMap::from_iter( |
1865 | + BUILTIN_THEMES_DIR |
1866 | + .find("default/assets/*") |
1867 | + .unwrap() |
1868 | + .filter_map(|f| match f.as_file() { |
1869 | + Some(file) => { |
1870 | + let file_name = file.path().file_name().unwrap().to_str().unwrap(); |
1871 | + tracing::debug!("loaded asset: {}", file_name); |
1872 | + Some((file_name.to_string(), Asset::Raw(file.contents().to_vec()))) |
1873 | + } |
1874 | + None => None, |
1875 | + }), |
1876 | + ); |
1877 | + |
1878 | + // base CSS theme all themes extend |
1879 | + default_assets.insert( |
1880 | + "main.min.css".to_string(), |
1881 | + Asset::Raw(BASE_CSS_TEMPLATE.as_bytes().to_vec()), |
1882 | + ); |
1883 | + |
1884 | + let assets = Assets(default_assets.clone()); |
1885 | + |
1886 | + default_tmpl.register_filter("emoji", filters::Emojis(assets.clone())); |
1887 | + // load the default theme and it's stylesheet |
1888 | + themes.insert(String::from("default"), Theme(default_tmpl.clone(), assets)); |
1889 | + |
1890 | + // TODO: load other built-in themes |
1891 | + |
1892 | + // load user themes |
1893 | + for (name, path) in user_themes { |
1894 | + tracing::info!("loading user defined theme: {} @ {:?}", name, path); |
1895 | + |
1896 | + let templates_path = path.join("templates"); |
1897 | + let glob_pattern = format!("{}/*.html", templates_path.to_string_lossy()); |
1898 | + tracing::debug!("template glob pattern: {}", glob_pattern); |
1899 | + |
1900 | + let mut theme_templates = default_tmpl.clone(); |
1901 | + |
1902 | + for template in glob_builder(glob_pattern) |
1903 | + .max_depth(1) |
1904 | + .file_type(FileType::FILE) |
1905 | + .build()? |
1906 | + { |
1907 | + let template = template?; |
1908 | + let template_name = template.file_name(); |
1909 | + let template_name = template_name.to_string_lossy().to_string(); |
1910 | + tracing::debug!("overriding template theme: {:?}", template_name); |
1911 | + theme_templates.add_template_file(template.path(), Some(template_name.as_str()))?; |
1912 | + } |
1913 | + |
1914 | + let assets_path = path.join("assets"); |
1915 | + let glob_pattern = format!("{}/*", assets_path.to_string_lossy()); |
1916 | + tracing::debug!("assets glob pattern: {}", glob_pattern); |
1917 | + |
1918 | + let theme_assets: Result<Vec<DirEntry>, globwalk::WalkError> = glob_builder(glob_pattern) |
1919 | + .file_type(FileType::FILE) |
1920 | + .max_depth(1) |
1921 | + .build()? |
1922 | + .collect(); |
1923 | + |
1924 | + let mut theme_assets = BTreeMap::from_iter(theme_assets?.into_iter().map(|file| { |
1925 | + let file_name = file.path().file_name().unwrap().to_str().unwrap(); |
1926 | + tracing::debug!("loaded theme asset {}", file_name); |
1927 | + (file_name.to_string(), Asset::FilePath(file.into_path())) |
1928 | + })); |
1929 | + |
1930 | + let mut base_assets = default_assets.clone(); |
1931 | + |
1932 | + let theme_css_file = path.join("theme.css"); |
1933 | + if metadata(theme_css_file.as_path()).is_ok() { |
1934 | + theme_assets.insert( |
1935 | + "theme.css".to_string(), |
1936 | + Asset::FilePath(theme_css_file.to_path_buf()), |
1937 | + ); |
1938 | + tracing::debug!("extended theme with {:?}", theme_css_file); |
1939 | + } |
1940 | + |
1941 | + base_assets.append(&mut theme_assets); |
1942 | + let theme_assets = Assets(base_assets); |
1943 | + |
1944 | + theme_templates.register_filter("emoji", filters::Emojis(theme_assets.clone())); |
1945 | + themes.insert(name.clone(), Theme(theme_templates, theme_assets)); |
1946 | + } |
1947 | + |
1948 | + Ok(Themes(themes)) |
1949 | + } |
1950 | diff --git a/ayllu/themes/adwaita/templates/.gitkeep b/ayllu/themes/adwaita/templates/.gitkeep |
1951 | deleted file mode 100644 |
1952 | index e69de29..0000000 |
1953 | --- a/ayllu/themes/adwaita/templates/.gitkeep |
1954 | +++ /dev/null |
1955 | diff --git a/ayllu/themes/adwaita/theme.scss b/ayllu/themes/adwaita/theme.scss |
1956 | deleted file mode 100644 |
1957 | index 4716ec0..0000000 |
1958 | --- a/ayllu/themes/adwaita/theme.scss |
1959 | +++ /dev/null |
1960 | @@ -1,171 +0,0 @@ |
1961 | - // https://en.wikipedia.org/wiki/Adwaita_(design_language) |
1962 | - // https://developer.gnome.org/hig/reference/palette.html |
1963 | - |
1964 | - $blue1: rgb(153, 193, 241); |
1965 | - $blue2: rgb(98, 160, 234 ); |
1966 | - $blue3: rgb(53, 132, 228 ); |
1967 | - $blue4: rgb(28, 113, 216 ); |
1968 | - $blue5: rgb(26, 95, 180 ); |
1969 | - $green1: rgb(143, 240, 164); |
1970 | - $green2: rgb(87, 227 ,137); |
1971 | - $green3: rgb(51, 209 ,122); |
1972 | - $green4: rgb(46, 194 ,126); |
1973 | - $green5: rgb(38, 162 ,105); |
1974 | - $yellow1: rgb(249, 240, 107); |
1975 | - $yellow2: rgb(248, 228, 92); |
1976 | - $yellow3: rgb(246, 211, 45); |
1977 | - $yellow4: rgb(245, 194, 17); |
1978 | - $yellow5: rgb(229, 165, 10); |
1979 | - $orange1: rgb(255, 190, 111); |
1980 | - $orange2: rgb(255, 163, 72); |
1981 | - $orange3: rgb(255, 120, 0); |
1982 | - $orange4: rgb(230, 97, 0); |
1983 | - $orange5: rgb(198, 70, 0); |
1984 | - $red1: rgb(246, 97, 81); |
1985 | - $red2: rgb(237, 51, 59); |
1986 | - $red3: rgb(224, 27, 36); |
1987 | - $red4: rgb(192, 28, 40); |
1988 | - $red5: rgb(165, 29, 45); |
1989 | - $purple1: rgb(220, 138, 221); |
1990 | - $purple2: rgb(192, 97, 203); |
1991 | - $purple3: rgb(145, 65, 172); |
1992 | - $purple4: rgb(129, 61, 156); |
1993 | - $purple5: rgb(97, 53, 131); |
1994 | - $brown1: rgb(205, 171, 143); |
1995 | - $brown2: rgb(181, 131, 90); |
1996 | - $brown3: rgb(152, 106, 68); |
1997 | - $brown4: rgb(134, 94, 60); |
1998 | - $brown5: rgb(99, 69, 44); |
1999 | - $light1: rgb(255, 255, 255); |
2000 | - $light2: rgb(246, 245, 244); |
2001 | - $light3: rgb(222, 221, 218); |
2002 | - $light4: rgb(192, 191, 188); |
2003 | - $light5: rgb(154, 153, 150); |
2004 | - $dark1: rgb(119, 118, 123); |
2005 | - $dark2: rgb(94, 92, 100); |
2006 | - $dark3: rgb(61, 56, 70); |
2007 | - $dark4: rgb(36, 31, 49); |
2008 | - $dark5: rgb(0, 0, 0); |
2009 | - |
2010 | - // pico overrides |
2011 | - $grey-50: $light2; /// 96% |
2012 | - $grey-100: darken($grey-50, 5%); |
2013 | - $grey-200: darken($grey-50, 10%); |
2014 | - $grey-300: darken($grey-50, 20%); |
2015 | - $grey-400: darken($grey-50, 30%); |
2016 | - $grey-500: darken($grey-50, 40%); |
2017 | - $grey-600: darken($grey-50, 50%); |
2018 | - $grey-700: darken($grey-50, 60%); |
2019 | - $grey-800: darken($grey-50, 70%); |
2020 | - $grey-900: darken($grey-50, 80%); |
2021 | - |
2022 | - |
2023 | - // Light Blue |
2024 | - $primary-50: $blue1; |
2025 | - $primary-100: darken($primary-50, 5%); |
2026 | - $primary-200: darken($primary-50, 10%); |
2027 | - $primary-300: darken($primary-50, 20%); |
2028 | - $primary-400: darken($primary-50, 25%); |
2029 | - $primary-500: darken($primary-50, 30%); |
2030 | - $primary-600: darken($primary-50, 35%); |
2031 | - $primary-700: darken($primary-50, 40%); |
2032 | - $primary-800: darken($primary-50, 45%); |
2033 | - $primary-900: darken($primary-50, 50%); |
2034 | - |
2035 | - // Black & White |
2036 | - $black: $dark1; |
2037 | - $white: $light1; |
2038 | - |
2039 | - // Amber |
2040 | - $amber-50: $orange1; |
2041 | - $amber-100: darken($amber-50, 5%); |
2042 | - $amber-200: darken($amber-50, 10%); |
2043 | - $amber-300: darken($amber-50, 15%); |
2044 | - $amber-400: darken($amber-50, 20%); |
2045 | - $amber-500: darken($amber-50, 25%); |
2046 | - $amber-600: darken($amber-50, 30%); |
2047 | - $amber-700: darken($amber-50, 35%); |
2048 | - $amber-800: darken($amber-50, 40%); |
2049 | - $amber-900: darken($amber-50, 45%); |
2050 | - |
2051 | - // Green |
2052 | - $green-50: $green1; |
2053 | - $green-100: darken($green-50, 5%); |
2054 | - $green-200: darken($green-50, 10%); |
2055 | - $green-300: darken($green-50, 15%); |
2056 | - $green-400: darken($green-50, 20%); |
2057 | - $green-500: darken($green-50, 25%); |
2058 | - $green-600: darken($green-50, 30%); |
2059 | - $green-700: darken($green-50, 35%); |
2060 | - $green-800: darken($green-50, 40%); |
2061 | - $green-900: darken($green-50, 45%); |
2062 | - |
2063 | - // Red |
2064 | - $red-50: $red1; |
2065 | - $red-100: darken($red-50, 5%); |
2066 | - $red-200: darken($red-50, 10%); |
2067 | - $red-300: darken($red-50, 15%); |
2068 | - $red-400: darken($red-50, 20%); |
2069 | - $red-500: darken($red-50, 25%); |
2070 | - $red-600: darken($red-50, 30%); |
2071 | - $red-700: darken($red-50, 35%); |
2072 | - $red-800: darken($red-50, 40%); |
2073 | - $red-900: darken($red-50, 45%); |
2074 | - |
2075 | - $primary-500: $blue1; |
2076 | - $primary-600: $blue2; |
2077 | - $primary-700: $blue3; |
2078 | - |
2079 | - // |
2080 | - // |
2081 | - // tree sitter highlighting |
2082 | - // https://github.com/Mofiqul/adwaita.nvim |
2083 | - // |
2084 | - // extra colors for highlighting |
2085 | - $teal1: #93DDC2; |
2086 | - $teal2: #5BC8AF; |
2087 | - $teal3: #33B2A4; |
2088 | - $teal4: #26A1A2; |
2089 | - $teal5: #218787; |
2090 | - $violet2: #7D8AC7; |
2091 | - $violet3: #6362C8; |
2092 | - $violet4: #4E57BA; |
2093 | - |
2094 | - span.ts_attribute {color: $orange4}; |
2095 | - span.ts_constant {color: $purple4}; |
2096 | - span.ts_function.builtin {color: $blue4}; |
2097 | - span.ts_function {color: $blue4}; |
2098 | - span.ts_keyword {color: $orange4}; |
2099 | - span.ts_operator {color: $purple4}; |
2100 | - span.ts_property {color: $blue1}; |
2101 | - span.ts_punctuation {color: $blue1}; |
2102 | - span.ts_punctuation.bracket {color: $blue1}; |
2103 | - span.ts_punctuation.delimiter {color: $blue1}; |
2104 | - span.ts_string {color: $teal2}; |
2105 | - span.ts_string.special {color: $teal3}; |
2106 | - span.ts_tag {color: $teal2}; |
2107 | - span.ts_type {color: $teal2}; |
2108 | - span.ts_type.builtin {color: $blue1}; |
2109 | - span.ts_variable {color: $light4}; |
2110 | - span.ts_variable.builtin {color: $light4}; |
2111 | - span.ts_variable.parameter {color: $light4}; |
2112 | - |
2113 | - @media (prefers-color-scheme: dark) { |
2114 | - span.label { |
2115 | - color: $dark5; |
2116 | - } |
2117 | - } |
2118 | - |
2119 | - $positive: $green1; |
2120 | - $negative: $red1; |
2121 | - |
2122 | - $blame-border: $purple1; |
2123 | - |
2124 | - $highlighted: $purple1; |
2125 | - $icon-background: $purple1; |
2126 | - |
2127 | - $chart-color: $purple1; |
2128 | - |
2129 | - @import "@picocss/pico/scss/pico"; |
2130 | - @import "../default/layout.scss"; |
2131 | - @import "../default/base.scss"; |
2132 | diff --git a/ayllu/themes/default/assets/ayllu_logo.svg b/ayllu/themes/default/assets/ayllu_logo.svg |
2133 | deleted file mode 100644 |
2134 | index d1db83a..0000000 |
2135 | --- a/ayllu/themes/default/assets/ayllu_logo.svg |
2136 | +++ /dev/null |
2137 | @@ -1,101 +0,0 @@ |
2138 | - <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
2139 | - <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" inkscape:version="1.0 (1.0+r73+1)" sodipodi:docname="textil-inca-pattern-3a.svg" version="1.1" viewBox="0 0 902 702"> |
2140 | - <metadata> |
2141 | - <rdf:RDF> |
2142 | - <cc:Work rdf:about=""> |
2143 | - <dc:format>image/svg+xml</dc:format> |
2144 | - <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> |
2145 | - </cc:Work> |
2146 | - </rdf:RDF> |
2147 | - </metadata> |
2148 | - <sodipodi:namedview inkscape:current-layer="svg159" inkscape:window-maximized="1" inkscape:window-y="27" inkscape:window-x="67" inkscape:cy="467.33333" inkscape:cx="600.66667" inkscape:zoom="0.75746799" showgrid="false" id="namedview161" inkscape:window-height="1025" inkscape:window-width="1853" inkscape:pageshadow="2" inkscape:pageopacity="0" guidetolerance="10" gridtolerance="10" objecttolerance="10" borderopacity="1" bordercolor="#666666" pagecolor="#ffffff"/> |
2149 | - <g fill-rule="evenodd" stroke-width="2" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-opacity="1"> |
2150 | - <g id="brown" fill="#5c451c" stroke="#5c451c"> |
2151 | - <path style="" d="M 1,1 H 901 V 701 H 1 Z m 0,0"/> |
2152 | - </g> |
2153 | - <g id="orange" fill="#ffa300" stroke="#ffa300"> |
2154 | - <path d="m 641,341 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2155 | - <path d="m 121,341 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2156 | - <path d="m 401,341 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
2157 | - <path d="m 441,341 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
2158 | - </g> |
2159 | - <g id="turquoise" fill="#358794" stroke="#358794"> |
2160 | - <path d="m 701,221 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h -40 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2161 | - <path d="m 701,481 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h -40 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
2162 | - <path d="m 621,361 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 40 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2163 | - <path d="m 621,341 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -40 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
2164 | - <path d="m 201,221 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 H 81 v 20 H 61 v 20 h 40 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2165 | - <path d="M 201,481 H 181 V 461 H 161 V 441 H 141 V 421 H 121 V 401 H 101 V 381 H 81 V 361 H 61 v -20 h 40 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
2166 | - <path d="m 281,361 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 40 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2167 | - <path d="m 281,341 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -40 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
2168 | - <path d="m 441,121 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 40 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2169 | - <path d="m 261,361 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 40 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2170 | - <path d="m 461,121 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 40 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2171 | - <path d="m 641,361 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 40 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2172 | - </g> |
2173 | - <g id="white" fill="#ffffff" stroke="#ffffff"> |
2174 | - <path d="m 701,161 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h -40 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2175 | - <path d="m 701,541 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h -40 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
2176 | - <path d="m 441,61 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 40 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2177 | - <path d="m 441,641 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -40 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
2178 | - <path d="m 461,61 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 40 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2179 | - <path d="m 621,421 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 40 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2180 | - <path d="m 621,281 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -40 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
2181 | - <path d="m 281,281 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -40 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
2182 | - <path d="m 201,161 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 H 81 v 20 H 61 v 20 H 41 v 20 H 21 v 20 H 1 v 20 h 40 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2183 | - <path d="M 201,541 H 181 V 521 H 161 V 501 H 141 V 481 H 121 V 461 H 101 V 441 H 81 V 421 H 61 V 401 H 41 V 381 H 21 V 361 H 1 v -20 h 40 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
2184 | - <path d="m 461,641 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -40 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
2185 | - <path d="m 281,421 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 40 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2186 | - <path d="m 701,181 h 20 v -80 h 100 v 40 h -40 v -20 h -20 v 40 h 80 V 81 H 701 Z m 0,0"/> |
2187 | - <path d="M 721,181 H 701 V 101 H 601 v 40 h 40 v -20 h 20 v 40 H 581 V 81 h 140 z m 0,0"/> |
2188 | - <path d="m 701,521 h 20 v 80 h 100 v -40 h -40 v 20 h -20 v -40 h 80 v 80 H 701 Z m 0,0"/> |
2189 | - <path d="m 721,521 h -20 v 80 H 601 v -40 h 40 v 20 h 20 v -40 h -80 v 80 h 140 z m 0,0"/> |
2190 | - <path d="m 181,521 h 20 v 80 h 100 v -40 h -40 v 20 h -20 v -40 h 80 v 80 H 181 Z m 0,0"/> |
2191 | - <path d="m 201,521 h -20 v 80 H 81 v -40 h 40 v 20 h 20 V 541 H 61 v 80 h 140 z m 0,0"/> |
2192 | - <path d="m 181,181 h 20 v -80 h 100 v 40 h -40 v -20 h -20 v 40 h 80 V 81 H 181 Z m 0,0"/> |
2193 | - <path d="M 201,181 H 181 V 101 H 81 v 40 h 40 v -20 h 20 v 40 H 61 V 81 h 140 z m 0,0"/> |
2194 | - <path d="m 441,181 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h -40 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2195 | - <path d="m 461,181 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h 40 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2196 | - <path d="m 441,521 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h -40 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
2197 | - <path d="m 461,521 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h 40 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
2198 | - <path d="M 1,21 H 881 V 61 H 1 Z m 0,0"/> |
2199 | - <path d="m 1,641 h 880 v 40 H 1 Z m 0,0"/> |
2200 | - <path d="m 421,281 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
2201 | - <path d="m 681,341 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
2202 | - <path d="m 161,341 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
2203 | - <path d="m 421,401 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
2204 | - <path d="m 401,301 h 20 v 20 h -20 z m 0,0"/> |
2205 | - <path d="m 381,321 h 20 v 20 h -20 z m 0,0"/> |
2206 | - <path d="m 361,341 h 20 v 20 h -20 z m 0,0"/> |
2207 | - <path d="m 381,361 h 20 v 20 h -20 z m 0,0"/> |
2208 | - <path d="m 401,381 h 20 v 20 h -20 z m 0,0"/> |
2209 | - <path d="m 501,321 h 20 v 20 h -20 z m 0,0"/> |
2210 | - <path d="m 521,341 h 20 v 20 h -20 z m 0,0"/> |
2211 | - <path d="m 501,361 h 20 v 20 h -20 z m 0,0"/> |
2212 | - <path d="m 481,381 h 20 v 20 h -20 z m 0,0"/> |
2213 | - <path d="m 421,341 h 20 v 20 h -20 z m 0,0"/> |
2214 | - <path d="m 461,341 h 20 v 20 h -20 z m 0,0"/> |
2215 | - <path d="m 881,21 h 20 v 40 h -20 z m 0,0"/> |
2216 | - <path d="m 881,641 h 20 v 40 h -20 z m 0,0"/> |
2217 | - </g> |
2218 | - <g id="red" fill="#de3333" stroke="#de3333"> |
2219 | - <path d="m 801,201 h 60 V 81 h 40 v 220 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2220 | - <path d="M 101,201 H 41 V 81 H 1 v 220 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2221 | - <path d="M 101,501 H 41 V 621 H 1 V 401 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
2222 | - <path d="m 801,501 h 60 v 120 h 40 V 401 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
2223 | - <path d="m 381,341 h 20 v 20 h -20 z m 0,0"/> |
2224 | - <path d="m 401,321 h 20 v 20 h -20 z m 0,0"/> |
2225 | - <path d="m 421,301 h 20 v 20 h -20 z m 0,0"/> |
2226 | - <path d="m 461,301 h 20 v 20 h -20 z m 0,0"/> |
2227 | - <path d="m 481,321 h 20 v 20 h -20 z m 0,0"/> |
2228 | - <path d="m 501,341 h 20 v 20 h -20 z m 0,0"/> |
2229 | - <path d="m 481,361 h 20 v 20 h -20 z m 0,0"/> |
2230 | - <path d="m 461,381 h 20 v 20 h -20 z m 0,0"/> |
2231 | - <path d="m 441,361 h 20 v 20 h -20 z m 0,0"/> |
2232 | - <path d="m 421,381 h 20 v 20 h -20 z m 0,0"/> |
2233 | - <path d="m 401,361 h 20 v 20 h -20 z m 0,0"/> |
2234 | - <path d="m 881,81 h 20 v 220 h -20 z m 0,0"/> |
2235 | - <path d="m 881,401 h 20 v 220 h -20 z m 0,0"/> |
2236 | - </g> |
2237 | - </g> |
2238 | - </svg> |
2239 | diff --git a/ayllu/themes/default/assets/feed.xsl b/ayllu/themes/default/assets/feed.xsl |
2240 | index 530f31a..35a356d 100644 |
2241 | --- a/ayllu/themes/default/assets/feed.xsl |
2242 | +++ b/ayllu/themes/default/assets/feed.xsl |
2243 | @@ -14,11 +14,11 @@ |
2244 | <link rel="stylesheet" href="/static/main.min.css" /> |
2245 | </head> |
2246 | <body> |
2247 | - <main class="container"> |
2248 | + <main class="column"> |
2249 | <article> |
2250 | <header> |
2251 | <h1> |
2252 | - <img class="rss-icon-feed" src="/static/assets/feed.svg"/> |
2253 | + <img class="rss-icon-feed" src="/static/feed.svg"/> |
2254 | <a> |
2255 | <xsl:attribute name="href"> <xsl:value-of select="/rss/channel/link"/> </xsl:attribute> |
2256 | <xsl:value-of select="/rss/channel/title"/> |
2257 | @@ -30,7 +30,7 @@ |
2258 | <p>Copy the link from the address bar into your feed reader to receive regular updates.</p> |
2259 | </article> |
2260 | <xsl:for-each select="/rss/channel/item"> |
2261 | - <article class="entry"> |
2262 | + <article class="card"> |
2263 | <header> |
2264 | <h3> |
2265 | <a> |
2266 | diff --git a/ayllu/themes/default/assets/logo.svg b/ayllu/themes/default/assets/logo.svg |
2267 | index 8e43fd6..d1db83a 100644 |
2268 | --- a/ayllu/themes/default/assets/logo.svg |
2269 | +++ b/ayllu/themes/default/assets/logo.svg |
2270 | @@ -1,78 +1,101 @@ |
2271 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
2272 | - <svg |
2273 | - id="emoji" |
2274 | - viewBox="0 0 234.58891 59.331596" |
2275 | - version="1.1" |
2276 | - sodipodi:docname="ayllu.svg" |
2277 | - width="234.58891" |
2278 | - height="59.331596" |
2279 | - inkscape:export-filename="logo.png" |
2280 | - inkscape:export-xdpi="96" |
2281 | - inkscape:export-ydpi="96" |
2282 | - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" |
2283 | - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" |
2284 | - xmlns="http://www.w3.org/2000/svg" |
2285 | - xmlns:svg="http://www.w3.org/2000/svg"> |
2286 | - <defs |
2287 | - id="defs4043"> |
2288 | - <rect |
2289 | - x="67.923203" |
2290 | - y="12.228936" |
2291 | - width="188.06631" |
2292 | - height="68.492889" |
2293 | - id="rect7485" /> |
2294 | - </defs> |
2295 | - <sodipodi:namedview |
2296 | - id="namedview4041" |
2297 | - pagecolor="#ffffff" |
2298 | - bordercolor="#999999" |
2299 | - borderopacity="1" |
2300 | - inkscape:showpageshadow="0" |
2301 | - inkscape:pageopacity="0" |
2302 | - inkscape:pagecheckerboard="0" |
2303 | - inkscape:deskcolor="#d1d1d1" |
2304 | - showgrid="true"> |
2305 | - <inkscape:grid |
2306 | - type="xygrid" |
2307 | - id="grid7481" |
2308 | - originx="0" |
2309 | - originy="0" /> |
2310 | - </sodipodi:namedview> |
2311 | - <g |
2312 | - id="color" |
2313 | - transform="translate(-6.3635189,-6.0201046)"> |
2314 | - <path |
2315 | - fill="#fcea2b" |
2316 | - stroke="none" |
2317 | - d="m 7.3634,42.4095 c 4.5525,6.1703 11.874,10.1726 20.1303,10.1726 13.8071,0 25,-11.1929 25,-25 0,-8.5226 -4.2646,-16.0492 -10.7763,-20.5621 13.0383,2.8385 22.7812,14.4426 22.7812,28.3317 0,16.0163 -12.9837,29 -29,29 -13.5877,0 -24.9889,-9.3288 -28.1352,-21.9422 z" |
2318 | - id="path4029" /> |
2319 | - <path |
2320 | - fill="#f1b31c" |
2321 | - stroke="none" |
2322 | - d="m 45.8373,9.2108 c 8.25,4.25 16.1946,11.8724 16.1946,24.6742 0,15.4494 -12.5242,27.9735 -27.9735,27.9735 -9.2431,0 -19.7524,-4.8353 -24.294,-15.5436 0,0 4.3805,18.6568 25.7189,18.665 C 54.8103,64.9873 63.5252,44.3581 63.5252,44.3581 70.033,12.3815 45.8373,9.2108 45.8373,9.2108 Z" |
2323 | - id="path4031" /> |
2324 | + <svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" inkscape:version="1.0 (1.0+r73+1)" sodipodi:docname="textil-inca-pattern-3a.svg" version="1.1" viewBox="0 0 902 702"> |
2325 | + <metadata> |
2326 | + <rdf:RDF> |
2327 | + <cc:Work rdf:about=""> |
2328 | + <dc:format>image/svg+xml</dc:format> |
2329 | + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> |
2330 | + </cc:Work> |
2331 | + </rdf:RDF> |
2332 | + </metadata> |
2333 | + <sodipodi:namedview inkscape:current-layer="svg159" inkscape:window-maximized="1" inkscape:window-y="27" inkscape:window-x="67" inkscape:cy="467.33333" inkscape:cx="600.66667" inkscape:zoom="0.75746799" showgrid="false" id="namedview161" inkscape:window-height="1025" inkscape:window-width="1853" inkscape:pageshadow="2" inkscape:pageopacity="0" guidetolerance="10" gridtolerance="10" objecttolerance="10" borderopacity="1" bordercolor="#666666" pagecolor="#ffffff"/> |
2334 | + <g fill-rule="evenodd" stroke-width="2" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-opacity="1"> |
2335 | + <g id="brown" fill="#5c451c" stroke="#5c451c"> |
2336 | + <path style="" d="M 1,1 H 901 V 701 H 1 Z m 0,0"/> |
2337 | + </g> |
2338 | + <g id="orange" fill="#ffa300" stroke="#ffa300"> |
2339 | + <path d="m 641,341 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2340 | + <path d="m 121,341 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2341 | + <path d="m 401,341 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
2342 | + <path d="m 441,341 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
2343 | + </g> |
2344 | + <g id="turquoise" fill="#358794" stroke="#358794"> |
2345 | + <path d="m 701,221 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h -40 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2346 | + <path d="m 701,481 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h -40 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
2347 | + <path d="m 621,361 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 40 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2348 | + <path d="m 621,341 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -40 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
2349 | + <path d="m 201,221 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 H 81 v 20 H 61 v 20 h 40 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2350 | + <path d="M 201,481 H 181 V 461 H 161 V 441 H 141 V 421 H 121 V 401 H 101 V 381 H 81 V 361 H 61 v -20 h 40 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
2351 | + <path d="m 281,361 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 40 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2352 | + <path d="m 281,341 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -40 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
2353 | + <path d="m 441,121 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 40 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2354 | + <path d="m 261,361 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 40 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2355 | + <path d="m 461,121 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 40 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2356 | + <path d="m 641,361 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 40 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2357 | + </g> |
2358 | + <g id="white" fill="#ffffff" stroke="#ffffff"> |
2359 | + <path d="m 701,161 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h -40 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2360 | + <path d="m 701,541 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h -40 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
2361 | + <path d="m 441,61 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 40 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2362 | + <path d="m 441,641 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -40 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
2363 | + <path d="m 461,61 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 40 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2364 | + <path d="m 621,421 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 40 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2365 | + <path d="m 621,281 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -40 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
2366 | + <path d="m 281,281 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -40 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
2367 | + <path d="m 201,161 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 H 81 v 20 H 61 v 20 H 41 v 20 H 21 v 20 H 1 v 20 h 40 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2368 | + <path d="M 201,541 H 181 V 521 H 161 V 501 H 141 V 481 H 121 V 461 H 101 V 441 H 81 V 421 H 61 V 401 H 41 V 381 H 21 V 361 H 1 v -20 h 40 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
2369 | + <path d="m 461,641 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -40 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
2370 | + <path d="m 281,421 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 40 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2371 | + <path d="m 701,181 h 20 v -80 h 100 v 40 h -40 v -20 h -20 v 40 h 80 V 81 H 701 Z m 0,0"/> |
2372 | + <path d="M 721,181 H 701 V 101 H 601 v 40 h 40 v -20 h 20 v 40 H 581 V 81 h 140 z m 0,0"/> |
2373 | + <path d="m 701,521 h 20 v 80 h 100 v -40 h -40 v 20 h -20 v -40 h 80 v 80 H 701 Z m 0,0"/> |
2374 | + <path d="m 721,521 h -20 v 80 H 601 v -40 h 40 v 20 h 20 v -40 h -80 v 80 h 140 z m 0,0"/> |
2375 | + <path d="m 181,521 h 20 v 80 h 100 v -40 h -40 v 20 h -20 v -40 h 80 v 80 H 181 Z m 0,0"/> |
2376 | + <path d="m 201,521 h -20 v 80 H 81 v -40 h 40 v 20 h 20 V 541 H 61 v 80 h 140 z m 0,0"/> |
2377 | + <path d="m 181,181 h 20 v -80 h 100 v 40 h -40 v -20 h -20 v 40 h 80 V 81 H 181 Z m 0,0"/> |
2378 | + <path d="M 201,181 H 181 V 101 H 81 v 40 h 40 v -20 h 20 v 40 H 61 V 81 h 140 z m 0,0"/> |
2379 | + <path d="m 441,181 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h -40 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2380 | + <path d="m 461,181 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h 40 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2381 | + <path d="m 441,521 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h -40 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
2382 | + <path d="m 461,521 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h 40 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
2383 | + <path d="M 1,21 H 881 V 61 H 1 Z m 0,0"/> |
2384 | + <path d="m 1,641 h 880 v 40 H 1 Z m 0,0"/> |
2385 | + <path d="m 421,281 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
2386 | + <path d="m 681,341 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
2387 | + <path d="m 161,341 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
2388 | + <path d="m 421,401 h 20 v -20 h 20 v 20 h 20 v 20 h -20 v 20 h -20 v -20 h -20 z m 0,0"/> |
2389 | + <path d="m 401,301 h 20 v 20 h -20 z m 0,0"/> |
2390 | + <path d="m 381,321 h 20 v 20 h -20 z m 0,0"/> |
2391 | + <path d="m 361,341 h 20 v 20 h -20 z m 0,0"/> |
2392 | + <path d="m 381,361 h 20 v 20 h -20 z m 0,0"/> |
2393 | + <path d="m 401,381 h 20 v 20 h -20 z m 0,0"/> |
2394 | + <path d="m 501,321 h 20 v 20 h -20 z m 0,0"/> |
2395 | + <path d="m 521,341 h 20 v 20 h -20 z m 0,0"/> |
2396 | + <path d="m 501,361 h 20 v 20 h -20 z m 0,0"/> |
2397 | + <path d="m 481,381 h 20 v 20 h -20 z m 0,0"/> |
2398 | + <path d="m 421,341 h 20 v 20 h -20 z m 0,0"/> |
2399 | + <path d="m 461,341 h 20 v 20 h -20 z m 0,0"/> |
2400 | + <path d="m 881,21 h 20 v 40 h -20 z m 0,0"/> |
2401 | + <path d="m 881,641 h 20 v 40 h -20 z m 0,0"/> |
2402 | + </g> |
2403 | + <g id="red" fill="#de3333" stroke="#de3333"> |
2404 | + <path d="m 801,201 h 60 V 81 h 40 v 220 h -20 v -20 h -20 v -20 h -20 v -20 h -20 v -20 h -20 z m 0,0"/> |
2405 | + <path d="M 101,201 H 41 V 81 H 1 v 220 h 20 v -20 h 20 v -20 h 20 v -20 h 20 v -20 h 20 z m 0,0"/> |
2406 | + <path d="M 101,501 H 41 V 621 H 1 V 401 h 20 v 20 h 20 v 20 h 20 v 20 h 20 v 20 h 20 z m 0,0"/> |
2407 | + <path d="m 801,501 h 60 v 120 h 40 V 401 h -20 v 20 h -20 v 20 h -20 v 20 h -20 v 20 h -20 z m 0,0"/> |
2408 | + <path d="m 381,341 h 20 v 20 h -20 z m 0,0"/> |
2409 | + <path d="m 401,321 h 20 v 20 h -20 z m 0,0"/> |
2410 | + <path d="m 421,301 h 20 v 20 h -20 z m 0,0"/> |
2411 | + <path d="m 461,301 h 20 v 20 h -20 z m 0,0"/> |
2412 | + <path d="m 481,321 h 20 v 20 h -20 z m 0,0"/> |
2413 | + <path d="m 501,341 h 20 v 20 h -20 z m 0,0"/> |
2414 | + <path d="m 481,361 h 20 v 20 h -20 z m 0,0"/> |
2415 | + <path d="m 461,381 h 20 v 20 h -20 z m 0,0"/> |
2416 | + <path d="m 441,361 h 20 v 20 h -20 z m 0,0"/> |
2417 | + <path d="m 421,381 h 20 v 20 h -20 z m 0,0"/> |
2418 | + <path d="m 401,361 h 20 v 20 h -20 z m 0,0"/> |
2419 | + <path d="m 881,81 h 20 v 220 h -20 z m 0,0"/> |
2420 | + <path d="m 881,401 h 20 v 220 h -20 z m 0,0"/> |
2421 | + </g> |
2422 | </g> |
2423 | - <g |
2424 | - id="line" |
2425 | - transform="translate(-6.3635189,-6.0201046)"> |
2426 | - <path |
2427 | - fill="none" |
2428 | - stroke="#000000" |
2429 | - stroke-linecap="round" |
2430 | - stroke-linejoin="round" |
2431 | - stroke-miterlimit="10" |
2432 | - stroke-width="2" |
2433 | - d="m 7.3634,42.4095 c 4.5525,6.1703 11.874,10.1726 20.1303,10.1726 13.8071,0 25,-11.1929 25,-25 0,-8.5226 -4.2646,-16.0492 -10.7763,-20.5621 13.0383,2.8385 22.7812,14.4426 22.7812,28.3317 0,16.0163 -12.9837,29 -29,29 -13.5877,0 -24.9889,-9.3288 -28.1352,-21.9422 z" |
2434 | - id="path4037" /> |
2435 | - </g> |
2436 | - <text |
2437 | - xml:space="preserve" |
2438 | - id="text7483" |
2439 | - style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect7485);fill:#000000;fill-opacity:1;stroke:none" |
2440 | - transform="translate(-3.6949385,-4.8457367)"><tspan |
2441 | - x="67.923828" |
2442 | - y="48.623523" |
2443 | - id="tspan7896"><tspan |
2444 | - style="font-weight:bold;font-family:serif;-inkscape-font-specification:'serif Bold'" |
2445 | - id="tspan7894">ayllu</tspan></tspan></text> |
2446 | </svg> |
2447 | diff --git a/ayllu/themes/default/assets/moon.svg b/ayllu/themes/default/assets/moon.svg |
2448 | deleted file mode 100644 |
2449 | index 51596eb..0000000 |
2450 | --- a/ayllu/themes/default/assets/moon.svg |
2451 | +++ /dev/null |
2452 | @@ -1,12 +0,0 @@ |
2453 | - <svg id="emoji" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"> |
2454 | - <g id="color"> |
2455 | - <path fill="#FCEA2B" stroke="none" d="M7.3634,42.4095c4.5525,6.1703,11.874,10.1726,20.1303,10.1726c13.8071,0,25-11.1929,25-25 c0-8.5226-4.2646-16.0492-10.7763-20.5621c13.0383,2.8385,22.7812,14.4426,22.7812,28.3317c0,16.0163-12.9837,29-29,29 C21.9109,64.3517,10.5097,55.0229,7.3634,42.4095z"/> |
2456 | - <path fill="#F1B31C" stroke="none" d="M45.8373,9.2108c8.25,4.25,16.1946,11.8724,16.1946,24.6742c0,15.4494-12.5242,27.9735-27.9735,27.9735 c-9.2431,0-19.7524-4.8353-24.294-15.5436c0,0,4.3805,18.6568,25.7189,18.665c19.327,0.0074,28.0419-20.6218,28.0419-20.6218 C70.033,12.3815,45.8373,9.2108,45.8373,9.2108z"/> |
2457 | - </g> |
2458 | - <g id="hair"/> |
2459 | - <g id="skin"/> |
2460 | - <g id="skin-shadow"/> |
2461 | - <g id="line"> |
2462 | - <path fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M7.3634,42.4095c4.5525,6.1703,11.874,10.1726,20.1303,10.1726c13.8071,0,25-11.1929,25-25 c0-8.5226-4.2646-16.0492-10.7763-20.5621c13.0383,2.8385,22.7812,14.4426,22.7812,28.3317c0,16.0163-12.9837,29-29,29 C21.9109,64.3517,10.5097,55.0229,7.3634,42.4095z"/> |
2463 | - </g> |
2464 | - </svg> |
2465 | diff --git a/ayllu/themes/default/base.scss b/ayllu/themes/default/base.scss |
2466 | deleted file mode 100644 |
2467 | index 6f9fd58..0000000 |
2468 | --- a/ayllu/themes/default/base.scss |
2469 | +++ /dev/null |
2470 | @@ -1,557 +0,0 @@ |
2471 | - ::-webkit-scrollbar { |
2472 | - display: none; |
2473 | - } |
2474 | - |
2475 | - :root { |
2476 | - --spacing: 0; |
2477 | - --font-family: monospace; |
2478 | - --font-size: 14px; |
2479 | - } |
2480 | - |
2481 | - pre { |
2482 | - white-space: pre-wrap; |
2483 | - background-color: unset; |
2484 | - color: unset; |
2485 | - font-size: unset; |
2486 | - } |
2487 | - |
2488 | - table { |
2489 | - margin-bottom: 0px; |
2490 | - } |
2491 | - |
2492 | - table { |
2493 | - overflow: hidden; |
2494 | - } |
2495 | - |
2496 | - table td { |
2497 | - padding-left: 2px; |
2498 | - padding-right: 2px; |
2499 | - } |
2500 | - |
2501 | - table tbody tr td { |
2502 | - overflow: hidden; |
2503 | - white-space: nowrap; |
2504 | - } |
2505 | - |
2506 | - table th { |
2507 | - overflow: hidden; |
2508 | - white-space: nowrap; |
2509 | - font-weight: bold; |
2510 | - text-decoration: underline; |
2511 | - } |
2512 | - |
2513 | - header.tree-preamble { |
2514 | - font-size: smaller; |
2515 | - } |
2516 | - |
2517 | - .wide { |
2518 | - display: flex; |
2519 | - flex-direction: row; |
2520 | - justify-content: space-between; |
2521 | - row-gap: 10px; |
2522 | - } |
2523 | - |
2524 | - .wide { |
2525 | - div:nth-child(2) { |
2526 | - margin-left: 10px; |
2527 | - } |
2528 | - } |
2529 | - |
2530 | - nav.small a { |
2531 | - font-size: small; |
2532 | - } |
2533 | - |
2534 | - ul.submenu { |
2535 | - font-size: smaller; |
2536 | - height: 25px; |
2537 | - } |
2538 | - |
2539 | - pre { |
2540 | - overflow: scroll; |
2541 | - } |
2542 | - |
2543 | - [role="button"] { |
2544 | - padding: 0; |
2545 | - margin-top: 2px; |
2546 | - margin-bottom: 2px; |
2547 | - } |
2548 | - |
2549 | - button.small { |
2550 | - display: initial; |
2551 | - width: initial; |
2552 | - } |
2553 | - |
2554 | - nav { |
2555 | - border-radius: var(--border-radius); |
2556 | - margin-left: 10px; |
2557 | - margin-right: 10px; |
2558 | - } |
2559 | - |
2560 | - code { |
2561 | - padding: 0; |
2562 | - } |
2563 | - |
2564 | - code.highlighted { |
2565 | - width: 100%; |
2566 | - overflow: scroll; |
2567 | - } |
2568 | - |
2569 | - footer.main { |
2570 | - padding-top: 2em; |
2571 | - text-align: center; |
2572 | - font-size: smaller; |
2573 | - } |
2574 | - |
2575 | - h1, h2, h3, h4, h5, h6 { |
2576 | - --typography-spacing-vertical: .1em; |
2577 | - //margin-top: unset; |
2578 | - //margin-bottom: unset; |
2579 | - } |
2580 | - |
2581 | - li.active > a { |
2582 | - text-decoration: underline; |
2583 | - } |
2584 | - |
2585 | - .logo > svg { |
2586 | - width: 72px; |
2587 | - } |
2588 | - |
2589 | - @media (prefers-color-scheme: dark) { |
2590 | - .logo { |
2591 | - } |
2592 | - } |
2593 | - |
2594 | - footer { |
2595 | - height: 2em; |
2596 | - } |
2597 | - |
2598 | - article { |
2599 | - box-shadow: none; |
2600 | - } |
2601 | - |
2602 | - article.clone > input { |
2603 | - font-size: smaller; |
2604 | - height: 30px; |
2605 | - text-align: center; |
2606 | - } |
2607 | - |
2608 | - .blob-preview { |
2609 | - text-align: center; |
2610 | - border-style: solid; |
2611 | - border-color: pink; |
2612 | - margin-top: 2em; |
2613 | - padding: 1em; |
2614 | - } |
2615 | - |
2616 | - .line-number { |
2617 | - user-select: none; |
2618 | - // text-align: right; |
2619 | - padding: 0 2px; |
2620 | - width: 10px; |
2621 | - } |
2622 | - |
2623 | - .line { |
2624 | - white-space: pre; |
2625 | - padding-left: 5px; |
2626 | - } |
2627 | - |
2628 | - .icon-header > h1,h2,h3,h4,h5 { |
2629 | - display: inline-block; |
2630 | - } |
2631 | - |
2632 | - .icon-header > h1,h2,h3,h4,h5 > a { |
2633 | - color: none; |
2634 | - text-decoration: inherit; |
2635 | - } |
2636 | - |
2637 | - .icon-header > svg { |
2638 | - height: 2em; |
2639 | - // border: 2px solid; |
2640 | - float: right; |
2641 | - margin-top: 2px; |
2642 | - margin-left: 2px; |
2643 | - } |
2644 | - |
2645 | - .icon > svg { |
2646 | - height: 1.5em; |
2647 | - } |
2648 | - |
2649 | - .icon-header.contrast > svg { |
2650 | - border: 2px solid; |
2651 | - } |
2652 | - |
2653 | - .emoji { |
2654 | - float: right; |
2655 | - } |
2656 | - |
2657 | - .emoji > svg { |
2658 | - height: 30px; |
2659 | - } |
2660 | - |
2661 | - header.repo div { |
2662 | - display: inline-block; |
2663 | - } |
2664 | - |
2665 | - article > header { |
2666 | - padding: 3px; |
2667 | - } |
2668 | - |
2669 | - ul.language-list li { |
2670 | - list-style: none; |
2671 | - } |
2672 | - |
2673 | - ul.author-list li { |
2674 | - list-style: none; |
2675 | - } |
2676 | - |
2677 | - span.right { |
2678 | - float: right; |
2679 | - }; |
2680 | - |
2681 | - span.tiny { |
2682 | - font-size: .7em; |
2683 | - font-weight: bold; |
2684 | - } |
2685 | - |
2686 | - span.center { |
2687 | - text-align: center; |
2688 | - } |
2689 | - |
2690 | - span.tiny-text { |
2691 | - font-size: smaller; |
2692 | - } |
2693 | - |
2694 | - span.hint { |
2695 | - font-weight: bold; |
2696 | - text-decoration: underline; |
2697 | - } |
2698 | - |
2699 | - span.h1 { |
2700 | - font-size: x-large; |
2701 | - font-weight: bold; |
2702 | - } |
2703 | - |
2704 | - span.header-text { |
2705 | - font-size: 1.2em; |
2706 | - font-weight: bold; |
2707 | - } |
2708 | - |
2709 | - span.sub-header { |
2710 | - font-size: 1em; |
2711 | - font-weight: bold; |
2712 | - } |
2713 | - |
2714 | - span.header { |
2715 | - font-size: large; |
2716 | - } |
2717 | - |
2718 | - span.timestamp { |
2719 | - float: right; |
2720 | - } |
2721 | - |
2722 | - span.author { |
2723 | - float: right; |
2724 | - } |
2725 | - |
2726 | - article.index-listing { |
2727 | - margin-top: 25px; |
2728 | - margin-bottom: 15px; |
2729 | - } |
2730 | - |
2731 | - article.index-listing > article { |
2732 | - padding: 3px; |
2733 | - } |
2734 | - |
2735 | - article.listing > article { |
2736 | - padding: 5px; |
2737 | - } |
2738 | - |
2739 | - span.labels { |
2740 | - font-weight: bold; |
2741 | - } |
2742 | - |
2743 | - span.label { |
2744 | - border: solid 2px; |
2745 | - } |
2746 | - |
2747 | - span.labels { |
2748 | - border-radius: 5px 5px 5px 5px; |
2749 | - } |
2750 | - |
2751 | - section.blame { |
2752 | - display: grid; |
2753 | - grid-template-columns: 1fr 5fr; |
2754 | - } |
2755 | - |
2756 | - div.clone { |
2757 | - display: flex; |
2758 | - height: 45px; |
2759 | - font-size: smaller; |
2760 | - } |
2761 | - |
2762 | - div.clone-url > input { |
2763 | - height: 2em !important; |
2764 | - } |
2765 | - |
2766 | - div.clone > div { |
2767 | - padding: 5px; |
2768 | - line-height: 45px; |
2769 | - } |
2770 | - |
2771 | - div.clone-url { |
2772 | - flex: auto; |
2773 | - } |
2774 | - |
2775 | - section.blame { |
2776 | - article { margin-top: 0px !important; } |
2777 | - } |
2778 | - |
2779 | - article.blame-right { |
2780 | - padding: 0; |
2781 | - border-left: solid 1px ; |
2782 | - } |
2783 | - |
2784 | - article.blame-left { |
2785 | - padding: 0; |
2786 | - border-right: solid 1px; |
2787 | - |
2788 | - table tbody tr td { |
2789 | - border-left: solid 1px; |
2790 | - border-right: solid 1px; |
2791 | - text-align: left; |
2792 | - } |
2793 | - } |
2794 | - |
2795 | - |
2796 | - .readme { |
2797 | - // fix markdown list rendering |
2798 | - ul { |
2799 | - padding-right: revert; |
2800 | - padding-left: revert; |
2801 | - padding-inline-start: revert; |
2802 | - padding-inline-end: revert; |
2803 | - } |
2804 | - } |
2805 | - |
2806 | - img.rss-icon-feed { |
2807 | - height: 4em; |
2808 | - } |
2809 | - |
2810 | - div.table { |
2811 | - padding: .5em; |
2812 | - } |
2813 | - |
2814 | - div.readme { |
2815 | - padding: 1em; |
2816 | - } |
2817 | - |
2818 | - .term-width { |
2819 | - word-wrap: break-word; |
2820 | - width: 600px; |
2821 | - } |
2822 | - |
2823 | - footer.tree { |
2824 | - font-size: smaller; |
2825 | - } |
2826 | - |
2827 | - // refs |
2828 | - |
2829 | - section.refs-container { |
2830 | - display: grid; |
2831 | - grid-template-columns: 3fr 1fr; |
2832 | - } |
2833 | - |
2834 | - article.ref-right { |
2835 | - margin-left: 1em; |
2836 | - } |
2837 | - |
2838 | - |
2839 | - @media screen and (max-width:1000px) { |
2840 | - section.refs-container { |
2841 | - grid-template-columns: 1fr; |
2842 | - } |
2843 | - |
2844 | - article.ref-right { |
2845 | - margin-left: 0; |
2846 | - } |
2847 | - } |
2848 | - |
2849 | - section.controls { |
2850 | - text-align: center; |
2851 | - border: 1px; |
2852 | - } |
2853 | - |
2854 | - section.viewer { |
2855 | - text-align: center; |
2856 | - border: 1px; |
2857 | - } |
2858 | - |
2859 | - // repo |
2860 | - |
2861 | - div.repo-container { |
2862 | - display: grid; |
2863 | - grid-template-columns: 3fr 1fr; |
2864 | - } |
2865 | - |
2866 | - div.user-box { |
2867 | - display: grid; |
2868 | - grid-template-columns: 1fr 4fr; |
2869 | - } |
2870 | - |
2871 | - div.user-box > .name { |
2872 | - font-weight: bold; |
2873 | - text-decoration: underline; |
2874 | - } |
2875 | - |
2876 | - div.commit_message { |
2877 | - padding-top: 1em; |
2878 | - } |
2879 | - |
2880 | - div.user-box > .details { |
2881 | - text-align: right; |
2882 | - } |
2883 | - |
2884 | - .expand-xl {display: none} |
2885 | - |
2886 | - div.tree > table { |
2887 | - } |
2888 | - |
2889 | - div.tree { |
2890 | - padding-right: 5px; |
2891 | - padding-left: 5px; |
2892 | - } |
2893 | - |
2894 | - article.tree { |
2895 | - margin-bottom: 5px; |
2896 | - } |
2897 | - |
2898 | - section.repo-right { |
2899 | - text-align: center; |
2900 | - } |
2901 | - |
2902 | - section.repo-right { |
2903 | - margin-left: 1em; |
2904 | - } |
2905 | - |
2906 | - section.repo-right > section { |
2907 | - text-align: center; |
2908 | - } |
2909 | - |
2910 | - section.repo-right > article { |
2911 | - display: block; |
2912 | - text-align: center; |
2913 | - } |
2914 | - |
2915 | - .spaced > div:first-child { |
2916 | - margin-left: 2px; |
2917 | - } |
2918 | - |
2919 | - .panel { |
2920 | - background: var(--card-background-color); |
2921 | - padding: .3em; |
2922 | - } |
2923 | - |
2924 | - table.commits { |
2925 | - width: 100%; |
2926 | - } |
2927 | - |
2928 | - table.commits > tbody > tr > td.message { |
2929 | - word-wrap: break-word; |
2930 | - white-space: normal !important; |
2931 | - } |
2932 | - |
2933 | - section.thread-view > article { |
2934 | - padding-top: 1em; |
2935 | - padding-bottom: 1em; |
2936 | - } |
2937 | - |
2938 | - div.chart { |
2939 | - text-align: center; |
2940 | - } |
2941 | - |
2942 | - // breakpoints and adjustments for different screen sizes |
2943 | - @if map-get($breakpoints, "md") { |
2944 | - @media (max-width: map-get($breakpoints, "md")) { |
2945 | - .collapse {display: none} |
2946 | - section.repo-right { |
2947 | - margin-top: 1em; |
2948 | - margin-left: unset; |
2949 | - } |
2950 | - section.viewer > svg { |
2951 | - width: 400px !important; |
2952 | - } |
2953 | - } |
2954 | - } |
2955 | - |
2956 | - @if map-get($breakpoints, "xl") { |
2957 | - @media (max-width: map-get($breakpoints, "xl")) { |
2958 | - section.viewer > svg { |
2959 | - width: 550px; |
2960 | - } |
2961 | - section.repo-right { |
2962 | - margin-top: 1em; |
2963 | - margin-left: unset; |
2964 | - } |
2965 | - div.tree > table > thead > tr > th:nth-child(5) { |
2966 | - text-align: right; |
2967 | - } |
2968 | - div.tree > table > tbody > tr > td:nth-child(5) { |
2969 | - text-align: right; |
2970 | - } |
2971 | - article.repo { |
2972 | - grid-template-columns: repeat(2, 1fr); |
2973 | - } |
2974 | - div.repo-container { |
2975 | - grid-template-columns: 1fr; |
2976 | - } |
2977 | - } |
2978 | - } |
2979 | - |
2980 | - |
2981 | - @if map-get($breakpoints, "xl") { |
2982 | - @media (min-width: map-get($breakpoints, "xl")) { |
2983 | - .expand-xl {display: revert} |
2984 | - } |
2985 | - } |
2986 | - |
2987 | - // code highlighting |
2988 | - |
2989 | - article.blame-right { |
2990 | - border-left: solid $blame-border 1px !important; |
2991 | - } |
2992 | - |
2993 | - article.blame-left { |
2994 | - border-right: solid $blame-border 1px !important; |
2995 | - } |
2996 | - |
2997 | - article > header.highlighted { |
2998 | - background-color: $highlighted; |
2999 | - } |
3000 | - |
3001 | - article > footer { |
3002 | - background-color: unset; |
3003 | - } |
3004 | - |
3005 | - .icon-header.contrast > svg { |
3006 | - background-color: $icon-background; |
3007 | - } |
3008 | - |
3009 | - article.repo-right { |
3010 | - background-color: unset; |
3011 | - } |
3012 | - |
3013 | - article.repo-right > article { |
3014 | - background-color: unset; |
3015 | - } |
3016 | - |
3017 | - article.repo-right > article > header { |
3018 | - background-color: unset; |
3019 | - } |
3020 | - |
3021 | - .positive { |
3022 | - color: $positive; |
3023 | - } |
3024 | - |
3025 | - .negative { |
3026 | - color: $negative; |
3027 | - } |
3028 | diff --git a/ayllu/themes/default/layout.scss b/ayllu/themes/default/layout.scss |
3029 | deleted file mode 100644 |
3030 | index de45bde..0000000 |
3031 | --- a/ayllu/themes/default/layout.scss |
3032 | +++ /dev/null |
3033 | @@ -1,70 +0,0 @@ |
3034 | - $breakpoints: ( |
3035 | - xs: 0, |
3036 | - sm: 576px, |
3037 | - md: 768px, |
3038 | - lg: 992px, |
3039 | - xl: 1200px, |
3040 | - xxl: 1500px, |
3041 | - xxxl: 2200px |
3042 | - ); |
3043 | - |
3044 | - // Viewports |
3045 | - $viewports: ( |
3046 | - // 'null' disable the viewport on a breakpoint |
3047 | - sm: 510px, |
3048 | - md: 700px, |
3049 | - lg: 920px, |
3050 | - xl: 1130px, |
3051 | - xxl: 1480px, |
3052 | - xxxl: 2190px |
3053 | - ); |
3054 | - |
3055 | - |
3056 | - .container, |
3057 | - .container-fluid { |
3058 | - width: 100%; |
3059 | - margin-right: auto; |
3060 | - margin-left: auto; |
3061 | - padding-right: var(--spacing); |
3062 | - padding-left: var(--spacing); |
3063 | - } |
3064 | - |
3065 | - .container { |
3066 | - @if map-get($breakpoints, "sm") { |
3067 | - @media (min-width: map-get($breakpoints, "sm")) { |
3068 | - max-width: map-get($viewports, "sm"); |
3069 | - padding-right: 0; |
3070 | - padding-left: 0; |
3071 | - } |
3072 | - } |
3073 | - |
3074 | - @if map-get($breakpoints, "md") { |
3075 | - @media (min-width: map-get($breakpoints, "md")) { |
3076 | - max-width: map-get($viewports, "md"); |
3077 | - } |
3078 | - } |
3079 | - |
3080 | - @if map-get($breakpoints, "lg") { |
3081 | - @media (min-width: map-get($breakpoints, "lg")) { |
3082 | - max-width: map-get($viewports, "lg"); |
3083 | - } |
3084 | - } |
3085 | - |
3086 | - @if map-get($breakpoints, "xl") { |
3087 | - @media (min-width: map-get($breakpoints, "xl")) { |
3088 | - max-width: map-get($viewports, "xl"); |
3089 | - } |
3090 | - } |
3091 | - |
3092 | - @if map-get($breakpoints, "xxl") { |
3093 | - @media (min-width: map-get($breakpoints, "xxl")) { |
3094 | - max-width: map-get($viewports, "xxl"); |
3095 | - } |
3096 | - } |
3097 | - |
3098 | - @if map-get($breakpoints, "xxxl") { |
3099 | - @media (min-width: map-get($breakpoints, "xxxl")) { |
3100 | - max-width: map-get($viewports, "xxxl"); |
3101 | - } |
3102 | - } |
3103 | - } |
3104 | diff --git a/ayllu/themes/default/templates/404.html b/ayllu/themes/default/templates/404.html |
3105 | index d8bac44..ef22b82 100644 |
3106 | --- a/ayllu/themes/default/templates/404.html |
3107 | +++ b/ayllu/themes/default/templates/404.html |
3108 | @@ -1,8 +1,9 @@ |
3109 | {% extends "base.html" %} |
3110 | {% block content %} |
3111 | - <!-- https://openclipart.org/detail/310184/fair-labyrinth --> |
3112 | - <h1> Not Found ({{status_code}})</h1> |
3113 | - <p> Unable to find the resource you have requested, perhaps try looking somewhere else? </p> |
3114 | - <h4> Error Message: </h4> |
3115 | - <pre>{{ error_message }}</pre> |
3116 | + <section class="stretch"> |
3117 | + <h1>Not Found ({{ status_code }})</h1> |
3118 | + <p>Unable to find the resource you have requested, perhaps try looking somewhere else?</p> |
3119 | + <h4>Error Message:</h4> |
3120 | + <p>{{ error_message }}</p> |
3121 | + </section> |
3122 | {% endblock %} |
3123 | diff --git a/ayllu/themes/default/templates/5xx.html b/ayllu/themes/default/templates/5xx.html |
3124 | index e010a62..e0870d3 100644 |
3125 | --- a/ayllu/themes/default/templates/5xx.html |
3126 | +++ b/ayllu/themes/default/templates/5xx.html |
3127 | @@ -1,7 +1,9 @@ |
3128 | {% extends "base.html" %} |
3129 | {% block content %} |
3130 | - <h1> Internal Service Error ({{status_code}})</h1> |
3131 | - <p> Something has gone wrong processing your request, please be patient. </p> |
3132 | - <h4> Error Message: </h4> |
3133 | - <pre>{{ error_message }}</pre> |
3134 | + <section class="strech"> |
3135 | + <h1>Internal Service Error ({{ status_code }})</h1> |
3136 | + <p>Something has gone wrong processing your request, please be patient.</p> |
3137 | + <h4>Error Message:</h4> |
3138 | + <p>{{ error_message }}</p> |
3139 | + </section> |
3140 | {% endblock %} |
3141 | diff --git a/ayllu/themes/default/templates/about.html b/ayllu/themes/default/templates/about.html |
3142 | index e319b72..652e78a 100644 |
3143 | --- a/ayllu/themes/default/templates/about.html |
3144 | +++ b/ayllu/themes/default/templates/about.html |
3145 | @@ -1,9 +1,6 @@ |
3146 | {% extends "base.html" %} |
3147 | {% block content %} |
3148 | - <section> |
3149 | - <article> |
3150 | - <header></header> |
3151 | - {{ blurb | safe }} |
3152 | - </article> |
3153 | - </section> |
3154 | + <section> |
3155 | + <article>{{ blurb | safe }}</article> |
3156 | + </section> |
3157 | {% endblock %} |
3158 | diff --git a/ayllu/themes/default/templates/authors.html b/ayllu/themes/default/templates/authors.html |
3159 | index 84eb9d4..6469e57 100644 |
3160 | --- a/ayllu/themes/default/templates/authors.html |
3161 | +++ b/ayllu/themes/default/templates/authors.html |
3162 | @@ -1,21 +1,23 @@ |
3163 | {% extends "base.html" %} |
3164 | {% block content %} |
3165 | - <section> |
3166 | - <article> |
3167 | - <header><h1>Authors</h1></header> |
3168 | - {% for author in authors %} |
3169 | - <article> |
3170 | - <div class="wide"> |
3171 | - <div> |
3172 | - <a href="/{{collection}}/{{name}}/log?username={{author.username | urlencode}}&email={{author.email | urlencode}}">{{author.username}}</a> |
3173 | - </div> |
3174 | - <div> |
3175 | - <span class="positive">+{{author.lines_added}}</span> |
3176 | - <span class="negative">-{{author.lines_removed}}</span> |
3177 | - {{author.percentage}}% ({{author.count}}) |
3178 | - </div> |
3179 | - </div> |
3180 | - </article> |
3181 | - {% endfor %} |
3182 | - </article> |
3183 | - {% endblock %} |
3184 | + <section> |
3185 | + <article> |
3186 | + <header> |
3187 | + <h1>Authors</h1> |
3188 | + </header> |
3189 | + {% for author in authors %} |
3190 | + <article> |
3191 | + <div class="wide"> |
3192 | + <div> |
3193 | + <a href="/{{ collection }}/{{ name }}/log?username={{ author.username | urlencode }}&email={{ author.email | urlencode }}">{{ author.username }}</a> |
3194 | + </div> |
3195 | + <div> |
3196 | + <span class="positive">+{{ author.lines_added }}</span> |
3197 | + <span class="negative">-{{ author.lines_removed }}</span> |
3198 | + {{ author.percentage }}% ({{ author.count }}) |
3199 | + </div> |
3200 | + </div> |
3201 | + </article> |
3202 | + {% endfor %} |
3203 | + </article> |
3204 | + {% endblock %} |
3205 | diff --git a/ayllu/themes/default/templates/base.html b/ayllu/themes/default/templates/base.html |
3206 | index 191259d..831e4cb 100644 |
3207 | --- a/ayllu/themes/default/templates/base.html |
3208 | +++ b/ayllu/themes/default/templates/base.html |
3209 | @@ -7,9 +7,7 @@ |
3210 | {% block title %}{{ title }}{% endblock %} |
3211 | </title> |
3212 | <link rel="stylesheet" href="/static/main.min.css" /> |
3213 | - <link href="/static/assets/ayllu_logo.svg" |
3214 | - rel="icon" |
3215 | - type="image/svg+xml" /> |
3216 | + <link href="/static/logo.svg" rel="icon" type="image/svg+xml" /> |
3217 | {% block head %}{% endblock %} |
3218 | </head> |
3219 | <body> |
3220 | @@ -18,15 +16,13 @@ |
3221 | {% block navigation %} |
3222 | {% include "nav.html" %} |
3223 | {% endblock %} |
3224 | - {% if fluid %} |
3225 | - <main class="container-fluid"> |
3226 | - {% else %} |
3227 | - <main class="container"> |
3228 | - {% endif %} |
3229 | + <main> |
3230 | + <div class="container"> |
3231 | {% block content %}{% endblock %} |
3232 | - </main> |
3233 | - <footer class="main"> |
3234 | - {% if render_time %}rendered in {{ render_time }}ms{% endif %} |
3235 | - </footer> |
3236 | - </body> |
3237 | - </html> |
3238 | + </div> |
3239 | + </main> |
3240 | + <footer> |
3241 | + {% if render_time %}rendered in {{ render_time }}ms{% endif %} |
3242 | + </footer> |
3243 | + </body> |
3244 | + </html> |
3245 | diff --git a/ayllu/themes/default/templates/blame.html b/ayllu/themes/default/templates/blame.html |
3246 | index 9a0a83b..f4a5941 100644 |
3247 | --- a/ayllu/themes/default/templates/blame.html |
3248 | +++ b/ayllu/themes/default/templates/blame.html |
3249 | @@ -1,33 +1,38 @@ |
3250 | {% import "macros.html" as macros %} |
3251 | {% extends "base.html" %} |
3252 | {% block content %} |
3253 | - <article> |
3254 | + <section class="stretch"> |
3255 | <header> |
3256 | - {{ macros::navigation(items=subnav_elements, title="Blame") }} |
3257 | + {{ macros::navigation(items=subnav_elements, title="Blame") }} |
3258 | </header> |
3259 | <section class="blame"> |
3260 | {% if is_renderable %} |
3261 | <article class="blame-left"> |
3262 | - <pre><table><tbody> |
3263 | - {%- for line in blame_lines -%} |
3264 | - {%- set n_lines = line.end - line.start -%} |
3265 | - <tr> |
3266 | - <td>{{line.author_name}} <a href="/{{collection}}/{{name}}/commit/{{line.commit_id}}">{{line.timestamp}}</a></td> |
3267 | - {%- for _ in range(end=n_lines-1) -%} |
3268 | - <tr><td> </td><td></td></tr> |
3269 | - {%- endfor -%} |
3270 | - {% endfor %}</tbody></table></pre> |
3271 | - </article> |
3272 | - <article class="blame-right"> |
3273 | - <pre>{{ content | safe }}</pre> |
3274 | - </article> |
3275 | - {% else %} |
3276 | - <article> |
3277 | - <header> |
3278 | + <table class="code"> |
3279 | + <tbody> |
3280 | + {%- for line in blame_lines -%} |
3281 | + {%- set n_lines = line.end - line.start -%} |
3282 | + <tr> |
3283 | + <td> |
3284 | + {{ line.author_name }} <a href="/{{ collection }}/{{ name }}/commit/{{ line.commit_id }}">{{ line.timestamp }}</a> |
3285 | + </td> |
3286 | + {%- for _ in range(end=n_lines-1) -%} |
3287 | + <tr> |
3288 | + <td> </td> |
3289 | + <td></td> |
3290 | + </tr> |
3291 | + {%- endfor -%} |
3292 | + </tr> |
3293 | + {% endfor %} |
3294 | + </tbody> |
3295 | + </table> |
3296 | + </article> |
3297 | + <article class="blame-right">{{ content.1 | safe }}</article> |
3298 | + {% else %} |
3299 | + <article> |
3300 | <h2>This content is not blameable</h2> |
3301 | - </header> |
3302 | - </article> |
3303 | - {% endif %} |
3304 | + </article> |
3305 | + {% endif %} |
3306 | + </section> |
3307 | </section> |
3308 | - </article> |
3309 | - {% endblock %} |
3310 | + {% endblock %} |
3311 | diff --git a/ayllu/themes/default/templates/blob.html b/ayllu/themes/default/templates/blob.html |
3312 | index bc4d2e9..76d8ddf 100644 |
3313 | --- a/ayllu/themes/default/templates/blob.html |
3314 | +++ b/ayllu/themes/default/templates/blob.html |
3315 | @@ -1,40 +1,40 @@ |
3316 | {% import "macros.html" as macros %} |
3317 | {% extends "base.html" %} |
3318 | {% block content %} |
3319 | - <section> |
3320 | - <article> |
3321 | - <header> |
3322 | - {{ macros::navigation(items=subnav_elements, title="Blob") }} |
3323 | - </br> |
3324 | - {%- if hint -%} |
3325 | - <span class="hint" style="color: {{color}}">{{hint}}</span></br> |
3326 | - {%- endif -%} |
3327 | - <span>{{file_name}}</span> |
3328 | - <span class="right"> {{ file_mode | filemode }} {{ file_size | human_bytes}} </span> |
3329 | - </header> |
3330 | - {% if is_binary %} |
3331 | - <div class="blob-preview"> |
3332 | - {% if is_image %} |
3333 | - <img src="{{ raw_url }}"></img> |
3334 | - {% elif is_video %} |
3335 | - <video controls> |
3336 | - <source src="{{raw_url}}" type="{{file_type}}" /> |
3337 | - <p><a href="{{raw_url}}">raw url</a></p> |
3338 | - </video> |
3339 | - {% elif is_audio %} |
3340 | - <audio src="{{raw_url}}" type="{{file_type}}"></audio> |
3341 | - {% else %} |
3342 | - <center><h3>Cannot render binary content</h3></center> |
3343 | - <a href="{{ raw_url }}">download</a> |
3344 | - {% endif %} |
3345 | - </div> |
3346 | - {% else %} |
3347 | - {% if is_markdown %} |
3348 | - <div class="readme">{{ content | safe }}</div> |
3349 | - {% else %} |
3350 | - <code class="highlighted">{{ content | safe }}</code> |
3351 | - {% endif %} |
3352 | - {% endif %} |
3353 | - </article> |
3354 | + <section class="column"> |
3355 | + {{ macros::navigation(items=subnav_elements, title="Blob") }} |
3356 | + {%- if hint -%} |
3357 | + <span class="hint" style="color: {{ color }}">{{ hint }}</span> |
3358 | + {%- endif -%} |
3359 | + <span>{{ file_name }}</span> |
3360 | + <span class="right">{{ file_mode | filemode }} {{ file_size | human_bytes }}</span> |
3361 | + {% if is_binary %} |
3362 | + <div class="blob-preview"> |
3363 | + {% if is_image %} |
3364 | + <img src="{{ raw_url }}"> |
3365 | + </img> |
3366 | + {% elif is_video %} |
3367 | + <video controls> |
3368 | + <source src="{{ raw_url }}" type="{{ file_type }}" /> |
3369 | + <p> |
3370 | + <a href="{{ raw_url }}">raw url</a> |
3371 | + </p> |
3372 | + </video> |
3373 | + {% elif is_audio %} |
3374 | + <audio src="{{ raw_url }}" type="{{ file_type }}"></audio> |
3375 | + {% else %} |
3376 | + <center> |
3377 | + <h3>Cannot render binary content</h3> |
3378 | + </center> |
3379 | + <a href="{{ raw_url }}">download</a> |
3380 | + {% endif %} |
3381 | + </div> |
3382 | + {% else %} |
3383 | + {% if is_markdown %} |
3384 | + <div class="readme">{{ content | safe }}</div> |
3385 | + {% else %} |
3386 | + {{ content | safe }} |
3387 | + {% endif %} |
3388 | + {% endif %} |
3389 | </section> |
3390 | {% endblock %} |
3391 | diff --git a/ayllu/themes/default/templates/branches.html b/ayllu/themes/default/templates/branches.html |
3392 | index 84ddc1d..d92ae8f 100644 |
3393 | --- a/ayllu/themes/default/templates/branches.html |
3394 | +++ b/ayllu/themes/default/templates/branches.html |
3395 | @@ -1,26 +1,27 @@ |
3396 | {% import "macros.html" as macros %} |
3397 | {% extends "base.html" %} |
3398 | {% block content %} |
3399 | - <section> |
3400 | - <article> |
3401 | - <header> |
3402 | - {{ macros::navigation(items=refnav, title="Branches") }} |
3403 | - </header> |
3404 | - {% for branch in branches %} |
3405 | - <article class="inner"> |
3406 | - <header class="wide"> |
3407 | - <div><h3><a href="/{{collection}}/{{name}}/tree/{{branch.name | urlencode }}">{{ branch.name }}</a></h3></div> |
3408 | - <div><h5>{{ branch.commit.epoch | friendly_time }}<h5></div> |
3409 | - </header> |
3410 | - <p>{{branch.commit.message}}</p> |
3411 | - <footer class="wide"> |
3412 | - <div>{{ branch.commit.author_name }}</div> |
3413 | - <div> |
3414 | - <a href="/{{collection}}/{{name}}/commit/{{branch.commit.id}}" role="button">{{branch.commit.id | truncate(length=8, end="")}}</a> |
3415 | - </div> |
3416 | - </footer> |
3417 | - </article> |
3418 | - {% endfor %} |
3419 | - </article> |
3420 | - </section> |
3421 | + <section class="stretch"> |
3422 | + {{ macros::navigation(items=refnav, title="Branches") }} |
3423 | + {% for branch in branches %} |
3424 | + <section class="branch card"> |
3425 | + <section class="segmented-4"> |
3426 | + <div> |
3427 | + <h5> |
3428 | + <a href="/{{ collection }}/{{ name }}/tree/{{ branch.name | urlencode }}">{{ branch.name }}</a> |
3429 | + </h5> |
3430 | + </div> |
3431 | + <div>{{ branch.head.epoch | friendly_time }}</div> |
3432 | + <div>{{ branch.head.author_name }}</div> |
3433 | + <div> |
3434 | + <a href="/{{ collection }}/{{ name }}/commit/{{ branch.head.id }}" |
3435 | + role="button">{{ branch.head.id | truncate(length=8, end="") }}</a> |
3436 | + </div> |
3437 | + </section> |
3438 | + <section class="message"> |
3439 | + <pre>{{ branch.head.message }}</pre> |
3440 | + </section> |
3441 | + </section> |
3442 | + {% endfor %} |
3443 | + </section> |
3444 | {% endblock %} |
3445 | diff --git a/ayllu/themes/default/templates/build.html b/ayllu/themes/default/templates/build.html |
3446 | index 2f667cc..b373e02 100644 |
3447 | --- a/ayllu/themes/default/templates/build.html |
3448 | +++ b/ayllu/themes/default/templates/build.html |
3449 | @@ -1,29 +1,31 @@ |
3450 | {% extends "base.html" %} |
3451 | {% block content %} |
3452 | - <section> |
3453 | - <article> |
3454 | - <header> |
3455 | - <h1>Build: {{ build.id }}</h1> |
3456 | - </header> |
3457 | - <table> |
3458 | - <thead> |
3459 | - <th> date </th> |
3460 | - <th> runtime </th> |
3461 | - <th> success </th> |
3462 | - </thead> |
3463 | - <tr> |
3464 | - <td> {{ build.timestamp }} </td> |
3465 | - <td> {{ build.runtime }} </td> |
3466 | - <td> {{ build.success }} </td> |
3467 | - </tr> |
3468 | - </table> |
3469 | - </article> |
3470 | - {% for step in steps %} |
3471 | - <article> |
3472 | - <header> {{ step.0 }} </header> |
3473 | - <code> {{ step.1 }} </code> |
3474 | - <code> {{ step.2 }} </code> |
3475 | - </article> |
3476 | - {% endfor %} |
3477 | - </section> |
3478 | + <section> |
3479 | + <article> |
3480 | + <header> |
3481 | + <h1>Build: {{ build.id }}</h1> |
3482 | + </header> |
3483 | + <table> |
3484 | + <thead> |
3485 | + <th>date</th> |
3486 | + <th>runtime</th> |
3487 | + <th>success</th> |
3488 | + </thead> |
3489 | + <tr> |
3490 | + <td>{{ build.timestamp }}</td> |
3491 | + <td>{{ build.runtime }}</td> |
3492 | + <td>{{ build.success }}</td> |
3493 | + </tr> |
3494 | + </table> |
3495 | + </article> |
3496 | + {% for step in steps %} |
3497 | + <article> |
3498 | + <header> |
3499 | + {{ step.0 }} |
3500 | + </header> |
3501 | + <code> {{ step.1 }} </code> |
3502 | + <code> {{ step.2 }} </code> |
3503 | + </article> |
3504 | + {% endfor %} |
3505 | + </section> |
3506 | {% endblock %} |
3507 | diff --git a/ayllu/themes/default/templates/builds.html b/ayllu/themes/default/templates/builds.html |
3508 | index 9e8e383..4f83aaa 100644 |
3509 | --- a/ayllu/themes/default/templates/builds.html |
3510 | +++ b/ayllu/themes/default/templates/builds.html |
3511 | @@ -1,26 +1,28 @@ |
3512 | {% extends "base.html" %} |
3513 | {% block content %} |
3514 | - <section> |
3515 | - <article> |
3516 | - <header> |
3517 | - <h1>Builds</h1> |
3518 | - </header> |
3519 | - <table> |
3520 | - <thead> |
3521 | - <th> id </th> |
3522 | - <th> date </th> |
3523 | - <th> runtime </th> |
3524 | - <th> success </th> |
3525 | - </thead> |
3526 | - {% for build in builds %} |
3527 | - <tr> |
3528 | - <td> <a href="/{{collection}}/{{name}}/builds/{{build.id}}">{{ build.id }}</a></td> |
3529 | - <td> {{ build.timestamp }} </td> |
3530 | - <td> {{ build.runtime }} </td> |
3531 | - <td> {{ build.success }} </td> |
3532 | - </tr> |
3533 | - {% endfor %} |
3534 | - </table> |
3535 | - </article> |
3536 | - </section> |
3537 | + <section> |
3538 | + <article> |
3539 | + <header> |
3540 | + <h1>Builds</h1> |
3541 | + </header> |
3542 | + <table> |
3543 | + <thead> |
3544 | + <th>id</th> |
3545 | + <th>date</th> |
3546 | + <th>runtime</th> |
3547 | + <th>success</th> |
3548 | + </thead> |
3549 | + {% for build in builds %} |
3550 | + <tr> |
3551 | + <td> |
3552 | + <a href="/{{ collection }}/{{ name }}/builds/{{ build.id }}">{{ build.id }}</a> |
3553 | + </td> |
3554 | + <td>{{ build.timestamp }}</td> |
3555 | + <td>{{ build.runtime }}</td> |
3556 | + <td>{{ build.success }}</td> |
3557 | + </tr> |
3558 | + {% endfor %} |
3559 | + </table> |
3560 | + </article> |
3561 | + </section> |
3562 | {% endblock %} |
3563 | diff --git a/ayllu/themes/default/templates/channel.html b/ayllu/themes/default/templates/channel.html |
3564 | index 81a29a2..e49bdd7 100644 |
3565 | --- a/ayllu/themes/default/templates/channel.html |
3566 | +++ b/ayllu/themes/default/templates/channel.html |
3567 | @@ -1,27 +1,27 @@ |
3568 | {% import "macros.html" as macros %} |
3569 | {% extends "base.html" %} |
3570 | {% block content %} |
3571 | - <section> |
3572 | - <article> |
3573 | - <header> |
3574 | - {{ macros::navigation(items=discnav, title=channel) }} |
3575 | - </header> |
3576 | - <table> |
3577 | - <thead> |
3578 | - <th> nick </th> |
3579 | - <th> timestamp </th> |
3580 | - <th> message</th> |
3581 | - </thead> |
3582 | - <tbody> |
3583 | - {% for message in messages %} |
3584 | - <tr> |
3585 | - <td> {{ message.nickname }} </td> |
3586 | - <td> {{ message.timestamp }} </td> |
3587 | - <td>{{ message.body | escape }}</td> |
3588 | - </tr> |
3589 | - {% endfor %} |
3590 | - </tbody> |
3591 | - </table> |
3592 | - </article> |
3593 | - </section> |
3594 | + <section> |
3595 | + <article> |
3596 | + <header> |
3597 | + {{ macros::navigation(items=discnav, title=channel) }} |
3598 | + </header> |
3599 | + <table> |
3600 | + <thead> |
3601 | + <th>nick</th> |
3602 | + <th>timestamp</th> |
3603 | + <th>message</th> |
3604 | + </thead> |
3605 | + <tbody> |
3606 | + {% for message in messages %} |
3607 | + <tr> |
3608 | + <td>{{ message.nickname }}</td> |
3609 | + <td>{{ message.timestamp }}</td> |
3610 | + <td>{{ message.body | escape }}</td> |
3611 | + </tr> |
3612 | + {% endfor %} |
3613 | + </tbody> |
3614 | + </table> |
3615 | + </article> |
3616 | + </section> |
3617 | {% endblock %} |
3618 | diff --git a/ayllu/themes/default/templates/channels.html b/ayllu/themes/default/templates/channels.html |
3619 | index 75e4a03..8926e29 100644 |
3620 | --- a/ayllu/themes/default/templates/channels.html |
3621 | +++ b/ayllu/themes/default/templates/channels.html |
3622 | @@ -1,27 +1,29 @@ |
3623 | {% import "macros.html" as macros %} |
3624 | {% extends "base.html" %} |
3625 | {% block content %} |
3626 | - <section> |
3627 | - <article> |
3628 | - <header> |
3629 | - {{ macros::navigation(items=discnav, title="XMPP Channels") }} |
3630 | - </header> |
3631 | - <table> |
3632 | - <thead> |
3633 | - <th> name </th> |
3634 | - <th> online </th> |
3635 | - <th> messages </th> |
3636 | - </thead> |
3637 | - <tbody> |
3638 | - {% for channel in channels %} |
3639 | - <tr> |
3640 | - <td><a href="/discuss/xmpp/{{channel.name}}">{{ channel.name }}</a></td> |
3641 | - <td>{{ channel.n_users }}</td> |
3642 | - <td>{{ channel.n_messages }}</td> |
3643 | - </tr> |
3644 | - {% endfor %} |
3645 | - </tbody> |
3646 | - </table> |
3647 | - </article> |
3648 | - </section> |
3649 | + <section> |
3650 | + <article> |
3651 | + <header> |
3652 | + {{ macros::navigation(items=discnav, title="XMPP Channels") }} |
3653 | + </header> |
3654 | + <table> |
3655 | + <thead> |
3656 | + <th>name</th> |
3657 | + <th>online</th> |
3658 | + <th>messages</th> |
3659 | + </thead> |
3660 | + <tbody> |
3661 | + {% for channel in channels %} |
3662 | + <tr> |
3663 | + <td> |
3664 | + <a href="/discuss/xmpp/{{ channel.name }}">{{ channel.name }}</a> |
3665 | + </td> |
3666 | + <td>{{ channel.n_users }}</td> |
3667 | + <td>{{ channel.n_messages }}</td> |
3668 | + </tr> |
3669 | + {% endfor %} |
3670 | + </tbody> |
3671 | + </table> |
3672 | + </article> |
3673 | + </section> |
3674 | {% endblock %} |
3675 | diff --git a/ayllu/themes/default/templates/chart.html b/ayllu/themes/default/templates/chart.html |
3676 | index ed03896..040b61a 100644 |
3677 | --- a/ayllu/themes/default/templates/chart.html |
3678 | +++ b/ayllu/themes/default/templates/chart.html |
3679 | @@ -1,20 +1,10 @@ |
3680 | + {% import "macros.html" as macros %} |
3681 | {% extends "base.html" %} |
3682 | {% block content %} |
3683 | - <section> |
3684 | - <article> |
3685 | - <header> |
3686 | - <nav> |
3687 | - <ul><h1>{{ chart_title }}</h1></ul> |
3688 | - <ul> |
3689 | - {% for item in chartnav %} |
3690 | - <li {% if item.2 %} class="active" {% endif %}> <a href="{{ item.1 }}">{{ item.0 }}</a></li> |
3691 | - {% endfor %} |
3692 | - </ul> |
3693 | - </nav> |
3694 | - </header> |
3695 | - <section class="viewer"> |
3696 | - {{ chart | safe }} |
3697 | + <section class="column"> |
3698 | + {{ macros::navigation(items=chartnav, title=chart_title) }} |
3699 | + <section class="viewer"> |
3700 | + {{ chart | safe }} |
3701 | + </section> |
3702 | </section> |
3703 | - </article> |
3704 | - </section> |
3705 | {% endblock %} |
3706 | diff --git a/ayllu/themes/default/templates/collection.html b/ayllu/themes/default/templates/collection.html |
3707 | index 0b8224b..e92ca3b 100644 |
3708 | --- a/ayllu/themes/default/templates/collection.html |
3709 | +++ b/ayllu/themes/default/templates/collection.html |
3710 | @@ -1,23 +1,24 @@ |
3711 | {% extends "base.html" %} |
3712 | {% block content %} |
3713 | - <section class="index"> |
3714 | - <article> |
3715 | - <header> |
3716 | - <span class="h1">{{ collection.name }} </span> |
3717 | - <span class="right">{{ collection.description }}</b> {%- if is_hidden -%} <span class="negative">[hidden]</span> {%- endif -%}</span> |
3718 | - </header> |
3719 | - {% for repo in repositories %} |
3720 | - <article> |
3721 | - <span class="header"> |
3722 | - <a href="/{{collection.name}}/{{repo.name}}">{{ repo.name }}</a> |
3723 | - </span> |
3724 | - <span class="right">{{repo.description}}</span> |
3725 | - <footer> |
3726 | - <span><small>{{repo.age}}</small></span> |
3727 | - <span class="right">{{repo.activity}}</span> |
3728 | - </footer> |
3729 | - </article> |
3730 | - {% endfor %} |
3731 | - </article> |
3732 | - </section> |
3733 | + <section class="column"> |
3734 | + <header> |
3735 | + <h1> |
3736 | + <a href="/{{ collection.name }}">{{ collection.name }}</a> |
3737 | + {%- if is_hidden %} <span class="negative">[hidden]</span> {%- endif -%} |
3738 | + </h1> |
3739 | + {{ collection.description }} |
3740 | + </header> |
3741 | + {% for repo in repositories %} |
3742 | + <article> |
3743 | + <section> |
3744 | + <span class="bold"><a href="/{{ collection.name }}/{{ repo.name }}">{{ repo.name }}</a></span> |
3745 | + <span class="right">{{ repo.description }}</span> |
3746 | + </section> |
3747 | + <section> |
3748 | + <span>{{ repo.age }}</span> |
3749 | + <span class="right">{{ repo.activity }}</span> |
3750 | + </section> |
3751 | + </article> |
3752 | + {% endfor %} |
3753 | + </section> |
3754 | {% endblock %} |
3755 | diff --git a/ayllu/themes/default/templates/commit.html b/ayllu/themes/default/templates/commit.html |
3756 | index b23617e..6c9b9c6 100644 |
3757 | --- a/ayllu/themes/default/templates/commit.html |
3758 | +++ b/ayllu/themes/default/templates/commit.html |
3759 | @@ -1,61 +1,48 @@ |
3760 | {% extends "base.html" %} |
3761 | + {% import "macros.html" as macros %} |
3762 | {% block content %} |
3763 | - <article> |
3764 | - <header class="wide"> |
3765 | - <h1>Commit</h1> |
3766 | - <span class="right">{{ commit.epoch | friendly_time }}</span> |
3767 | - </header> |
3768 | - <article> |
3769 | - <div class="wide"> |
3770 | - <div> <b> Author: </b> </div> |
3771 | - <div> |
3772 | - <a href="/{{collection}}/{{name}}/log?username={{commit.author_name | urlencode}}&email={{commit.author_email | urlencode}}">{{commit.author_name}}</a> |
3773 | - [<a href="mailto://{{commit.author_email}}">{{commit.author_email}}</a>] |
3774 | - </div> |
3775 | - </div> |
3776 | - {% if distinct_author %} |
3777 | - <div class="wide"> |
3778 | - <div><b>Committer:</b></div> |
3779 | - <div> |
3780 | - <a href="#">{{commit.committer_name}}</a> |
3781 | - [<a href="mailto://{{commit.committer_email}}">{{commit.committer_email}}</a>] |
3782 | - {{ commit.committer_epoch | format_epoch }} |
3783 | - </div> |
3784 | - </div> |
3785 | - {% endif %} |
3786 | - <div class="wide"> |
3787 | - <div><b>Hash:</b></div> |
3788 | - {% if commit.is_verified %} |
3789 | - <span class="positive"> |
3790 | - {% else %} |
3791 | - <span class="negative"> |
3792 | - {% endif %} |
3793 | - {{commit.id}} |
3794 | - </span> |
3795 | - </div> |
3796 | - <div class="wide"> |
3797 | - <div> <b> Time: </b> </div> |
3798 | - <div> {{ commit.author_epoch | format_epoch }} </div> |
3799 | - </div> |
3800 | - <b> Message: </b> |
3801 | - </br> |
3802 | - <i>{{ commit.summary }}</i> |
3803 | - </article> |
3804 | - {% if extended_commit_message %} |
3805 | - <div class="commit_message"> |
3806 | - <pre>{{ commit.message }}</pre> |
3807 | - </div> |
3808 | - {% endif %} |
3809 | - <footer> |
3810 | - <span class="positive">+{{stats.insertions}}</span> |
3811 | - <span class="negative">-{{stats.deletions}}</span> |
3812 | - <span>+/-{{stats.files_changed}}</span> |
3813 | - <span class="right"> |
3814 | - <a href="/{{collection}}/{{name}}/tree/{{commit_hash}}" role="button">browse</a> |
3815 | - </span> |
3816 | - </footer> |
3817 | - </article> |
3818 | - <article> |
3819 | - <pre>{{diff | safe}}</pre> |
3820 | - </article> |
3821 | + <section class="stretch"> |
3822 | + <section> |
3823 | + <span><b>Author:</b></span> |
3824 | + <span class="right"> |
3825 | + <a href="/{{ collection }}/{{ name }}/log?username={{ commit.author_name | urlencode }}&email={{ commit.author_email | urlencode }}">{{ commit.author_name }}</a> |
3826 | + [<a href="mailto://{{ commit.author_email }}">{{ commit.author_email }}</a>] |
3827 | + </span> |
3828 | + </section> |
3829 | + {% if distinct_author %} |
3830 | + <section> |
3831 | + <span><b>Committer:</b></span> |
3832 | + <span class="right"> |
3833 | + <a href="#">{{ commit.committer_name }}</a> |
3834 | + [<a href="mailto://{{ commit.committer_email }}">{{ commit.committer_email }}</a>] |
3835 | + {{ commit.committer_epoch | format_epoch }} |
3836 | + </span> |
3837 | + </section> |
3838 | + {% endif %} |
3839 | + <section> |
3840 | + <span><b>Hash:</b></span> |
3841 | + <span class="right {% if commit.is_verified -%} positive {%- else -%} negative {%- endif -%}">{{ commit.id }}</span> |
3842 | + </section> |
3843 | + <section> |
3844 | + <span><b>Timestamp:</b></span> |
3845 | + <span class="right">{{ commit.author_epoch | format_epoch }} ({{ commit.epoch | friendly_time }})</span> |
3846 | + </section> |
3847 | + <br /> |
3848 | + <span class="positive">+{{ stats.insertions }}</span> |
3849 | + <span class="negative">-{{ stats.deletions }}</span> |
3850 | + <span>+/-{{ stats.files_changed }}</span> |
3851 | + <span> |
3852 | + <a href="/{{ collection }}/{{ name }}/tree/{{ commit_hash }}" |
3853 | + role="button">browse</a> |
3854 | + </span> |
3855 | + <section> |
3856 | + <b>{{ commit.summary }}</b> |
3857 | + {% if extended_commit_message %} |
3858 | + <br /> |
3859 | + <br /> |
3860 | + <p class="commit-message">{{ commit.message }}</p> |
3861 | + {% endif %} |
3862 | + </section> |
3863 | + {{ diff.1 | safe }} |
3864 | + </section> |
3865 | {% endblock %} |
3866 | diff --git a/ayllu/themes/default/templates/config.html b/ayllu/themes/default/templates/config.html |
3867 | index 349356a..d1191be 100644 |
3868 | --- a/ayllu/themes/default/templates/config.html |
3869 | +++ b/ayllu/themes/default/templates/config.html |
3870 | @@ -1,25 +1,44 @@ |
3871 | {% extends "base.html" %} |
3872 | {% block content %} |
3873 | - <div class="container"> |
3874 | - <article> |
3875 | - <header><h1>Site Configuration</h1></header> |
3876 | - <form action="/config" method="POST"> |
3877 | - <label for="theme"><h5>items-per-page</h5></label> |
3878 | - <select id="items_per_page" name="items_per_page" required> |
3879 | - <option value="50" {%- if config.items_per_page == 50 -%} selected {%- endif -%}>50</option> |
3880 | - <option value="100" {%- if config.items_per_page == 100 -%} selected {%- endif -%}>100</option> |
3881 | - <option value="150" {%- if config.items_per_page == 150 -%} selected {%- endif -%}>150</option> |
3882 | - <option value="200" {%- if config.items_per_page == 200 -%} selected {%- endif -%}>200</option> |
3883 | - </select> |
3884 | - <label for="theme"><h5>theme</h5></label> |
3885 | - <select id="theme" name="theme" required> |
3886 | - {% for theme in themes %} |
3887 | - <option value="{{theme}}" {%- if theme == config.theme -%} selected {%- endif -%}>{{ theme }}</option> |
3888 | - {% endfor %} |
3889 | - </select> |
3890 | - <!-- Button --> |
3891 | - <button type="submit">Submit</button> |
3892 | - </form> |
3893 | - </article> |
3894 | - </div> |
3895 | + <section class="config-panel"> |
3896 | + <header> |
3897 | + <h1>Site Configuration</h1> |
3898 | + </header> |
3899 | + <form action="/config" method="POST"> |
3900 | + <label for="theme"> |
3901 | + <h3>items-per-page</h3> |
3902 | + </label> |
3903 | + <select id="items_per_page" name="items_per_page" required> |
3904 | + <option value="50" |
3905 | + {%- if config.items_per_page == 50 -%} |
3906 | + selected |
3907 | + {%- endif -%}>50</option> |
3908 | + <option value="100" |
3909 | + {%- if config.items_per_page == 100 -%} |
3910 | + selected |
3911 | + {%- endif -%}>100</option> |
3912 | + <option value="150" |
3913 | + {%- if config.items_per_page == 150 -%} |
3914 | + selected |
3915 | + {%- endif -%}>150</option> |
3916 | + <option value="200" |
3917 | + {%- if config.items_per_page == 200 -%} |
3918 | + selected |
3919 | + {%- endif -%}>200</option> |
3920 | + </select> |
3921 | + <label for="theme"> |
3922 | + <h3>theme</h3> |
3923 | + </label> |
3924 | + <select id="theme" name="theme" required> |
3925 | + {% for theme in themes %} |
3926 | + <option value="{{ theme }}" |
3927 | + {%- if theme == config.theme -%} |
3928 | + selected |
3929 | + {%- endif -%}>{{ theme }}</option> |
3930 | + {% endfor %} |
3931 | + </select> |
3932 | + <!-- Button --> |
3933 | + <button type="submit">Submit</button> |
3934 | + </form> |
3935 | + </section> |
3936 | {% endblock %} |
3937 | diff --git a/ayllu/themes/default/templates/graphql.html b/ayllu/themes/default/templates/graphql.html |
3938 | deleted file mode 100644 |
3939 | index b8d9155..0000000 |
3940 | --- a/ayllu/themes/default/templates/graphql.html |
3941 | +++ /dev/null |
3942 | @@ -1,6 +0,0 @@ |
3943 | - {% extends "base.html" %} |
3944 | - {% block content %} |
3945 | - <p> |
3946 | - Graphql API |
3947 | - </p> |
3948 | - {% endblock %} |
3949 | diff --git a/ayllu/themes/default/templates/index.html b/ayllu/themes/default/templates/index.html |
3950 | index 40ac8a5..87eb054 100644 |
3951 | --- a/ayllu/themes/default/templates/index.html |
3952 | +++ b/ayllu/themes/default/templates/index.html |
3953 | @@ -1,37 +1,40 @@ |
3954 | {% extends "base.html" %} |
3955 | {% block content %} |
3956 | - <section class="index"> |
3957 | - <header class="wide"><div><h3>Collections</h3></div> |
3958 | - <div> |
3959 | - <div class="icon-header"> |
3960 | - <h3>Subscribe</h3> |
3961 | - {{ "feed" | emoji | safe }} |
3962 | - </div> |
3963 | - [<a href="/rss/firehose.xml">*</a>, |
3964 | - <a href="/rss/1d.xml">1d</a>, |
3965 | - <a href="/rss/1w.xml">1w</a>, |
3966 | - <a href="/rss/1m.xml">1m</a>] |
3967 | - </div> |
3968 | - </header> |
3969 | - {% for collection in collections %} |
3970 | - <article class="index-listing"> |
3971 | - <header class="wide"> |
3972 | - <div><h5><a href="/{{collection.name}}">{{ collection.name }}</a></h5></div> |
3973 | - <div><b>{{ collection.description }}</b></div> |
3974 | - </header> |
3975 | - {% for repo in collection.repositories %} |
3976 | - <article> |
3977 | - <header class="wide"> |
3978 | - <div><a href="/{{collection.name}}/{{repo.name}}">{{ repo.name }}</a></div> |
3979 | - <div>{{repo.description}}</div> |
3980 | - </header> |
3981 | - <div class="wide"> |
3982 | - <div>{{repo.age}}</div> |
3983 | - <div>{{repo.activity}}</div> |
3984 | - </footer> |
3985 | - </article> |
3986 | - {% endfor %} |
3987 | - </article> |
3988 | - {% endfor %} |
3989 | - </section> |
3990 | - {% endblock %} |
3991 | + <section class="column"> |
3992 | + <section class="collections"> |
3993 | + <header> |
3994 | + <h2>Collections</h2> |
3995 | + <div class="rss-links"> |
3996 | + {{ "feed.svg" | emoji | safe }} |
3997 | + <p> |
3998 | + [<a href="/rss/firehose.xml">*</a>, |
3999 | + <a href="/rss/1d.xml">1d</a>, |
4000 | + <a href="/rss/1w.xml">1w</a>, |
4001 | + <a href="/rss/1m.xml">1m</a>] |
4002 | + </p> |
4003 | + </div> |
4004 | + </header> |
4005 | + </section> |
4006 | + <section> |
4007 | + {% for collection in collections %} |
4008 | + <article class="collection"> |
4009 | + <h3> |
4010 | + <a href="/{{ collection.name }}">{{ collection.name }}</a> |
4011 | + </h3> |
4012 | + <span class="description">{{ collection.description }}</span> |
4013 | + <section class="repositories"> |
4014 | + {% for repo in collection.repositories %} |
4015 | + <article class="segmented-4 card"> |
4016 | + <div class="name"> |
4017 | + <a href="/{{ collection.name }}/{{ repo.name }}">{{ repo.name }}</a> |
4018 | + </div> |
4019 | + <div class="description">{{ repo.description }}</div> |
4020 | + <div class="age">{{ repo.age }}</div> |
4021 | + <div class="activity">{{ repo.activity }}</div> |
4022 | + </article> |
4023 | + {% endfor %} |
4024 | + </section> |
4025 | + </article> |
4026 | + {% endfor %} |
4027 | + </section> |
4028 | + {% endblock %} |
4029 | diff --git a/ayllu/themes/default/templates/lists.html b/ayllu/themes/default/templates/lists.html |
4030 | index afbcce5..0f413de 100644 |
4031 | --- a/ayllu/themes/default/templates/lists.html |
4032 | +++ b/ayllu/themes/default/templates/lists.html |
4033 | @@ -1,29 +1,31 @@ |
4034 | {% import "macros.html" as macros %} |
4035 | {% extends "base.html" %} |
4036 | {% block content %} |
4037 | - <section> |
4038 | - <article> |
4039 | - <header> |
4040 | - <h1> Mailing Lists </h1> |
4041 | - </header> |
4042 | - <table> |
4043 | - <thead> |
4044 | - <th> id </th> |
4045 | - <th> name </th> |
4046 | - <th> description </th> |
4047 | - <th> address </th> |
4048 | - </thead> |
4049 | - <tbody> |
4050 | - {% for list in lists %} |
4051 | - <tr> |
4052 | - <td><a href="/mail/{{list.id}}">{{ list.id }}</a></td> |
4053 | - <td>{{ list.name }}</td> |
4054 | - <td>{{ list.description }}</td> |
4055 | - <td>{{ list.address }}</td> |
4056 | - </tr> |
4057 | - {% endfor %} |
4058 | - </tbody> |
4059 | - </table> |
4060 | - </article> |
4061 | - </section> |
4062 | + <section> |
4063 | + <article> |
4064 | + <header> |
4065 | + <h1>Mailing Lists</h1> |
4066 | + </header> |
4067 | + <table> |
4068 | + <thead> |
4069 | + <th>id</th> |
4070 | + <th>name</th> |
4071 | + <th>description</th> |
4072 | + <th>address</th> |
4073 | + </thead> |
4074 | + <tbody> |
4075 | + {% for list in lists %} |
4076 | + <tr> |
4077 | + <td> |
4078 | + <a href="/mail/{{ list.id }}">{{ list.id }}</a> |
4079 | + </td> |
4080 | + <td>{{ list.name }}</td> |
4081 | + <td>{{ list.description }}</td> |
4082 | + <td>{{ list.address }}</td> |
4083 | + </tr> |
4084 | + {% endfor %} |
4085 | + </tbody> |
4086 | + </table> |
4087 | + </article> |
4088 | + </section> |
4089 | {% endblock %} |
4090 | diff --git a/ayllu/themes/default/templates/log.html b/ayllu/themes/default/templates/log.html |
4091 | index fe97650..7710405 100644 |
4092 | --- a/ayllu/themes/default/templates/log.html |
4093 | +++ b/ayllu/themes/default/templates/log.html |
4094 | @@ -1,61 +1,38 @@ |
4095 | {% import "macros.html" as macros %} |
4096 | {% extends "base.html" %} |
4097 | {% block content %} |
4098 | - <section> |
4099 | - <article> |
4100 | - {% if file_view %} |
4101 | - <header> |
4102 | - {{ macros::navigation(items=subnav_elements, title="Log") }} |
4103 | - </header> |
4104 | - {% else %} |
4105 | - <header> |
4106 | - <h1>Log</h1> |
4107 | - </header> |
4108 | - {% endif %} |
4109 | - <table class="commits"> |
4110 | - <thead> |
4111 | - <tr> |
4112 | - <th class="collapse">Author</th> |
4113 | - <th class="collapse">Signature</th> |
4114 | - <!--<th class="collapse">Hash</th>--> |
4115 | - <th>Message</th> |
4116 | - <th>Date</th> |
4117 | - </tr> |
4118 | - </thead> |
4119 | - <tbody> |
4120 | - {% for commit in commits %} |
4121 | - <tr> |
4122 | - <td class="collapse"><a href="/{{collection}}/{{name}}/log?username={{commit.author_name | urlencode}}&email={{commit.author_email | urlencode}}">{{commit.author_name}}</a></td> |
4123 | - <!-- <td class="collapse"> 🔒......</td>--> |
4124 | - <td class="collapse"> |
4125 | - {% if commit.is_verified %} |
4126 | - <span class="positive"> |
4127 | - {% else %} |
4128 | - <span class="negative"> |
4129 | - {% endif %} |
4130 | - {{ commit.id | truncate(length=8, end="") }} |
4131 | - </span> |
4132 | - </td> |
4133 | - <td class="message"> |
4134 | - <a href="/{{collection}}/{{name}}/commit/{{commit.id}}"> |
4135 | - {{ commit.summary | truncate(length=80) }}</a> |
4136 | - {% if commit.is_extended %} |
4137 | - <br/> |
4138 | - <br/> |
4139 | - <pre>{{ commit.message }}</pre> |
4140 | - {% endif %} |
4141 | - </td> |
4142 | - <td> {{ commit.epoch | friendly_time }} </td> |
4143 | - </tr> |
4144 | - {% endfor %} |
4145 | - </tbody> |
4146 | - </table> |
4147 | - {% if has_more %} |
4148 | - <footer class="pagination"> |
4149 | - {%- set last_commit = commits | last -%} |
4150 | - <span class="right"><a href="/{{collection}}/{{name}}/log/{{last_commit.id}}"><b>next</b></a></span> |
4151 | - </footer> |
4152 | - {% endif %} |
4153 | - </article> |
4154 | - </section> |
4155 | - {% endblock %} |
4156 | + <div class="stretch"> |
4157 | + {% for commit in commits %} |
4158 | + <section class="commit card"> |
4159 | + <section class="segmented-3"> |
4160 | + <div class="signature"> |
4161 | + {% if commit.is_verified %} |
4162 | + <span class="positive"> |
4163 | + {% else %} |
4164 | + <span class="negative"> |
4165 | + {% endif %} |
4166 | + <a href="/{{ collection }}/{{ name }}/commit/{{ commit.id }}">{{ commit.id | truncate(length=16, end="") }}</a> |
4167 | + </span> |
4168 | + </div> |
4169 | + <div class="author"> |
4170 | + <a href="/{{ collection }}/{{ name }}/log?username={{ commit.author_name | urlencode }}&email={{ commit.author_email | urlencode }}">{{ commit.author_name }}</a> |
4171 | + </div> |
4172 | + <div class="timestamp">{{ commit.epoch | friendly_time }}</div> |
4173 | + </section> |
4174 | + <div class="message"> |
4175 | + {% if commit.is_extended %} |
4176 | + <pre>{{ commit.message }}</pre> |
4177 | + {% else %} |
4178 | + {{ commit.summary }} |
4179 | + {% endif %} |
4180 | + </div> |
4181 | + </section> |
4182 | + {% endfor %} |
4183 | + {% if has_more %} |
4184 | + <footer class="pagination"> |
4185 | + {%- set last_commit = commits | last -%} |
4186 | + <span class="right"><a href="/{{ collection }}/{{ name }}/log/{{ last_commit.id }}"><b>next</b></a></span> |
4187 | + </footer> |
4188 | + {% endif %} |
4189 | + </div> |
4190 | + {% endblock %} |
4191 | diff --git a/ayllu/themes/default/templates/macros.html b/ayllu/themes/default/templates/macros.html |
4192 | index c636ae9..4d07b8c 100644 |
4193 | --- a/ayllu/themes/default/templates/macros.html |
4194 | +++ b/ayllu/themes/default/templates/macros.html |
4195 | @@ -1,10 +1,16 @@ |
4196 | {% macro navigation(items, title="") %} |
4197 | - <nav> |
4198 | - <ul><h1>{{title}}</h1></ul> |
4199 | - <ul> |
4200 | - {% for item in items %} |
4201 | - <li {% if item.2 %} class="active" {% endif %}> <a href="{{ item.1 }}">{{ item.0 }}</a></li> |
4202 | - {% endfor %} |
4203 | - </ul> |
4204 | - </nav> |
4205 | + <nav class="subnav"> |
4206 | + <ul> |
4207 | + <h4>{{ title }}</h4> |
4208 | + </ul> |
4209 | + <ul> |
4210 | + {% for item in items %} |
4211 | + <li {% if item.2 %}class="active"{% endif %}> |
4212 | + <a href="{{ item.1 }}">{{ item.0 }}</a> |
4213 | + </li> |
4214 | + {% endfor %} |
4215 | + </ul> |
4216 | + </nav> |
4217 | {% endmacro navigation %} |
4218 | + {% macro commit_badge(commit, extended=false) %} |
4219 | + {% endmacro commit_badge %} |
4220 | diff --git a/ayllu/themes/default/templates/nav.html b/ayllu/themes/default/templates/nav.html |
4221 | index 2492a79..5a502e6 100644 |
4222 | --- a/ayllu/themes/default/templates/nav.html |
4223 | +++ b/ayllu/themes/default/templates/nav.html |
4224 | @@ -1,16 +1,12 @@ |
4225 | <nav> |
4226 | - <ul> |
4227 | - <li> |
4228 | - <a href="{%- if subpath_mode -%}/browse{%- else -%}/{%- endif -%}"> |
4229 | - <div class="logo">{{ "textile-pattern-1" | emoji | safe }} |
4230 | - <h3> </h3> |
4231 | - </div> |
4232 | - </a> |
4233 | - </li> |
4234 | - </ul> |
4235 | - <ul> |
4236 | - {% for item in nav_elements %} |
4237 | - <li {% if item.2 %} class="active" {% endif %}> <a href="{{ item.1 }}">{{ item.0 }}</a></li> |
4238 | - {% endfor %} |
4239 | - </ul> |
4240 | + <a href="{%- if subpath_mode -%}/browse{%- else -%}/{%- endif -%}"> |
4241 | + <div class="logo">{{ "logo.svg" | emoji | safe }}</div> |
4242 | + </a> |
4243 | + <ul> |
4244 | + {% for item in nav_elements %} |
4245 | + <li {% if item.2 %}class="active"{% endif %}> |
4246 | + <a href="{{ item.1 }}">{{ item.0 }}</a> |
4247 | + </li> |
4248 | + {% endfor %} |
4249 | + </ul> |
4250 | </nav> |
4251 | diff --git a/ayllu/themes/default/templates/post.html b/ayllu/themes/default/templates/post.html |
4252 | index 10a0e41..5880bb1 100644 |
4253 | --- a/ayllu/themes/default/templates/post.html |
4254 | +++ b/ayllu/themes/default/templates/post.html |
4255 | @@ -1,16 +1,21 @@ |
4256 | {% extends "base.html" %} |
4257 | {% block content %} |
4258 | - <section class="thread-view"> |
4259 | - <article> |
4260 | - <header> |
4261 | - <h1>{{message.message_id}}</h1></br> |
4262 | - <h4> Export Message </h4> |
4263 | - <p> <a href="/mail/export/{{list_id}}/{{thread_id}}/{{message.message_id}}">mbox</a><p> |
4264 | - <b>From: {{ message.from_address }}</b></br> |
4265 | - <b>Subject: {{ message.subject }}</b></br> |
4266 | - <span class="right">{{ message.created_at | format_epoch }}</span> |
4267 | - </header> |
4268 | - <pre>{{ message.text | safe }}</pre> |
4269 | - </article> |
4270 | + <section class="thread-view"> |
4271 | + <article> |
4272 | + <header> |
4273 | + <h1>{{ message.message_id }}</h1> |
4274 | + </br> |
4275 | + <h4>Export Message</h4> |
4276 | + <p> |
4277 | + <a href="/mail/export/{{ list_id }}/{{ thread_id }}/{{ message.message_id }}">mbox</a> |
4278 | + <p> |
4279 | + <b>From: {{ message.from_address }}</b> |
4280 | + </br> |
4281 | + <b>Subject: {{ message.subject }}</b> |
4282 | + </br> |
4283 | + <span class="right">{{ message.created_at | format_epoch }}</span> |
4284 | + </header> |
4285 | + <pre>{{ message.text | safe }}</pre> |
4286 | + </article> |
4287 | </section> |
4288 | {% endblock %} |
4289 | diff --git a/ayllu/themes/default/templates/repo.html b/ayllu/themes/default/templates/repo.html |
4290 | index 631f670..20c69a6 100644 |
4291 | --- a/ayllu/themes/default/templates/repo.html |
4292 | +++ b/ayllu/themes/default/templates/repo.html |
4293 | @@ -1,178 +1,157 @@ |
4294 | {% extends "base.html" %} |
4295 | {% block content %} |
4296 | - {% if show_details %} |
4297 | - <div class="repo-container"> |
4298 | - {% endif %} |
4299 | - <section class="repo-left"> |
4300 | - <article class=tree> |
4301 | - <header class="tree-preamble"> |
4302 | - <div class="wide"> |
4303 | - <span>{{ latest_commit.author_name }} {{latest_commit.epoch | friendly_time }}</span> |
4304 | - <h6>{{ commit_count }} commits</h6> |
4305 | - </div> |
4306 | - <div> |
4307 | - <span class="right"> |
4308 | - <h6><b>{{refname}}</b></h6> |
4309 | - </span> |
4310 | - </div> |
4311 | - {% if latest_commit.is_verified %} |
4312 | - <span class="positive"> |
4313 | - {% else %} |
4314 | - <span class="negative"> |
4315 | - {% endif %} |
4316 | - {{latest_commit.id | truncate(length=8, end="")}} |
4317 | - </span> |
4318 | - </br> |
4319 | - <a href="/{{collection}}/{{name}}/commit/{{latest_commit.id}}"> |
4320 | - {{latest_commit.summary | truncate(length=60)}} |
4321 | - </a> |
4322 | - </header> |
4323 | - <div class="tree"> |
4324 | - <table> |
4325 | - <thead> |
4326 | - <tr> |
4327 | - <th scope="col">file</th> |
4328 | - <th class="collapse" scope="col">commit</th> |
4329 | - <th class="expand-xl" scope="col">size</th> |
4330 | - <th class="expand-xl" scope="col">mode</th> |
4331 | - <th scope="col">time</th> |
4332 | - </tr> |
4333 | - </thead> |
4334 | - <tbody> |
4335 | - {% for item in tree %} |
4336 | - <tr> |
4337 | - {% if item.0.submodule %} |
4338 | - <td>{{ item.0.name }} @ {{ item.0.submodule }}</td> |
4339 | - {% else %} |
4340 | - <td> |
4341 | - <a href="{{item.0.name | make_url(kind=item.0.kind)}}"> |
4342 | - {{item.0.name}} |
4343 | - {% if item.0.kind == "Submodule" %} |
4344 | - <span class="tiny">ref</span> |
4345 | - {% endif %} |
4346 | - {% if item.0.kind == "Pointer" %} |
4347 | - <span class="tiny">ptr</span> |
4348 | - {% endif %} |
4349 | - </a> |
4350 | - </td> |
4351 | - {% endif %} |
4352 | - <td class="collapse"> |
4353 | - <a href="/{{collection}}/{{name}}/commit/{{item.1.id}}">{{ item.1.summary | truncate(length=60)}}</a></td> |
4354 | - <td class="expand-xl">{{item.0.size | human_bytes }}</td> |
4355 | - <td class="expand-xl">{{item.0.mode | filemode }}</td> |
4356 | - <td> <a href="/{{collection}}/{{name}}/commit/{{item.1.id}}">{{ item.1.epoch | friendly_time }}</a></td> |
4357 | - </tr> |
4358 | - {% endfor %} |
4359 | - </tbody> |
4360 | - </table> |
4361 | - </div> |
4362 | - </article> |
4363 | - <article class="readme"> |
4364 | - <header> {{ rendered_file_name }} </header> |
4365 | - <div class="readme">{{ readme | safe }}</div> |
4366 | - </article> |
4367 | - </section> |
4368 | - {% if show_details %} |
4369 | - <section class="repo-right"> |
4370 | - <article> |
4371 | - <div class="panel"> |
4372 | - <section class="repo-section"> |
4373 | - <div class="icon-header contrast"> |
4374 | - <h3>Clone</h3> |
4375 | - </div> |
4376 | - <div class="clone"> |
4377 | - <div><b>HTTP</b></div> |
4378 | - <div class="clone-url"><input type="text" value="{{http_clone_url}}" readonly></div> |
4379 | - </div> |
4380 | - {% if git_clone_url %} |
4381 | - <div class="clone"> |
4382 | - <div style="margin-right: 1ch;"><b>SSH</b></div> |
4383 | - <div class="clone-url"><input type="text" value="{{git_clone_url}}" readonly></div> |
4384 | - </div> |
4385 | - {% endif %} |
4386 | - </section> |
4387 | - {% if chat_links or email_links %} |
4388 | - <section class="repo-section"> |
4389 | - <div class="icon-header contrast"><h3>Discussion</h3> |
4390 | - </div> |
4391 | - {% if chat_links %} |
4392 | - <h6> Chat </h6> |
4393 | - {% for chat in chat_links %} |
4394 | - <em>{{chat.description}}, status: </em> |
4395 | - <b class={%- if chat.users_online -%}"positive"{%- else -%}"negative"{%- endif -%} |
4396 | - data-tooltip="{%- if chat.users_online -%} {{chat.users_online}} Users Online {%- else -%} Offline {%- endif -%}"> |
4397 | - [{%- if chat.users_online -%}{{chat.users_online}}{%- else -%}?{%- endif -%}] |
4398 | - </b> |
4399 | - <div class="clone"> |
4400 | - <div> |
4401 | - <b>{{chat.kind}}</b> |
4402 | - </div> |
4403 | - <div class="clone-url"><input type="text" value="{{chat.url}}" readonly></div> |
4404 | - </div> |
4405 | - {% endfor %} |
4406 | - {% endif %} |
4407 | - {% if email_links %} |
4408 | - <h6> Mailing Lists </h6> |
4409 | - {% for email in email_links %} |
4410 | - <em>{{email.description}}, 100+ threads</em> |
4411 | - <div class="clone"> |
4412 | - <div> |
4413 | - <b>mail</b> |
4414 | - </div> |
4415 | - <div class="clone-url"><input type="text" value="{{email.url}}" readonly></div> |
4416 | - </div> |
4417 | - {% endfor %} |
4418 | - {% endif %} |
4419 | - </section> |
4420 | - {% endif %} |
4421 | - <section class="repo-section"> |
4422 | - <h3> Subscribe<span class="icon">{{ "feed" | emoji | safe }}</span></h3> |
4423 | - </br> |
4424 | - [<a href="{{rss_link_all}}">*</a>, |
4425 | - <a href="{{rss_link_1d}}">1d</a>, |
4426 | - <a href="{{rss_link_1w}}">1w</a>, |
4427 | - <a href="{{rss_link_1m}}">1m</a>] |
4428 | - </section> |
4429 | - {% if sites_url %} |
4430 | - <section class="repo-section"> |
4431 | - <div class="icon-header contrast"> |
4432 | - <h3>Homepage</h3> |
4433 | - </div> |
4434 | - <a href={{sites_url}}>{{sites_url}}</a> |
4435 | - </section> |
4436 | - {% endif %} |
4437 | - <section class="repo-section"> |
4438 | - <div class="icon-header contrast"><h3>License</h3> |
4439 | - </div> |
4440 | - <i><b>{{ license }}</b></i> |
4441 | - </section> |
4442 | - <section class="repo-section"> |
4443 | - <div class="icon-header contrast"><h3><a href="/{{collection}}/{{name}}/authors">Authors</a></h3> |
4444 | - </div> |
4445 | - </a> |
4446 | - <ul class="author-list"> |
4447 | - {% if authors %} |
4448 | - {% for author in authors %} |
4449 | - <li> {{ author.0 }}: <i> {{ author.2 }}% </i> </li> |
4450 | - {% endfor %} |
4451 | - {% endif %} |
4452 | - </ul> |
4453 | - </section> |
4454 | - <div class="chart"> |
4455 | - <a href="/{{collection}}/{{name}}/chart/activity/{{latest_commit.id}}"> |
4456 | - {{ activity_chart | safe }} |
4457 | - </a> |
4458 | - </div> |
4459 | - <div class="chart"> |
4460 | - <a href="/{{collection}}/{{name}}/chart/languages/{{latest_commit.id}}"> |
4461 | - {{ language_chart | safe }} |
4462 | - </a> |
4463 | - </div> |
4464 | - </div> |
4465 | - </article> |
4466 | - </section> |
4467 | - {% endif %} |
4468 | - {% if show_details %} |
4469 | - </div> |
4470 | + <section class="repo-left column"> |
4471 | + <section> |
4472 | + <span>{{ latest_commit.author_name }} {{ latest_commit.epoch | friendly_time }}</span> |
4473 | + </section> |
4474 | + <section> |
4475 | + <span class="bold">{{ commit_count }} commits</span> |
4476 | + </section> |
4477 | + <span> |
4478 | + {% if latest_commit.is_verified %} |
4479 | + <span class="positive"> |
4480 | + {% else %} |
4481 | + <span class="negative"> |
4482 | + {% endif %} |
4483 | + {{ latest_commit.id | truncate(length=8, end="") }} |
4484 | + </span> |
4485 | + </span> |
4486 | + <span class="right"> |
4487 | + <span class="bold yellow-badge">{{ refname }}</span> |
4488 | + </span> |
4489 | + </span> |
4490 | + </br> |
4491 | + <span> |
4492 | + <a href="/{{ collection }}/{{ name }}/commit/{{ latest_commit.id }}"> |
4493 | + {{ latest_commit.summary | truncate(length=60) }} |
4494 | + </a> |
4495 | + </span> |
4496 | + <table class="tree"> |
4497 | + <thead> |
4498 | + <tr> |
4499 | + <th scope="col">file</th> |
4500 | + <th class="collapse" scope="col">commit</th> |
4501 | + <th class="expand-xl" scope="col">size</th> |
4502 | + <th class="expand-xl" scope="col">mode</th> |
4503 | + <th scope="col">time</th> |
4504 | + </tr> |
4505 | + </thead> |
4506 | + <tbody> |
4507 | + {% for item in tree %} |
4508 | + <tr> |
4509 | + {% if item.0.submodule %} |
4510 | + <td>{{ item.0.name }} @ {{ item.0.submodule }}</td> |
4511 | + {% else %} |
4512 | + <td> |
4513 | + <a href="{{ item.0.name | make_url(kind=item.0.kind) }}"> |
4514 | + {{ item.0.name }} |
4515 | + {% if item.0.kind == "Submodule" %}<span class="tiny">ref</span>{% endif %} |
4516 | + {% if item.0.kind == "Pointer" %}<span class="tiny">ptr</span>{% endif %} |
4517 | + </a> |
4518 | + </td> |
4519 | + {% endif %} |
4520 | + <td class="collapse"> |
4521 | + <a href="/{{ collection }}/{{ name }}/commit/{{ item.1.id }}">{{ item.1.summary | truncate(length=60) }}</a> |
4522 | + </td> |
4523 | + <td class="expand-xl">{{ item.0.size | human_bytes }}</td> |
4524 | + <td class="expand-xl">{{ item.0.mode | filemode }}</td> |
4525 | + <td> |
4526 | + <a href="/{{ collection }}/{{ name }}/commit/{{ item.1.id }}">{{ item.1.epoch | friendly_time }}</a> |
4527 | + </td> |
4528 | + </tr> |
4529 | + {% endfor %} |
4530 | + </tbody> |
4531 | + </table> |
4532 | + <section class="readme"> |
4533 | + {{ readme | safe }} |
4534 | + </section> |
4535 | + </section> |
4536 | + {% if show_details %} |
4537 | + <section class="repo-right column"> |
4538 | + <section class="repo-section"> |
4539 | + <h3>Clone</h3> |
4540 | + <span class="bold">HTTP</span> |
4541 | + <input type="text" value="{{ http_clone_url }}" readonly> |
4542 | + {% if git_clone_url %} |
4543 | + <span class="bold">SSH</span> |
4544 | + <input type="text" value="{{ git_clone_url }}" readonly> |
4545 | + {% endif %} |
4546 | + </section> |
4547 | + {% if chat_links or email_links %} |
4548 | + <section class="repo-section"> |
4549 | + <h3>Discussion</h3> |
4550 | + {% if chat_links %} |
4551 | + <h6>Chat</h6> |
4552 | + {% for chat in chat_links %} |
4553 | + <em>{{ chat.description }}, status:</em> |
4554 | + <b class="{%- if chat.users_online -%}" |
4555 | + " |
4556 | + positive |
4557 | + " |
4558 | + {%- else -%} |
4559 | + " |
4560 | + negative |
4561 | + " |
4562 | + {%- endif -%} |
4563 | + data-tooltip="{%- if chat.users_online -%} {{ chat.users_online }} Users Online {%- else -%} Offline {%- endif -%}"> |
4564 | + [{%- if chat.users_online -%}{{ chat.users_online }}{%- else -%}?{%- endif -%}] |
4565 | + </b> |
4566 | + <b>{{ chat.kind }}</b> |
4567 | + <input type="text" value="{{ chat.url }}" readonly> |
4568 | + {% endfor %} |
4569 | + {% endif %} |
4570 | + {% if email_links %} |
4571 | + <h6>Mailing Lists</h6> |
4572 | + {% for email in email_links %} |
4573 | + <em>{{ email.description }}, 100+ threads</em> |
4574 | + <b>mail</b> |
4575 | + <input type="text" value="{{ email.url }}" readonly> |
4576 | + {% endfor %} |
4577 | + {% endif %} |
4578 | + </section> |
4579 | + {% endif %} |
4580 | + <section> |
4581 | + <h3>Subscribe</h3> |
4582 | + <div class="rss-links"> |
4583 | + {{ "feed.svg" | emoji | safe }} |
4584 | + <p> |
4585 | + [<a href="{{ rss_link_all }}">*</a>, |
4586 | + <a href="{{ rss_link_1d }}">1d</a>, |
4587 | + <a href="{{ rss_link_1w }}">1w</a>, |
4588 | + <a href="{{ rss_link_1m }}">1m</a>] |
4589 | + </p> |
4590 | + </div> |
4591 | + </section> |
4592 | + {% if sites_url %} |
4593 | + <section class="repo-section"> |
4594 | + <div class="icon-header contrast"> |
4595 | + <h3>Homepage</h3> |
4596 | + </div> |
4597 | + <a href={{ sites_url }}>{{ sites_url }}</a> |
4598 | + </section> |
4599 | + {% endif %} |
4600 | + <section class="repo-section"> |
4601 | + <div class="icon-header contrast"> |
4602 | + <h3>License</h3> |
4603 | + </div> |
4604 | + <i><b>{{ license }}</b></i> |
4605 | + </section> |
4606 | + <section> |
4607 | + <h3> |
4608 | + <a href="/{{ collection }}/{{ name }}/authors">Authors</a> |
4609 | + </h3> |
4610 | + {% if authors %} |
4611 | + {% for author in authors %} |
4612 | + <span>{{ author.0 }}:</span> <i> <span class="right">{{ author.2 }}% </i></span> |
4613 | + </br> |
4614 | + {% endfor %} |
4615 | + {% endif %} |
4616 | + </section> |
4617 | + <section> |
4618 | + <h3>Analysis</h3> |
4619 | + <a href="/{{ collection }}/{{ name }}/chart/activity/{{ latest_commit.id }}">{{ activity_chart | safe }}</a> |
4620 | + <a href="/{{ collection }}/{{ name }}/chart/languages/{{ latest_commit.id }}">{{ language_chart | safe }}</a> |
4621 | + </section> |
4622 | + </section> |
4623 | {% endif %} |
4624 | {% endblock %} |
4625 | diff --git a/ayllu/themes/default/templates/rss_summary.html b/ayllu/themes/default/templates/rss_summary.html |
4626 | index ca85e9a..0b98b21 100644 |
4627 | --- a/ayllu/themes/default/templates/rss_summary.html |
4628 | +++ b/ayllu/themes/default/templates/rss_summary.html |
4629 | @@ -1,24 +1,31 @@ |
4630 | - <center> |
4631 | - <h1> Summary from {{start_date}} to {{end_date}} </h1> |
4632 | - <h2>{{n_tags}} tags and {{n_commits}} commits added {% if entries | length > 1 %} across {{n_projects}} projects{%- endif -%} </h2> |
4633 | - </center> |
4634 | - |
4635 | - {% for entry in entries %} |
4636 | - <h2> Updates For {{entry.name}} </h2> |
4637 | - |
4638 | - {% if entry.tags | length > 0 %} |
4639 | - </br><h3> <u>New Tags</u> </h3> |
4640 | - {% endif %} |
4641 | - |
4642 | - {% if entry.commits | length > 0 %} |
4643 | - </br><h3> <u>New Commits</u> </h3> |
4644 | - {% for commit in entry.commits %} |
4645 | - <article> |
4646 | - <header> |
4647 | - <h4><a href="{{origin}}/{{entry.name}}/commit/{{commit.id}}">{{commit.summary}} - {{commit.author_name}}</a></h4> |
4648 | - </header> |
4649 | - <pre>{{commit.message}}</pre> |
4650 | - </article> |
4651 | - {% endfor %} |
4652 | + <h1>Summary from {{ start_date }} to {{ end_date }}</h1> |
4653 | + <h2> |
4654 | + {{ n_tags }} tags and {{ n_commits }} commits added |
4655 | + {% if entries | length > 1 %} |
4656 | + across {{ n_projects }} projects{%- endif -%} |
4657 | + </h2> |
4658 | + {% for entry in entries %} |
4659 | + <h2>Updates For {{ entry.name }}</h2> |
4660 | + {% if entry.tags | length > 0 %} |
4661 | + </br> |
4662 | + <h3> |
4663 | + <u>New Tags</u> |
4664 | + </h3> |
4665 | + {% endif %} |
4666 | + {% if entry.commits | length > 0 %} |
4667 | + </br> |
4668 | + <h3> |
4669 | + <u>New Commits</u> |
4670 | + </h3> |
4671 | + {% for commit in entry.commits %} |
4672 | + <article> |
4673 | + <header> |
4674 | + <h4> |
4675 | + <a href="{{ origin }}/{{ entry.name }}/commit/{{ commit.id }}">{{ commit.summary }} - {{ commit.author_name }}</a> |
4676 | + </h4> |
4677 | + </header> |
4678 | + <pre>{{commit.message}}</pre> |
4679 | + </article> |
4680 | + {% endfor %} |
4681 | {% endif %} |
4682 | {% endfor %} |
4683 | diff --git a/ayllu/themes/default/templates/tags.html b/ayllu/themes/default/templates/tags.html |
4684 | index 2813ddd..911c22a 100644 |
4685 | --- a/ayllu/themes/default/templates/tags.html |
4686 | +++ b/ayllu/themes/default/templates/tags.html |
4687 | @@ -1,28 +1,31 @@ |
4688 | {% import "macros.html" as macros %} |
4689 | {% extends "base.html" %} |
4690 | {% block content %} |
4691 | - <section> |
4692 | - <article> |
4693 | - <header> |
4694 | - {{ macros::navigation(items=refnav, title="Tags") }} |
4695 | - </header> |
4696 | - {% for tag in tags %} |
4697 | - <article class="inner"> |
4698 | - <header class="wide"> |
4699 | - <div><h3><a href="/{{collection}}/{{name}}/tree/{{tag.name | urlencode}}">{{ tag.name }}</a></h3></div> |
4700 | - <div><h5>{{ tag.commit.epoch | friendly_time }}<h5></div> |
4701 | - </header> |
4702 | - <pre>{{ tag.summary }}</pre> |
4703 | - <footer class="wide"> |
4704 | - <div>{{ tag.author_name }}</div> |
4705 | - <div> |
4706 | - <a href="/{{collection}}/{{name}}/refs/archive/{{tag.name}}.tar.gz" role="button">{{tag.name}}.tar.gz</a> |
4707 | - <a href="/{{collection}}/{{name}}/commit/{{tag.commit.id}}" |
4708 | - role="button">{{tag.commit.id | truncate(length=8, end="")}}</a> |
4709 | - </div> |
4710 | - </footer> |
4711 | - </article> |
4712 | - {% endfor %} |
4713 | - </article> |
4714 | - </section> |
4715 | + <section class="stretch"> |
4716 | + {{ macros::navigation(items=refnav, title="Tags") }} |
4717 | + {% for tag in tags %} |
4718 | + <section class="tag card"> |
4719 | + <section class="segmented-5"> |
4720 | + <div> |
4721 | + <h4> |
4722 | + <a href="/{{ collection }}/{{ name }}/tree/{{ tag.name | urlencode }}">{{ tag.name }}</a> |
4723 | + </h4> |
4724 | + </div> |
4725 | + <div> |
4726 | + <a href="/{{ collection }}/{{ name }}/commit/{{ tag.commit.id }}" |
4727 | + role="button">{{ tag.commit.id | truncate(length=8, end="") }}</a> |
4728 | + </div> |
4729 | + <div>{{ tag.commit.epoch | friendly_time }}</div> |
4730 | + <div>{{ tag.author_name }}</div> |
4731 | + <div> |
4732 | + <a href="/{{ collection }}/{{ name }}/refs/archive/{{ tag.name }}.tar.gz" |
4733 | + role="button">{{ tag.name }}.tar.gz</a> |
4734 | + </div> |
4735 | + </section> |
4736 | + <div class="message"> |
4737 | + <pre>{{ tag.summary }}</pre> |
4738 | + </div> |
4739 | + </section> |
4740 | + {% endfor %} |
4741 | + </section> |
4742 | {% endblock %} |
4743 | diff --git a/ayllu/themes/default/templates/thread.html b/ayllu/themes/default/templates/thread.html |
4744 | index 9d75245..af9d62d 100644 |
4745 | --- a/ayllu/themes/default/templates/thread.html |
4746 | +++ b/ayllu/themes/default/templates/thread.html |
4747 | @@ -1,23 +1,28 @@ |
4748 | {% extends "base.html" %} |
4749 | {% block content %} |
4750 | - <section class="thread-view"> |
4751 | - <article> |
4752 | - <header> |
4753 | - <h1>{{ subject }}</h1></br> |
4754 | - <h4> Export Thread </h4> |
4755 | - <p><a href="/mail/export/{{list_id}}/{{thread_id}}">mbox</a></p> |
4756 | - </header> |
4757 | - {% for reply in messages %} |
4758 | - <article> |
4759 | - <header> |
4760 | - <b>From: {{ reply.from_address }}</b></br> |
4761 | - <b>Subject: {{ reply.subject }} </b></br> |
4762 | - <b><a href="/mail/message/{{list_id}}/{{reply.message_id}}">{{ reply.message_id }}</a></b> |
4763 | - <span class="right">{{ reply.created_at | format_epoch }}</span> |
4764 | - </header> |
4765 | - <pre>{{ reply.text | safe }}</pre> |
4766 | - </article> |
4767 | - {% endfor %} |
4768 | - </section> |
4769 | + <section class="thread-view"> |
4770 | + <article> |
4771 | + <header> |
4772 | + <h1>{{ subject }}</h1> |
4773 | + </br> |
4774 | + <h4>Export Thread</h4> |
4775 | + <p> |
4776 | + <a href="/mail/export/{{ list_id }}/{{ thread_id }}">mbox</a> |
4777 | + </p> |
4778 | + </header> |
4779 | + {% for reply in messages %} |
4780 | + <article> |
4781 | + <header> |
4782 | + <b>From: {{ reply.from_address }}</b> |
4783 | + </br> |
4784 | + <b>Subject: {{ reply.subject }} </b> |
4785 | + </br> |
4786 | + <b><a href="/mail/message/{{ list_id }}/{{ reply.message_id }}">{{ reply.message_id }}</a></b> |
4787 | + <span class="right">{{ reply.created_at | format_epoch }}</span> |
4788 | + </header> |
4789 | + <pre>{{ reply.text | safe }}</pre> |
4790 | + </article> |
4791 | + {% endfor %} |
4792 | + </section> |
4793 | </article> |
4794 | {% endblock %} |
4795 | diff --git a/ayllu/themes/default/templates/threads.html b/ayllu/themes/default/templates/threads.html |
4796 | index 1b2c733..7b74feb 100644 |
4797 | --- a/ayllu/themes/default/templates/threads.html |
4798 | +++ b/ayllu/themes/default/templates/threads.html |
4799 | @@ -1,45 +1,53 @@ |
4800 | {% import "macros.html" as macros %} |
4801 | {% extends "base.html" %} |
4802 | {% block content %} |
4803 | - <section> |
4804 | - <article> |
4805 | - <header> |
4806 | - <h1> {{ list.name }} </h1> |
4807 | - <span class="right labels"> |
4808 | - {% for topic in list.topics %} |
4809 | - <span class="feature">{{topic}}</span> |
4810 | - {% endfor %} |
4811 | - </span> |
4812 | - </header> |
4813 | - <div class="mailing-list-details"> |
4814 | - <h4> {{ list.description }} </h4> |
4815 | - </br> |
4816 | - <h4> Subscribe </h4> |
4817 | - <p> Send an e-mail to <a href="mailto:{{request_address}}?subject=subscribe">{{request_address}}</a> with the following subject: <code>subscribe</code> </p> |
4818 | - <h4> Unsubscribe </h4> |
4819 | - <p> Send an e-mail to <a href="mailto:{{ request_address}}?subject=unsubscribe">{{request_address}}</a> with the following subject: <code>unsubscribe</code> </p> |
4820 | - <h4> Export List </h4> |
4821 | - <p><a href="/mail/export/{{list.id}}">mbox</a></p> |
4822 | - </div> |
4823 | - <h4> Messages </h4> |
4824 | - <table> |
4825 | - <thead> |
4826 | - <th> from </th> |
4827 | - <th> date </th> |
4828 | - <th> subject </th> |
4829 | - <th> replies </th> |
4830 | - </thead> |
4831 | - <tbody> |
4832 | - {% for thread in threads %} |
4833 | - <tr> |
4834 | - <td>{{ thread.from }}</a></td> |
4835 | - <td>{{thread.timestamp | format_epoch }}</td> |
4836 | - <td><a href="/mail/thread/{{list.id}}/{{thread.message_id}}">{{thread.subject}}</a></td> |
4837 | - <td>{{thread.n_replies}}</td> |
4838 | - </tr> |
4839 | - {% endfor %} |
4840 | - </tbody> |
4841 | - </table> |
4842 | - </article> |
4843 | + <section> |
4844 | + <article> |
4845 | + <header> |
4846 | + <h1>{{ list.name }}</h1> |
4847 | + <span class="right labels"> |
4848 | + {% for topic in list.topics %}<span class="feature">{{ topic }}</span>{% endfor %} |
4849 | + </span> |
4850 | + </header> |
4851 | + <div class="mailing-list-details"> |
4852 | + <h4>{{ list.description }}</h4> |
4853 | + </br> |
4854 | + <h4>Subscribe</h4> |
4855 | + <p> |
4856 | + Send an e-mail to <a href="mailto:{{ request_address }}?subject=subscribe">{{ request_address }}</a> with the following subject: <code>subscribe</code> |
4857 | + </p> |
4858 | + <h4>Unsubscribe</h4> |
4859 | + <p> |
4860 | + Send an e-mail to <a href="mailto:{{ request_address }}?subject=unsubscribe">{{ request_address }}</a> with the following subject: <code>unsubscribe</code> |
4861 | + </p> |
4862 | + <h4>Export List</h4> |
4863 | + <p> |
4864 | + <a href="/mail/export/{{ list.id }}">mbox</a> |
4865 | + </p> |
4866 | + </div> |
4867 | + <h4>Messages</h4> |
4868 | + <table> |
4869 | + <thead> |
4870 | + <th>from</th> |
4871 | + <th>date</th> |
4872 | + <th>subject</th> |
4873 | + <th>replies</th> |
4874 | + </thead> |
4875 | + <tbody> |
4876 | + {% for thread in threads %} |
4877 | + <tr> |
4878 | + <td> |
4879 | + <a>{{ thread.from }}</a> |
4880 | + </td> |
4881 | + <td>{{ thread.timestamp | format_epoch }}</td> |
4882 | + <td> |
4883 | + <a href="/mail/thread/{{ list.id }}/{{ thread.message_id }}">{{ thread.subject }}</a> |
4884 | + </td> |
4885 | + <td>{{ thread.n_replies }}</td> |
4886 | + </tr> |
4887 | + {% endfor %} |
4888 | + </tbody> |
4889 | + </table> |
4890 | + </article> |
4891 | </section> |
4892 | {% endblock %} |
4893 | diff --git a/ayllu/themes/default/templates/user.html b/ayllu/themes/default/templates/user.html |
4894 | index fda2ec3..311042b 100644 |
4895 | --- a/ayllu/themes/default/templates/user.html |
4896 | +++ b/ayllu/themes/default/templates/user.html |
4897 | @@ -1,4 +1,2 @@ |
4898 | {% extends "base.html" %} |
4899 | - {% block content %} |
4900 | - User Profile |
4901 | - {% endblock %} |
4902 | + {% block content %}User Profile{% endblock %} |
4903 | diff --git a/ayllu/themes/default/theme.css b/ayllu/themes/default/theme.css |
4904 | new file mode 100644 |
4905 | index 0000000..fbba54c |
4906 | --- /dev/null |
4907 | +++ b/ayllu/themes/default/theme.css |
4908 | @@ -0,0 +1,545 @@ |
4909 | + @import url("../../../node_modules/open-props/open-props.min.css"); |
4910 | + @import url("../../../node_modules/open-props/normalize.min.css"); |
4911 | + @import url("../../../node_modules/open-props/buttons.min.css"); |
4912 | + |
4913 | + @import url("../../colors/nord.css"); |
4914 | + |
4915 | + :root { |
4916 | + font-size: 80%; |
4917 | + } |
4918 | + |
4919 | + a:visited { |
4920 | + color: var(--link); |
4921 | + text-decoration: none; |
4922 | + } |
4923 | + |
4924 | + table { |
4925 | + min-width: 100%; |
4926 | + } |
4927 | + |
4928 | + nav { |
4929 | + display: flex; |
4930 | + justify-content: space-between; |
4931 | + align-items: center; |
4932 | + background-color: var(--surface-1); |
4933 | + padding: 10px; |
4934 | + color: var(--text-1); |
4935 | + box-shadow: var(--shadow-3); |
4936 | + } |
4937 | + |
4938 | + nav.subnav { |
4939 | + background-color: var(--surface-2); |
4940 | + color: var(--text-1); |
4941 | + box-shadow: var(--shadow-5); |
4942 | + } |
4943 | + |
4944 | + nav .logo { |
4945 | + font-size: 20px; |
4946 | + font-weight: bold; |
4947 | + } |
4948 | + |
4949 | + nav ul { |
4950 | + list-style-type: none; |
4951 | + margin: 0; |
4952 | + padding: 0; |
4953 | + display: flex; |
4954 | + } |
4955 | + |
4956 | + nav ul li { |
4957 | + margin-left: 20px; |
4958 | + } |
4959 | + |
4960 | + nav ul li a { |
4961 | + color: var(--link); |
4962 | + text-decoration: none; |
4963 | + } |
4964 | + |
4965 | + .right { |
4966 | + float: right; |
4967 | + text-align: right; |
4968 | + } |
4969 | + |
4970 | + span .right { |
4971 | + float: right; |
4972 | + text-align: right; |
4973 | + } |
4974 | + |
4975 | + span.bold { |
4976 | + font-weight: var(--font-weight-7); |
4977 | + } |
4978 | + |
4979 | + span.right { |
4980 | + float: right; |
4981 | + } |
4982 | + |
4983 | + span.hint { |
4984 | + padding: 5px; |
4985 | + font-weight: bold; |
4986 | + text-decoration: underline; |
4987 | + } |
4988 | + |
4989 | + .rss-links { |
4990 | + display: flex; |
4991 | + align-items: center; |
4992 | + } |
4993 | + |
4994 | + .rss-links #emoji { |
4995 | + margin-right: 10px; |
4996 | + } |
4997 | + |
4998 | + .rss-links p { |
4999 | + float: right; |
5000 | + } |
5001 | + |
5002 | + .container { |
5003 | + max-width: 1800px; |
5004 | + margin: 0 auto; |
5005 | + padding: 20px; |
5006 | + display: flex; |
5007 | + flex-wrap: wrap; |
5008 | + } |
5009 | + |
5010 | + .column { |
5011 | + flex: 1; |
5012 | + padding: 20px; |
5013 | + } |
5014 | + |
5015 | + .row { |
5016 | + display: flex; |
5017 | + flex-wrap: wrap; |
5018 | + } |
5019 | + |
5020 | + .repo-left { |
5021 | + flex: 3; |
5022 | + } |
5023 | + |
5024 | + .repo-right { |
5025 | + flex: 1; |
5026 | + } |
5027 | + |
5028 | + /* Media query for smaller screens */ |
5029 | + @media (max-width: 768px) { |
5030 | + .column { |
5031 | + flex: none; |
5032 | + width: 100%; |
5033 | + } |
5034 | + |
5035 | + .right { |
5036 | + order: 1; |
5037 | + } |
5038 | + } |
5039 | + |
5040 | + p.commit-message { |
5041 | + font-size: var(--font-size-0); |
5042 | + font-weight: var(--font-weight-0); |
5043 | + } |
5044 | + |
5045 | + header { |
5046 | + color: var(--text-1); |
5047 | + margin-bottom: 1em; |
5048 | + } |
5049 | + |
5050 | + section.blame { |
5051 | + display: grid; |
5052 | + grid-template-columns: 1fr 5fr; |
5053 | + } |
5054 | + |
5055 | + section.blame { |
5056 | + article { |
5057 | + margin-top: 0px !important; |
5058 | + } |
5059 | + } |
5060 | + |
5061 | + article.blame-right { |
5062 | + padding: 0; |
5063 | + width: 100%; |
5064 | + } |
5065 | + |
5066 | + article.blame-left { |
5067 | + padding: 0; |
5068 | + table tbody tr td { |
5069 | + text-align: left; |
5070 | + } |
5071 | + } |
5072 | + |
5073 | + footer { |
5074 | + padding-top: 2em; |
5075 | + text-align: center; |
5076 | + font-size: smaller; |
5077 | + } |
5078 | + |
5079 | + .blob-preview { |
5080 | + text-align: center; |
5081 | + border-style: solid; |
5082 | + border-color: pink; |
5083 | + margin-top: 2em; |
5084 | + padding: 1em; |
5085 | + } |
5086 | + |
5087 | + .line-number { |
5088 | + user-select: none; |
5089 | + /* text-align: right;*/ |
5090 | + width: .5em; |
5091 | + } |
5092 | + |
5093 | + .line { |
5094 | + white-space: pre; |
5095 | + padding-left: 5px; |
5096 | + } |
5097 | + |
5098 | + .positive { |
5099 | + color: var(--text-2); |
5100 | + text-shadow: |
5101 | + 0 0 10px var(--green-5), |
5102 | + 0 0 25px var(--green-7); |
5103 | + } |
5104 | + |
5105 | + .negative { |
5106 | + color: var(--text-2); |
5107 | + text-shadow: |
5108 | + 0 0 10px var(--red-5), |
5109 | + 0 0 25px var(--red-7); |
5110 | + } |
5111 | + |
5112 | + table.code { |
5113 | + font-family: var(--font-mono); |
5114 | + text-align: revert !important; |
5115 | + width: 100%; |
5116 | + margin-top: 1em; |
5117 | + } |
5118 | + |
5119 | + .tree { |
5120 | + --tree-border-width: 1px; |
5121 | + --tree-border-color: var(--surface-2); |
5122 | + --tree-cell-pad: var(--size-1); |
5123 | + --tree-font: var(--font-mono); |
5124 | + --tree-text: var(--text-2); |
5125 | + border-collapse: collapse; |
5126 | + border: none; |
5127 | + background: none; |
5128 | + color: var(--tree-text); /* non-links get de-emphasized */ |
5129 | + font-family: var(--tree-font); |
5130 | + } |
5131 | + |
5132 | + .tree :is(td, th) { |
5133 | + padding: var(--tree-cell-pad); |
5134 | + border-block: var(--tree-border-width) solid var(--tree-border-color); |
5135 | + border-radius: 0; |
5136 | + text-align: start; |
5137 | + } |
5138 | + |
5139 | + /* add classes for these? here is commit… and/or utility class */ |
5140 | + /* this cuts off messages about where Git will in logs */ |
5141 | + .tree :is(td, th):nth-child(2) { |
5142 | + overflow: hidden; |
5143 | + max-inline-size: 70ch; |
5144 | + white-space: nowrap; |
5145 | + text-overflow: ellipsis; |
5146 | + } |
5147 | + |
5148 | + .tree :is(td, th):last-of-type { |
5149 | + text-align: end; |
5150 | + } |
5151 | + |
5152 | + code.highlighted { |
5153 | + width: 100%; |
5154 | + overflow: scroll; |
5155 | + } |
5156 | + |
5157 | + .code > tbody > tr > td { |
5158 | + text-align: revert; |
5159 | + padding: 0 0 0 0; |
5160 | + padding-right: .5em; |
5161 | + } |
5162 | + |
5163 | + .yellow-badge { |
5164 | + padding-inline: var(--size-1); |
5165 | + border-width: var(--border-size-1); |
5166 | + border-color: var(--pink-6); |
5167 | + color: var(--pink-2); |
5168 | + border-radius: var(--radius-round); |
5169 | + } |
5170 | + |
5171 | + #emoji { |
5172 | + max-width: 40px; |
5173 | + } |
5174 | + |
5175 | + .card { |
5176 | + margin: 1em; |
5177 | + padding: 1em; |
5178 | + } |
5179 | + |
5180 | + section.viewer { |
5181 | + margin-top: 5em; |
5182 | + text-align: center; |
5183 | + } |
5184 | + |
5185 | + section.viewer svg { |
5186 | + display: inline-block; |
5187 | + margin: 0 auto; |
5188 | + } |
5189 | + |
5190 | + section.readme { |
5191 | + margin-top: 2.5em; |
5192 | + } |
5193 | + |
5194 | + .stretch { |
5195 | + width: 100%; |
5196 | + } |
5197 | + |
5198 | + li.active { |
5199 | + color: var(--text-2); |
5200 | + text-shadow: |
5201 | + 0 0 10px var(--camo-5), |
5202 | + 0 0 25px var(--camo-7); |
5203 | + } |
5204 | + |
5205 | + @media (--OSdark) { |
5206 | + html { |
5207 | + background: var(--stone-5); |
5208 | + color: var(--stone-7); |
5209 | + } |
5210 | + } |
5211 | + |
5212 | + article.collection { |
5213 | + padding-top: 2em; |
5214 | + padding-bottom: 2em; |
5215 | + } |
5216 | + |
5217 | + section.repositories { |
5218 | + padding-top: 1em; |
5219 | + } |
5220 | + |
5221 | + section.repositories > * { |
5222 | + margin-top: 1em; |
5223 | + } |
5224 | + |
5225 | + article.collection .description { |
5226 | + font-weight: var(--font-weight-1); |
5227 | + } |
5228 | + |
5229 | + article.repository > .description { |
5230 | + font-weight: var(--font-weight-4); |
5231 | + margin-top: 5px; |
5232 | + } |
5233 | + |
5234 | + .segmented-5 { |
5235 | + display: flex; |
5236 | + justify-content: space-between; |
5237 | + flex-wrap: wrap; |
5238 | + } |
5239 | + |
5240 | + .segmented-5 > * { |
5241 | + flex-basis: 20%; |
5242 | + } |
5243 | + |
5244 | + @media (width < 768px) { |
5245 | + .segmented-5 > * { |
5246 | + flex-basis: 70%; |
5247 | + } |
5248 | + } |
5249 | + |
5250 | + @media (width < 480px) { |
5251 | + .segmented-5 > * { |
5252 | + flex-basis: 100%; |
5253 | + } |
5254 | + } |
5255 | + |
5256 | + .segmented-4 { |
5257 | + display: flex; |
5258 | + justify-content: space-between; |
5259 | + flex-wrap: wrap; |
5260 | + } |
5261 | + |
5262 | + .segmented-4 > * { |
5263 | + flex-basis: 25%; |
5264 | + } |
5265 | + |
5266 | + @media (width < 768px) { |
5267 | + .segmented-4 > * { |
5268 | + flex-basis: 50%; |
5269 | + } |
5270 | + } |
5271 | + |
5272 | + @media (width < 480px) { |
5273 | + .segmented-4 > * { |
5274 | + flex-basis: 100%; |
5275 | + } |
5276 | + } |
5277 | + |
5278 | + .segmented-3 { |
5279 | + display: flex; |
5280 | + justify-content: space-between; |
5281 | + flex-wrap: wrap; |
5282 | + } |
5283 | + |
5284 | + .segmented-3 > * { |
5285 | + flex-basis: 33%; |
5286 | + } |
5287 | + |
5288 | + @media (width < 768px) { |
5289 | + .segmented-3 > * { |
5290 | + flex-basis: 100%; |
5291 | + } |
5292 | + } |
5293 | + |
5294 | + @media (width < 768px) { |
5295 | + .collapse { |
5296 | + display: none; |
5297 | + } |
5298 | + } |
5299 | + |
5300 | + .segmented-2 { |
5301 | + display: flex; |
5302 | + justify-content: space-between; |
5303 | + flex-wrap: wrap; |
5304 | + } |
5305 | + |
5306 | + .segmented-2 > * { |
5307 | + flex-basis: 50%; |
5308 | + } |
5309 | + |
5310 | + @media (width < 768px) { |
5311 | + .segmented-2 > * { |
5312 | + flex-basis: 100%; |
5313 | + } |
5314 | + } |
5315 | + |
5316 | + @media (width < 768px) { |
5317 | + .collapse { |
5318 | + display: none; |
5319 | + } |
5320 | + } |
5321 | + |
5322 | + .expand-xl { |
5323 | + display: none; |
5324 | + } |
5325 | + |
5326 | + @media (width > 1500px) { |
5327 | + .expand-xl { |
5328 | + display: revert; |
5329 | + } |
5330 | + } |
5331 | + |
5332 | + section.log { |
5333 | + } |
5334 | + |
5335 | + article.log-entry { |
5336 | + box-shadow: var(--shadow-3); |
5337 | + overflow: auto; |
5338 | + scrollbar-width: 0; |
5339 | + margin: 1em; |
5340 | + } |
5341 | + |
5342 | + .branch { |
5343 | + } |
5344 | + |
5345 | + .message { |
5346 | + margin-top: 1em; |
5347 | + font-size: var(--font-size-0); |
5348 | + font-weight: var(--font-weight-0); |
5349 | + } |
5350 | + |
5351 | + section.config-panel > form > button { |
5352 | + margin-top: 1em; |
5353 | + display: block; |
5354 | + } |
5355 | + |
5356 | + img.rss-icon-feed { |
5357 | + height: 4em; |
5358 | + } |
5359 | + |
5360 | + |
5361 | + table.code { |
5362 | + background-color: var(--nord0); |
5363 | + } |
5364 | + |
5365 | + tr .line { |
5366 | + background-color: var(--nord0); |
5367 | + } |
5368 | + |
5369 | + tr .line-number { |
5370 | + background-color: var(--nord0); |
5371 | + } |
5372 | + |
5373 | + /* base syntax highlighting */ |
5374 | + |
5375 | + span.ts_attribute { |
5376 | + color: var(--nord14); |
5377 | + } |
5378 | + |
5379 | + span.ts_comment { |
5380 | + color: var(--nord3); |
5381 | + } |
5382 | + |
5383 | + span.ts_constant { |
5384 | + color: var(--nord4); |
5385 | + } |
5386 | + |
5387 | + span.ts_function_builtin { |
5388 | + color: var(--nord9); |
5389 | + } |
5390 | + |
5391 | + span.ts_function { |
5392 | + color: var(--nord8); |
5393 | + } |
5394 | + |
5395 | + span.ts_keyword { |
5396 | + color: var(--nord12); |
5397 | + } |
5398 | + |
5399 | + span.ts_operator { |
5400 | + color: var(--nord9); |
5401 | + } |
5402 | + |
5403 | + span.ts_property { |
5404 | + color: var(--nord11); |
5405 | + } |
5406 | + |
5407 | + span.ts_punctuation { |
5408 | + color: var(--nord5); |
5409 | + } |
5410 | + |
5411 | + span.ts_punctuation_bracket { |
5412 | + color: var(--nord9); |
5413 | + } |
5414 | + |
5415 | + span.ts_punctuation_delimiter { |
5416 | + color: var(--nord10); |
5417 | + } |
5418 | + |
5419 | + span.ts_punctuation_delimiter { |
5420 | + color: var(--nord10); |
5421 | + } |
5422 | + |
5423 | + span.ts_string { |
5424 | + color: var(--nord-14); |
5425 | + } |
5426 | + |
5427 | + span.ts_string_special { |
5428 | + color: var(--nord12); |
5429 | + } |
5430 | + |
5431 | + span.ts_tag { |
5432 | + color: var(--nord7); |
5433 | + } |
5434 | + |
5435 | + span.ts_type { |
5436 | + color: var(--nord7); |
5437 | + } |
5438 | + |
5439 | + span.ts_type_builtin { |
5440 | + color: var(--nord13); |
5441 | + } |
5442 | + |
5443 | + span.ts_variable { |
5444 | + color: var(--nord4); |
5445 | + } |
5446 | + |
5447 | + span.ts_variable_builtin { |
5448 | + color: var(--nord5); |
5449 | + } |
5450 | + |
5451 | + span.ts_variable_parameter { |
5452 | + color: var(--nord8); |
5453 | + } |
5454 | diff --git a/ayllu/themes/default/theme.scss b/ayllu/themes/default/theme.scss |
5455 | deleted file mode 100644 |
5456 | index 3c4052d..0000000 |
5457 | --- a/ayllu/themes/default/theme.scss |
5458 | +++ /dev/null |
5459 | @@ -1,83 +0,0 @@ |
5460 | - // monochrome |
5461 | - |
5462 | - // Navy-Grey |
5463 | - $grey-hue: 205; |
5464 | - $grey-50: hsl($grey-hue, 20%, 94%); |
5465 | - $grey-100: hsl($grey-hue, 18%, 86%); |
5466 | - $grey-200: hsl($grey-hue, 16%, 77%); |
5467 | - $grey-300: hsl($grey-hue, 14%, 68%); |
5468 | - $grey-400: hsl($grey-hue, 12%, 59%); |
5469 | - $grey-500: hsl($grey-hue, 10%, 50%); |
5470 | - $grey-600: hsl($grey-hue, 15%, 41%); |
5471 | - $grey-700: hsl($grey-hue, 20%, 32%); |
5472 | - $grey-800: hsl($grey-hue, 25%, 23%); |
5473 | - $grey-900: hsl($grey-hue, 30%, 15%); |
5474 | - |
5475 | - // Light Blue |
5476 | - $primary-hue: $grey-hue; |
5477 | - $primary-50: hsl($grey-hue, 20%, 94%); |
5478 | - $primary-100: hsl($grey-hue, 18%, 86%); |
5479 | - $primary-200: hsl($grey-hue, 16%, 77%); |
5480 | - $primary-300: hsl($grey-hue, 14%, 68%); |
5481 | - $primary-400: hsl($grey-hue, 12%, 59%); |
5482 | - $primary-500: hsl($grey-hue, 10%, 50%); |
5483 | - $primary-600: hsl($grey-hue, 15%, 41%); |
5484 | - $primary-700: hsl($grey-hue, 20%, 32%); |
5485 | - $primary-800: hsl($grey-hue, 25%, 23%); |
5486 | - $primary-900: hsl($grey-hue, 30%, 15%); |
5487 | - |
5488 | - // Black & White |
5489 | - $black: #000; |
5490 | - $white: #fff; |
5491 | - |
5492 | - // Amber |
5493 | - $amber-50: hsl($grey-hue, 20%, 94%); |
5494 | - $amber-100: hsl($grey-hue, 18%, 86%); |
5495 | - $amber-200: hsl($grey-hue, 16%, 77%); |
5496 | - $amber-300: hsl($grey-hue, 14%, 68%); |
5497 | - $amber-400: hsl($grey-hue, 12%, 59%); |
5498 | - $amber-500: hsl($grey-hue, 10%, 50%); |
5499 | - $amber-600: hsl($grey-hue, 15%, 41%); |
5500 | - $amber-700: hsl($grey-hue, 20%, 32%); |
5501 | - $amber-800: hsl($grey-hue, 25%, 23%); |
5502 | - $amber-900: hsl($grey-hue, 30%, 15%); |
5503 | - |
5504 | - // Green |
5505 | - $green-50: hsl($grey-hue, 20%, 94%); |
5506 | - $green-100: hsl($grey-hue, 18%, 86%); |
5507 | - $green-200: hsl($grey-hue, 16%, 77%); |
5508 | - $green-300: hsl($grey-hue, 14%, 68%); |
5509 | - $green-400: hsl($grey-hue, 12%, 59%); |
5510 | - $green-500: hsl($grey-hue, 10%, 50%); |
5511 | - $green-600: hsl($grey-hue, 15%, 41%); |
5512 | - $green-700: hsl($grey-hue, 20%, 32%); |
5513 | - $green-800: hsl($grey-hue, 25%, 23%); |
5514 | - $green-900: hsl($grey-hue, 30%, 15%); |
5515 | - |
5516 | - // Red |
5517 | - $red-50: hsl($grey-hue, 20%, 94%); |
5518 | - $red-100: hsl($grey-hue, 18%, 86%); |
5519 | - $red-200: hsl($grey-hue, 16%, 77%); |
5520 | - $red-300: hsl($grey-hue, 14%, 68%); |
5521 | - $red-400: hsl($grey-hue, 12%, 59%); |
5522 | - $red-500: hsl($grey-hue, 10%, 50%); |
5523 | - $red-600: hsl($grey-hue, 15%, 41%); |
5524 | - $red-700: hsl($grey-hue, 20%, 32%); |
5525 | - $red-800: hsl($grey-hue, 25%, 23%); |
5526 | - $red-900: hsl($grey-hue, 30%, 15%); |
5527 | - |
5528 | - $positive: $black; |
5529 | - $negative: $black; |
5530 | - |
5531 | - $blame-border: $black; |
5532 | - |
5533 | - $highlighted: $black; |
5534 | - $icon-background: $black; |
5535 | - |
5536 | - $chart-color: $black; |
5537 | - |
5538 | - // NOTE: colors need to be defined above since they're |
5539 | - // read as variables in pico. |
5540 | - @import "@picocss/pico/scss/pico"; |
5541 | - @import "layout.scss"; |
5542 | - @import "base.scss"; |
5543 | diff --git a/ayllu/themes/tokyonight/templates/about.html b/ayllu/themes/tokyonight/templates/about.html |
5544 | deleted file mode 100644 |
5545 | index e319b72..0000000 |
5546 | --- a/ayllu/themes/tokyonight/templates/about.html |
5547 | +++ /dev/null |
5548 | @@ -1,9 +0,0 @@ |
5549 | - {% extends "base.html" %} |
5550 | - {% block content %} |
5551 | - <section> |
5552 | - <article> |
5553 | - <header></header> |
5554 | - {{ blurb | safe }} |
5555 | - </article> |
5556 | - </section> |
5557 | - {% endblock %} |
5558 | diff --git a/ayllu/themes/tokyonight/theme.scss b/ayllu/themes/tokyonight/theme.scss |
5559 | deleted file mode 100644 |
5560 | index 97551d3..0000000 |
5561 | --- a/ayllu/themes/tokyonight/theme.scss |
5562 | +++ /dev/null |
5563 | @@ -1,97 +0,0 @@ |
5564 | - // https://github.com/folke/tokyonight.nvim/blob/main/lua/tokyonight/colors.lua |
5565 | - $bg_dark: #1e2030; |
5566 | - $bg: #222436; |
5567 | - $bg_highlight: #2f334d; |
5568 | - $terminal_black: #444a73; |
5569 | - $fg: #c8d3f5; |
5570 | - $fg_dark: #828bb8; |
5571 | - $fg_gutter: #3b4261; |
5572 | - $dark3: #545c7e; |
5573 | - $comment: #7a88cf; |
5574 | - $dark5: #737aa2; |
5575 | - $blue0: #3e68d7; |
5576 | - $blue: #82aaff; |
5577 | - $cyan: #86e1fc; |
5578 | - $blue1: #65bcff; |
5579 | - $blue2: #0db9d7; |
5580 | - $blue5: #89ddff; |
5581 | - $blue6: #b4f9f8; |
5582 | - $blue7: #394b70; |
5583 | - $purple: #fca7ea; |
5584 | - $magenta2: #ff007c; |
5585 | - $magenta: #c099ff; |
5586 | - $orange: #ff966c; |
5587 | - $yellow: #ffc777; |
5588 | - $green: #c3e88d; |
5589 | - $green1: #4fd6be; |
5590 | - $green2: #41a6b5; |
5591 | - $teal: #4fd6be; |
5592 | - $red: #ff757f; |
5593 | - $red1: #c53b53; |
5594 | - |
5595 | - // |
5596 | - // |
5597 | - // tree sitter highlighting |
5598 | - // |
5599 | - // |
5600 | - |
5601 | - span.ts_attribute {color: $teal}; |
5602 | - span.ts_constant {color: $orange}; |
5603 | - span.ts_function.builtin {color: $blue}; |
5604 | - span.ts_function {color: $magenta} |
5605 | - span.ts_keyword {color: $purple}; |
5606 | - span.ts_operator {color: $blue5}; |
5607 | - span.ts_property {color: $green1}; |
5608 | - span.ts_punctuation {color: $blue}; |
5609 | - span.ts_punctuation.bracket {color: $fg_dark}; |
5610 | - span.ts_punctuation.delimiter {color: $blue5}; |
5611 | - span.ts_string {color: $green}; |
5612 | - span.ts_string.special {color: $blue} |
5613 | - span.ts_tag {color: $blue}; |
5614 | - span.ts_type {color: $blue1}; |
5615 | - span.ts_type.builtin {color: $blue1}; |
5616 | - span.ts_variable {color: $fg}; |
5617 | - span.ts_variable.builtin {color: $red}; |
5618 | - span.ts_variable.parameter {color: $yellow} |
5619 | - |
5620 | - @media (prefers-color-scheme: light) { |
5621 | - span.ts_attribute {color: darken($teal, 40%)}; |
5622 | - span.ts_constant {color: darken($orange, 40%)}; |
5623 | - span.ts_function.builtin {color: darken($blue, 40%)}; |
5624 | - span.ts_function {color: darken($magenta, 20%)} |
5625 | - span.ts_keyword {color: darken($purple, 40%)}; |
5626 | - span.ts_operator {color: darken($blue5, 40%)}; |
5627 | - span.ts_property {color: darken($green1, 40%)}; |
5628 | - span.ts_punctuation {color: darken($blue, 40%)}; |
5629 | - span.ts_punctuation.bracket {color: $fg}; |
5630 | - span.ts_punctuation.delimiter {color: darken($blue5, 40%)}; |
5631 | - span.ts_string {color: darken($green, 40%)}; |
5632 | - span.ts_string.special {color: darken($blue, 40%)} |
5633 | - span.ts_tag {color: darken($blue, 40%)}; |
5634 | - span.ts_type {color: darken($blue1, 40%)}; |
5635 | - span.ts_type.builtin {color: darken($blue1, 40%)}; |
5636 | - span.ts_variable {color: darken($fg, 40%)}; |
5637 | - span.ts_variable.builtin {color: darken($red, 40%)}; |
5638 | - span.ts_variable.parameter {color: darken($yellow, 40%)} |
5639 | - } |
5640 | - |
5641 | - |
5642 | - @media (prefers-color-scheme: dark) { |
5643 | - span.label { |
5644 | - color: $fg_dark; |
5645 | - } |
5646 | - } |
5647 | - |
5648 | - $positive: $green; |
5649 | - $negative: $red; |
5650 | - |
5651 | - $blame-border: $purple; |
5652 | - |
5653 | - $highlighted: $purple; |
5654 | - $icon-background: $purple; |
5655 | - |
5656 | - $chart-color: $purple; |
5657 | - |
5658 | - @import "@picocss/pico/scss/pico"; |
5659 | - @import "../default/layout.scss"; |
5660 | - @import "../default/base.scss"; |
5661 | diff --git a/config.example.toml b/config.example.toml |
5662 | index 1a9f152..4afc1cd 100644 |
5663 | --- a/config.example.toml |
5664 | +++ b/config.example.toml |
5665 | @@ -97,13 +97,15 @@ links = [ |
5666 | address = "localhost:8080" |
5667 | |
5668 | [web] |
5669 | - # path to the directory containing all themes system themes, at least one theme, |
5670 | - # typically "default" must be present in order for the service to function. |
5671 | - # themes_path = "content" |
5672 | # default theme that will be used when none is specified in user configuration. |
5673 | # additionally the default theme will be used to load assets that are not |
5674 | # overriden in the actively selected theme. |
5675 | # default_theme = "default" |
5676 | + # [[web.themes]] |
5677 | + # unique name to identify the theme in the web UI |
5678 | + # name = "my-theme" |
5679 | + # path to the directory containing the theme assets |
5680 | + # path = "/usr/lib/ayllu/themes/my-theme" |
5681 | |
5682 | # static hosting |
5683 | # see an example Nginx configuration in contrib/nginx/nginx.conf |
5684 | @@ -132,6 +134,7 @@ migrate = true |
5685 | # exposed as CSS classes which can be used to create themes. |
5686 | keywords = [ |
5687 | "attribute", |
5688 | + "comment", |
5689 | "constant", |
5690 | "function.builtin", |
5691 | "function", |
5692 | diff --git a/contrib/example-theme/README.md b/contrib/example-theme/README.md |
5693 | new file mode 100644 |
5694 | index 0000000..98a5092 |
5695 | --- /dev/null |
5696 | +++ b/contrib/example-theme/README.md |
5697 | @@ -0,0 +1,12 @@ |
5698 | + # example-theme |
5699 | + |
5700 | + Example theme that is loaded from the file system. |
5701 | + |
5702 | + ## File Structure |
5703 | + |
5704 | + theme.css # extends the base css file in default/theme.css |
5705 | + templates/ # override any templates in default/*.html |
5706 | + templates/about.html |
5707 | + assets/ # static assets served |
5708 | + assets/logo.svg # override any base assets in default/assets/* |
5709 | + assets/extra-file.png # additional static assets |
5710 | diff --git a/contrib/example-theme/assets/logo.svg b/contrib/example-theme/assets/logo.svg |
5711 | new file mode 100644 |
5712 | index 0000000..51596eb |
5713 | --- /dev/null |
5714 | +++ b/contrib/example-theme/assets/logo.svg |
5715 | @@ -0,0 +1,12 @@ |
5716 | + <svg id="emoji" viewBox="0 0 72 72" xmlns="http://www.w3.org/2000/svg"> |
5717 | + <g id="color"> |
5718 | + <path fill="#FCEA2B" stroke="none" d="M7.3634,42.4095c4.5525,6.1703,11.874,10.1726,20.1303,10.1726c13.8071,0,25-11.1929,25-25 c0-8.5226-4.2646-16.0492-10.7763-20.5621c13.0383,2.8385,22.7812,14.4426,22.7812,28.3317c0,16.0163-12.9837,29-29,29 C21.9109,64.3517,10.5097,55.0229,7.3634,42.4095z"/> |
5719 | + <path fill="#F1B31C" stroke="none" d="M45.8373,9.2108c8.25,4.25,16.1946,11.8724,16.1946,24.6742c0,15.4494-12.5242,27.9735-27.9735,27.9735 c-9.2431,0-19.7524-4.8353-24.294-15.5436c0,0,4.3805,18.6568,25.7189,18.665c19.327,0.0074,28.0419-20.6218,28.0419-20.6218 C70.033,12.3815,45.8373,9.2108,45.8373,9.2108z"/> |
5720 | + </g> |
5721 | + <g id="hair"/> |
5722 | + <g id="skin"/> |
5723 | + <g id="skin-shadow"/> |
5724 | + <g id="line"> |
5725 | + <path fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M7.3634,42.4095c4.5525,6.1703,11.874,10.1726,20.1303,10.1726c13.8071,0,25-11.1929,25-25 c0-8.5226-4.2646-16.0492-10.7763-20.5621c13.0383,2.8385,22.7812,14.4426,22.7812,28.3317c0,16.0163-12.9837,29-29,29 C21.9109,64.3517,10.5097,55.0229,7.3634,42.4095z"/> |
5726 | + </g> |
5727 | + </svg> |
5728 | diff --git a/contrib/example-theme/templates/about.html b/contrib/example-theme/templates/about.html |
5729 | new file mode 100644 |
5730 | index 0000000..d1302bc |
5731 | --- /dev/null |
5732 | +++ b/contrib/example-theme/templates/about.html |
5733 | @@ -0,0 +1,2 @@ |
5734 | + {% extends "base.html" %} |
5735 | + {% block content %}<h1>Custom About Page</h1>{% endblock %} |
5736 | diff --git a/contrib/example-theme/theme.css b/contrib/example-theme/theme.css |
5737 | new file mode 100644 |
5738 | index 0000000..5f9c70c |
5739 | --- /dev/null |
5740 | +++ b/contrib/example-theme/theme.css |
5741 | @@ -0,0 +1,4 @@ |
5742 | + /* An Example Theme */ |
5743 | + div.logo > svg { |
5744 | + min-width: 3em; |
5745 | + } |
5746 | diff --git a/package.json b/package.json |
5747 | index b6118fb..b89e131 100644 |
5748 | --- a/package.json |
5749 | +++ b/package.json |
5750 | @@ -4,11 +4,11 @@ |
5751 | "main": "index.js", |
5752 | "repository": { |
5753 | "type": "git", |
5754 | - "url": "https://src.kevinschoon.com/projects/ayllu" |
5755 | + "url": "https://ayllu-forge.org/projects/ayllu" |
5756 | }, |
5757 | "author": "", |
5758 | "license": "AGPL-3.0", |
5759 | "dependencies": { |
5760 | - "@picocss/pico": "^1.5.10" |
5761 | + "open-props": "^1.7.4" |
5762 | } |
5763 | } |
5764 | diff --git a/scripts/check_build_dependencies.sh b/scripts/check_build_dependencies.sh |
5765 | index cfb4893..e6c40da 100755 |
5766 | --- a/scripts/check_build_dependencies.sh |
5767 | +++ b/scripts/check_build_dependencies.sh |
5768 | @@ -31,6 +31,7 @@ check_cmd "sassc" |
5769 | check_cmd "sqlx" |
5770 | check_cmd "sqlite3" |
5771 | check_cmd "npm" |
5772 | + check_cmd "djlint" # format / lint jinja html templates |
5773 | |
5774 | # check for openssl which annoyingly is required to build sqlx-cli if that is |
5775 | # being installed from a non-distribution package i.e. cargo install |
5776 | diff --git a/scripts/compile_stylesheets.sh b/scripts/compile_stylesheets.sh |
5777 | index aae7402..1a24852 100755 |
5778 | --- a/scripts/compile_stylesheets.sh |
5779 | +++ b/scripts/compile_stylesheets.sh |
5780 | @@ -1,8 +1 @@ |
5781 | #!/bin/sh |
5782 | - |
5783 | - files=$(find ayllu/themes -maxdepth 2 -name 'theme.scss') |
5784 | - |
5785 | - for theme_path in ${files} ; do |
5786 | - sassc --style compressed -I node_modules \ |
5787 | - "${theme_path}" "$(dirname "${theme_path}")/main.min.css"; |
5788 | - done |
5789 | diff --git a/scripts/format_all_templates.sh b/scripts/format_all_templates.sh |
5790 | new file mode 100755 |
5791 | index 0000000..1ef2506 |
5792 | --- /dev/null |
5793 | +++ b/scripts/format_all_templates.sh |
5794 | @@ -0,0 +1,3 @@ |
5795 | + #!/bin/sh |
5796 | + # |
5797 | + find . -name '*.html' -not -path './www/public/*' -exec djlint --reformat {} \; |
5798 | diff --git a/scripts/lint_all_templates.sh b/scripts/lint_all_templates.sh |
5799 | new file mode 100755 |
5800 | index 0000000..74d6c22 |
5801 | --- /dev/null |
5802 | +++ b/scripts/lint_all_templates.sh |
5803 | @@ -0,0 +1,3 @@ |
5804 | + #!/bin/sh |
5805 | + # |
5806 | + find . -name '*.html' -not -path './www/public/*' -exec djlint {} \; |
5807 | diff --git a/www/content/_index.md b/www/content/_index.md |
5808 | index e2f4e5a..532857f 100644 |
5809 | --- a/www/content/_index.md |
5810 | +++ b/www/content/_index.md |
5811 | @@ -3,61 +3,53 @@ title = "index" |
5812 | template = "index.html" |
5813 | +++ |
5814 | |
5815 | - <div class="screenshot"> |
5816 | - <a href="https://ayllu-forge.org/projects/ayllu"> |
5817 | - <img class="screenshot night" src="/assets/images/ui.png" /></a> |
5818 | - <img class="screenshot day" src="/assets/images/ui-day.png" /></a> |
5819 | - </div> |
5820 | - |
5821 | - # Welcome to Ayllu! |
5822 | - |
5823 | - #### A Hyper Performant & Hackable Code Forge Built on Open Standards |
5824 | + # Hyper Performant & Hackable Code Forge Built on Open Standards |
5825 | |
5826 | Ayllu is a lightweight code forge designed to enable individuals and |
5827 | community projects develop software in collaboration across open internet |
5828 | standards. |
5829 | |
5830 | - ##### General Purpose Git UI |
5831 | + ## General Purpose Git UI |
5832 | |
5833 | General purpose web based UI for git. |
5834 | Browse hosted projects, view contributors, source code, blame, releases, etc. |
5835 | |
5836 | - ##### Source Code Analysis |
5837 | + ## Source Code Analysis |
5838 | |
5839 | Super accurate syntax highlighting and code composition insight across project |
5840 | history. |
5841 | |
5842 | - ##### Incremental Jobs |
5843 | + ## Incremental Jobs |
5844 | |
5845 | A built-in configurable incremental jobs system controlled via Git hooks and/or |
5846 | cron to extend forge functionality. |
5847 | |
5848 | - ##### Extensible Plugin System |
5849 | + ## Extensible Plugin System |
5850 | |
5851 | An extensible RPC based plugin system allows adding large external integrations. |
5852 | |
5853 | - ##### Completely Themeable |
5854 | + ## Completely Themeable |
5855 | |
5856 | The web interface is fully customizable, a few themes |
5857 | [already](https://ayllu-forge.org/config) exist and more are on the way. |
5858 | |
5859 | - ##### Web 1.5 |
5860 | + ## Web 1.5 |
5861 | |
5862 | Super fast web frontend with first class support for RSS based project |
5863 | subscriptions. Ayllu loads faster than any other code forge in existence. |
5864 | If it doesn't, it's a bug! |
5865 | |
5866 | - ##### Static Hosting |
5867 | + ## Static Hosting |
5868 | |
5869 | Serve static websites directly from a git repository making project sites, |
5870 | documentation, or other assets simple to self-host. |
5871 | |
5872 | - ##### Mailing List Management |
5873 | + ## Mailing List Management |
5874 | |
5875 | Full featured email based software development workflows and mailing list |
5876 | management based on [Mailpot](https://git.meli-email.org/meli/mailpot) 🍯. |
5877 | |
5878 | - ##### Much More |
5879 | + ## Much More |
5880 | |
5881 | New features planned such as continuous integration, mailing list support, |
5882 | external API, federation, and more. |
5883 | diff --git a/www/content/docs/architecture.md b/www/content/docs/architecture.md |
5884 | index 8dd6597..27b98ec 100644 |
5885 | --- a/www/content/docs/architecture.md |
5886 | +++ b/www/content/docs/architecture.md |
5887 | @@ -4,6 +4,8 @@ slug = "architecture" |
5888 | weight = 0 |
5889 | +++ |
5890 | |
5891 | + # The Architecture of Ayllu |
5892 | + |
5893 | **Ayllu is a new software project and it's design is evolving.** |
5894 | |
5895 | It's basic architecture is that of a single binary providing a web interface to |
5896 | diff --git a/www/content/docs/themes.md b/www/content/docs/themes.md |
5897 | new file mode 100644 |
5898 | index 0000000..3cf71f7 |
5899 | --- /dev/null |
5900 | +++ b/www/content/docs/themes.md |
5901 | @@ -0,0 +1,61 @@ |
5902 | + +++ |
5903 | + title = "Themes" |
5904 | + weight = 1 |
5905 | + +++ |
5906 | + |
5907 | + # Themeing Ayllu |
5908 | + |
5909 | + Ayllu can be customized in a variety of ways including custom CSS, modifying |
5910 | + Jinja based HTML templates, or by adding new static assets such as images. |
5911 | + Available themes can be viewed and enabled from the `/config` page. |
5912 | + |
5913 | + ## The Default Theme |
5914 | + |
5915 | + The default theme is located in `ayllu/themes/default` and is served as a base |
5916 | + and all themes serve content from this theme if they do not override it's |
5917 | + assets. It is possible to change the default theme by setting it in your Ayllu |
5918 | + configuration file. |
5919 | + |
5920 | + [web] |
5921 | + default_theme = "my-custom-theme" |
5922 | + |
5923 | + By changing the default theme all additionally loaded themes will inherit the |
5924 | + templates and assets of the default theme. |
5925 | + |
5926 | + ## Built-in vs External Themes |
5927 | + |
5928 | + ### Built-in Themes |
5929 | + |
5930 | + Built-in themes are compiled into the Ayllu binary and available for selection |
5931 | + from the config section of the web interface. These themes are available at |
5932 | + `ayllu/themes/`. These themes use [lightning css](https://lightningcss.dev/) |
5933 | + at build time to build the theme's `main.min.css` file. |
5934 | + |
5935 | + ### External Themes |
5936 | + |
5937 | + Additional themes can be loaded directly from the file system and allow the |
5938 | + addition of new themes without recompiling Ayllu. |
5939 | + |
5940 | + [web] |
5941 | + |
5942 | + default_theme = "default" |
5943 | + |
5944 | + [[web.theme]] |
5945 | + |
5946 | + name = "my-custom-theme" |
5947 | + # path to a directory of theme templates, assets, and stylesheets |
5948 | + path = "/var/lib/ayllu/themes/my-custom-theme" |
5949 | + |
5950 | + ### File System Layout |
5951 | + |
5952 | + All files are optional in themes, an empty directory is considered a valid |
5953 | + theme and will result in an identical configuration to the `default_theme`. |
5954 | + |
5955 | + assets/ # SVG and other static assets served from /assets |
5956 | + assets/logo.svg # main logo in the left hand nav bar |
5957 | + assets/feed.xsl # XSL file used to style RSS feeds |
5958 | + assets/*.svg # additional assets for various parts of the UI |
5959 | + templates/ # directory of Jinja templates |
5960 | + theme.css # additional stylesheet to extend the default |
5961 | + |
5962 | + See `contrib/example-theme` for a functional custom theme to extend as a base. |
5963 | diff --git a/www/public/docs/architecture/index.html b/www/public/docs/architecture/index.html |
5964 | index bfeb01a..02dfd41 100644 |
5965 | --- a/www/public/docs/architecture/index.html |
5966 | +++ b/www/public/docs/architecture/index.html |
5967 | @@ -1 +1 @@ |
5968 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li class=active><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a></ul></div><div class=doc-content><h1>Architecture</h1><p><strong>Ayllu is a new software project and it's design is evolving.</strong><p>It's basic architecture is that of a single binary providing a web interface to browse and interact with Git repositories as well as an RPC server based on <a href=https://github.com/google/tarpc>tarpc</a> with an embedded client. The RPC server running in the core Ayllu binary is called the <code>job_server</code> and it provides an interface to interact with Ayllu for administrators. Much of the functionality of Ayllu is implemented via <code>RPC extensions</code> which are minimal binaries that are used to extend the core functionality of Ayllu.<p>The current architecture of Ayllu is depicted below:<p><a href=/assets/architecture.svg><img class=diagram src=/assets/architecture.svg></a></div></div></main><footer class=page-footer>2024, <a href=/projects/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
5969 | \ No newline at end of file |
5970 | + <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li class=active><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=the-architecture-of-ayllu><a aria-label="Anchor link for: the-architecture-of-ayllu" class=zola-anchor href=#the-architecture-of-ayllu>The Architecture of Ayllu</a></h1><p><strong>Ayllu is a new software project and it's design is evolving.</strong><p>It's basic architecture is that of a single binary providing a web interface to browse and interact with Git repositories as well as an RPC server based on <a href=https://github.com/google/tarpc>tarpc</a> with an embedded client. The RPC server running in the core Ayllu binary is called the <code>job_server</code> and it provides an interface to interact with Ayllu for administrators. Much of the functionality of Ayllu is implemented via <code>RPC extensions</code> which are minimal binaries that are used to extend the core functionality of Ayllu.<p>The current architecture of Ayllu is depicted below:<p><a href=/assets/architecture.svg><img class=diagram src=/assets/architecture.svg></a></div></div></main><footer class=page-footer>2024, <a href=/projects/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
5971 | \ No newline at end of file |
5972 | diff --git a/www/public/docs/builds/index.html b/www/public/docs/builds/index.html |
5973 | index 0b018c2..fe9cfe9 100644 |
5974 | --- a/www/public/docs/builds/index.html |
5975 | +++ b/www/public/docs/builds/index.html |
5976 | @@ -1,4 +1,4 @@ |
5977 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li class=active><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a></ul></div><div class=doc-content><h1>Builds</h1><p>Ayllu contains a plugin called <code>ayllu-build</code> which is responsible for executing build manifests in a CI/CD environment. The design of the build system prioritizes the ability to run the entire workflow locally.<h3 id=an-example-local-workflow><a aria-label="Anchor link for: an-example-local-workflow" class=zola-anchor href=#an-example-local-workflow>An Example Local Workflow</a></h3><p>Build manifests are written in <a href=https://nickel-lang.org/>Nickel</a>.<pre class=language-sh data-lang=sh><code class=language-sh data-lang=sh>mkdir -p my-test-repo/.ayllu/build |
5978 | + <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li class=active><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><p>Ayllu contains a plugin called <code>ayllu-build</code> which is responsible for executing build manifests in a CI/CD environment. The design of the build system prioritizes the ability to run the entire workflow locally.<h3 id=an-example-local-workflow><a aria-label="Anchor link for: an-example-local-workflow" class=zola-anchor href=#an-example-local-workflow>An Example Local Workflow</a></h3><p>Build manifests are written in <a href=https://nickel-lang.org/>Nickel</a>.<pre class=language-sh data-lang=sh><code class=language-sh data-lang=sh>mkdir -p my-test-repo/.ayllu/build |
5979 | cd my-test-repo && git init |
5980 | # create a simple workflow that prints "Hello" and "World" |
5981 | cat <<EOF > .ayllu/build/main.ncl |
5982 | diff --git a/www/public/docs/configuration/index.html b/www/public/docs/configuration/index.html |
5983 | index 21d0927..af98fd8 100644 |
5984 | --- a/www/public/docs/configuration/index.html |
5985 | +++ b/www/public/docs/configuration/index.html |
5986 | @@ -1,4 +1,4 @@ |
5987 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li class=active><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a></ul></div><div class=doc-content><h1>Configuration</h1><h1 id=initial-configuration><a aria-label="Anchor link for: initial-configuration" class=zola-anchor href=#initial-configuration>Initial Configuration</a></h1><p>After following the <a href=https://ayllu-forge.org/docs/installation>installation</a> you need to setup your configuration file and initialize the database.<h2 id=user-based-installation><a aria-label="Anchor link for: user-based-installation" class=zola-anchor href=#user-based-installation>User Based Installation</a></h2><pre class=language-sh data-lang=sh><code class=language-sh data-lang=sh>mkdir ~/.config/ayllu |
5988 | + <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li class=active><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=initial-configuration><a aria-label="Anchor link for: initial-configuration" class=zola-anchor href=#initial-configuration>Initial Configuration</a></h1><p>After following the <a href=https://ayllu-forge.org/docs/installation>installation</a> you need to setup your configuration file and initialize the database.<h2 id=user-based-installation><a aria-label="Anchor link for: user-based-installation" class=zola-anchor href=#user-based-installation>User Based Installation</a></h2><pre class=language-sh data-lang=sh><code class=language-sh data-lang=sh>mkdir ~/.config/ayllu |
5989 | ayllu config generate > ~/.config/ayllu/config.yaml |
5990 | # open up config.yaml in your favorite editor and configure at least one |
5991 | # collection |
5992 | diff --git a/www/public/docs/developers/index.html b/www/public/docs/developers/index.html |
5993 | index 15292cb..9c8d943 100644 |
5994 | --- a/www/public/docs/developers/index.html |
5995 | +++ b/www/public/docs/developers/index.html |
5996 | @@ -1,4 +1,4 @@ |
5997 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li class=active><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a></ul></div><div class=doc-content><h1>Developers</h1><h1 id=developing-components><a aria-label="Anchor link for: developing-components" class=zola-anchor href=#developing-components>Developing Components</a></h1><p>Ayllu is split up into several distinct components, to work on one of them you typically want to start one of two feedback cycles: <code>lint->test->compile</code> or <code>compile->serve</code>. To start each one you can can run <code>scripts/test.sh $COMPONENT</code> or <code>scripts/watch.sh $COMPONENT</code> and the appropriate <code>cargo watch</code> command will be started for you.<h1 id=testing-the-entire-ci-workflow><a aria-label="Anchor link for: testing-the-entire-ci-workflow" class=zola-anchor href=#testing-the-entire-ci-workflow>Testing the Entire CI Workflow</a></h1><p>You can run all of the CI tests locally by invoking <code>ayllu-build</code> directly, assuming it is compiled it can be launched like this:<pre class=language-sh data-lang=sh><code class=language-sh data-lang=sh># run all tests in .ayllu |
5998 | + <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li class=active><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=developing-components><a aria-label="Anchor link for: developing-components" class=zola-anchor href=#developing-components>Developing Components</a></h1><p>Ayllu is split up into several distinct components, to work on one of them you typically want to start one of two feedback cycles: <code>lint->test->compile</code> or <code>compile->serve</code>. To start each one you can can run <code>scripts/test.sh $COMPONENT</code> or <code>scripts/watch.sh $COMPONENT</code> and the appropriate <code>cargo watch</code> command will be started for you.<h1 id=testing-the-entire-ci-workflow><a aria-label="Anchor link for: testing-the-entire-ci-workflow" class=zola-anchor href=#testing-the-entire-ci-workflow>Testing the Entire CI Workflow</a></h1><p>You can run all of the CI tests locally by invoking <code>ayllu-build</code> directly, assuming it is compiled it can be launched like this:<pre class=language-sh data-lang=sh><code class=language-sh data-lang=sh># run all tests in .ayllu |
5999 | ayllu-build evaluate |
6000 | </code></pre><h1 id=ayllu-forge-org><a aria-label="Anchor link for: ayllu-forge-org" class=zola-anchor href=#ayllu-forge-org>ayllu-forge.org</a></h1><p>The <a href=https://ayllu-forge.org>Ayllu website</a> and project documentation are built together with <a href=https://www.getzola.org/>Zola</a> which you must install. After which you can startup a local preview of the site with the following commands:<pre class=language-sh data-lang=sh><code class=language-sh data-lang=sh>cd www && zola serve |
6001 | </code></pre><p>The generated content are hosted directly from Ayllu and you simply need to build and commit the generated code directly into the repository.<pre class=language-sh data-lang=sh><code class=language-sh data-lang=sh>cd www && zola build |
6002 | diff --git a/www/public/docs/faq/index.html b/www/public/docs/faq/index.html |
6003 | index e5f1e73..03d2494 100644 |
6004 | --- a/www/public/docs/faq/index.html |
6005 | +++ b/www/public/docs/faq/index.html |
6006 | @@ -1 +1 @@ |
6007 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li class=active><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a></ul></div><div class=doc-content><h1>FAQ</h1><h5 id=what-does-ayllu-mean><a aria-label="Anchor link for: what-does-ayllu-mean" class=zola-anchor href=#what-does-ayllu-mean>What Does "Ayllu" Mean?</a></h5><p>The name <a href=https://en.wikipedia.org/wiki/Ayllu>Ayllu</a> <em>/ˈajʎu/</em>, <em>eye-joo</em> is the Quechua word for the traditional form of a community in the Andes region of South America, particularly in Bolivia and Peru.<h5 id=do-you-provide-hosting><a aria-label="Anchor link for: do-you-provide-hosting" class=zola-anchor href=#do-you-provide-hosting>Do You Provide Hosting?</a></h5><p>Not currently. If there was enough interest the project might offer hosted environments as a way to sustain it's development.</div></div></main><footer class=page-footer>2024, <a href=/projects/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
6008 | \ No newline at end of file |
6009 | + <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li class=active><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h5 id=what-does-ayllu-mean><a aria-label="Anchor link for: what-does-ayllu-mean" class=zola-anchor href=#what-does-ayllu-mean>What Does "Ayllu" Mean?</a></h5><p>The name <a href=https://en.wikipedia.org/wiki/Ayllu>Ayllu</a> <em>/ˈajʎu/</em>, <em>eye-joo</em> is the Quechua word for the traditional form of a community in the Andes region of South America, particularly in Bolivia and Peru.<h5 id=do-you-provide-hosting><a aria-label="Anchor link for: do-you-provide-hosting" class=zola-anchor href=#do-you-provide-hosting>Do You Provide Hosting?</a></h5><p>Not currently. If there was enough interest the project might offer hosted environments as a way to sustain it's development.</div></div></main><footer class=page-footer>2024, <a href=/projects/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
6010 | \ No newline at end of file |
6011 | diff --git a/www/public/docs/index.html b/www/public/docs/index.html |
6012 | index f116940..9b4ac14 100644 |
6013 | --- a/www/public/docs/index.html |
6014 | +++ b/www/public/docs/index.html |
6015 | @@ -1 +1 @@ |
6016 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a></ul></div><div class=doc-content><h1 id=documentation><a aria-label="Anchor link for: documentation" class=zola-anchor href=#documentation>Documentation</a></h1><p>Welcome to the Ayllu documentation 📖, this is section serves as an authoritative reference on all things related to the Ayllu code forge!</div></div></main><footer class=page-footer>2024, <a href=/projects/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
6017 | \ No newline at end of file |
6018 | + <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=documentation><a aria-label="Anchor link for: documentation" class=zola-anchor href=#documentation>Documentation</a></h1><p>Welcome to the Ayllu documentation 📖, this is section serves as an authoritative reference on all things related to the Ayllu code forge!</div></div></main><footer class=page-footer>2024, <a href=/projects/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
6019 | \ No newline at end of file |
6020 | diff --git a/www/public/docs/installation/index.html b/www/public/docs/installation/index.html |
6021 | index 79e62cd..7b1f4a7 100644 |
6022 | --- a/www/public/docs/installation/index.html |
6023 | +++ b/www/public/docs/installation/index.html |
6024 | @@ -1,4 +1,4 @@ |
6025 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li class=active><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a></ul></div><div class=doc-content><h1>Installation</h1><h1 id=running-as-a-container><a aria-label="Anchor link for: running-as-a-container" class=zola-anchor href=#running-as-a-container>Running as a Container</a></h1><p>The quickest way to get started running Ayllu is by using a container. <a href=https://podman.io/>Podman</a> is the only supported container platform although Docker may work as well.<p>There are several different configurations that can be used to run Ayllu as a container.<ul><li><a href=https://ayllu-forge.org/docs/installation/#rootless-container-with-ayllu-running-as-root>Rootless with Ayllu running as root within the container</a><li><a href=https://ayllu-forge.org/docs/installation/#rootless-with-a-non-root-user-within-a-container>Rootless with a non-root user within the container</a><li><a href=https://ayllu-forge.org/docs/installation/#as-root-with-ayllu-running-as-a-non-root-user>As root with Ayllu running as a non-root user</a></ul><h2 id=rootless-container-with-ayllu-running-as-root><a aria-label="Anchor link for: rootless-container-with-ayllu-running-as-root" class=zola-anchor href=#rootless-container-with-ayllu-running-as-root>Rootless Container with Ayllu Running as Root</a></h2><p>This configuration works best if you want Ayllu to have access to your repositories for browsing your code locally. The tutorial assumes that you have permissions to access all of your code repositories.Note that the commands below use a separate configuration and data paths to avoid conflicting with the default paths if the Ayllu binary is installed directly on your system.<p>First create configuration and data paths that we will map into the container.<pre><code>mkdir ~/.config/ayllu-podman |
6026 | + <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li class=active><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=running-as-a-container><a aria-label="Anchor link for: running-as-a-container" class=zola-anchor href=#running-as-a-container>Running as a Container</a></h1><p>The quickest way to get started running Ayllu is by using a container. <a href=https://podman.io/>Podman</a> is the only supported container platform although Docker may work as well.<p>There are several different configurations that can be used to run Ayllu as a container.<ul><li><a href=https://ayllu-forge.org/docs/installation/#rootless-container-with-ayllu-running-as-root>Rootless with Ayllu running as root within the container</a><li><a href=https://ayllu-forge.org/docs/installation/#rootless-with-a-non-root-user-within-a-container>Rootless with a non-root user within the container</a><li><a href=https://ayllu-forge.org/docs/installation/#as-root-with-ayllu-running-as-a-non-root-user>As root with Ayllu running as a non-root user</a></ul><h2 id=rootless-container-with-ayllu-running-as-root><a aria-label="Anchor link for: rootless-container-with-ayllu-running-as-root" class=zola-anchor href=#rootless-container-with-ayllu-running-as-root>Rootless Container with Ayllu Running as Root</a></h2><p>This configuration works best if you want Ayllu to have access to your repositories for browsing your code locally. The tutorial assumes that you have permissions to access all of your code repositories.Note that the commands below use a separate configuration and data paths to avoid conflicting with the default paths if the Ayllu binary is installed directly on your system.<p>First create configuration and data paths that we will map into the container.<pre><code>mkdir ~/.config/ayllu-podman |
6027 | mkdir ~/.local/share/ayllu-podman |
6028 | </code></pre><p>Next pull the latest version of the container and generate a new configuration file.<pre><code>podman pull registry.ayllu-forge.org/projects/ayllu:main |
6029 | podman run --rm -ti registry.ayllu-forge.org/projects/ayllu:main ayllu config generate > ~/.config/ayllu-podman/config.toml |
6030 | diff --git a/www/public/docs/mail/index.html b/www/public/docs/mail/index.html |
6031 | index b8afd24..7eac75c 100644 |
6032 | --- a/www/public/docs/mail/index.html |
6033 | +++ b/www/public/docs/mail/index.html |
6034 | @@ -1 +1 @@ |
6035 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li class=active><a href=https://ayllu-forge.org/docs/mail/>Mail</a></ul></div><div class=doc-content><h1>Mail</h1><h1 id=mailing-list-support><a aria-label="Anchor link for: mailing-list-support" class=zola-anchor href=#mailing-list-support>Mailing List Support</a></h1><p>Ayllu has full featured support for email based development workflows. It is based on the excellent <a href=https://git.meli-email.org/meli/mailpot>mailpot</a> mailing list manager.</div></div></main><footer class=page-footer>2024, <a href=/projects/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
6036 | \ No newline at end of file |
6037 | + <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li class=active><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=mailing-list-support><a aria-label="Anchor link for: mailing-list-support" class=zola-anchor href=#mailing-list-support>Mailing List Support</a></h1><p>Ayllu has full featured support for email based development workflows. It is based on the excellent <a href=https://git.meli-email.org/meli/mailpot>mailpot</a> mailing list manager.</div></div></main><footer class=page-footer>2024, <a href=/projects/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
6038 | \ No newline at end of file |
6039 | diff --git a/www/public/docs/themes/index.html b/www/public/docs/themes/index.html |
6040 | new file mode 100644 |
6041 | index 0000000..344aae8 |
6042 | --- /dev/null |
6043 | +++ b/www/public/docs/themes/index.html |
6044 | @@ -0,0 +1,18 @@ |
6045 | + <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=documentation><div class=side-panel><ul><li><a href=https://ayllu-forge.org/docs/architecture/>Architecture</a><li><a href=https://ayllu-forge.org/docs/builds/>Builds</a><li><a href=https://ayllu-forge.org/docs/configuration/>Configuration</a><li><a href=https://ayllu-forge.org/docs/developers/>Developers</a><li><a href=https://ayllu-forge.org/docs/installation/>Installation</a><li><a href=https://ayllu-forge.org/docs/faq/>FAQ</a><li><a href=https://ayllu-forge.org/docs/mail/>Mail</a><li class=active><a href=https://ayllu-forge.org/docs/themes/>Themes</a></ul></div><div class=doc-content><h1 id=themeing-ayllu><a aria-label="Anchor link for: themeing-ayllu" class=zola-anchor href=#themeing-ayllu>Themeing Ayllu</a></h1><p>Ayllu can be customized in a variety of ways including custom CSS, modifying Jinja based HTML templates, or by adding new static assets such as images. Available themes can be viewed and enabled from the <code>/config</code> page.<h2 id=the-default-theme><a aria-label="Anchor link for: the-default-theme" class=zola-anchor href=#the-default-theme>The Default Theme</a></h2><p>The default theme is located in <code>ayllu/themes/default</code> and is served as a base and all themes serve content from this theme if they do not override it's assets. It is possible to change the default theme by setting it in your Ayllu configuration file.<pre><code>[web] |
6046 | + default_theme = "my-custom-theme" |
6047 | + </code></pre><p>By changing the default theme all additionally loaded themes will inherit the templates and assets of the default theme.<h2 id=built-in-vs-external-themes><a aria-label="Anchor link for: built-in-vs-external-themes" class=zola-anchor href=#built-in-vs-external-themes>Built-in vs External Themes</a></h2><h3 id=built-in-themes><a aria-label="Anchor link for: built-in-themes" class=zola-anchor href=#built-in-themes>Built-in Themes</a></h3><p>Built-in themes are compiled into the Ayllu binary and available for selection from the config section of the web interface. These themes are available at <code>ayllu/themes/</code>. These themes use <a href=https://lightningcss.dev/>lightning css</a> at build time to build the theme's <code>main.min.css</code> file.<h3 id=external-themes><a aria-label="Anchor link for: external-themes" class=zola-anchor href=#external-themes>External Themes</a></h3><p>Additional themes can be loaded directly from the file system and allow the addition of new themes without recompiling Ayllu.<pre><code>[web] |
6048 | + |
6049 | + default_theme = "default" |
6050 | + |
6051 | + [[web.theme]] |
6052 | + |
6053 | + name = "my-custom-theme" |
6054 | + # path to a directory of theme templates, assets, and stylesheets |
6055 | + path = "/var/lib/ayllu/themes/my-custom-theme" |
6056 | + </code></pre><h3 id=file-system-layout><a aria-label="Anchor link for: file-system-layout" class=zola-anchor href=#file-system-layout>File System Layout</a></h3><p>All files are optional in themes, an empty directory is considered a valid theme and will result in an identical configuration to the <code>default_theme</code>.<pre><code>assets/ # SVG and other static assets served from /assets |
6057 | + assets/logo.svg # main logo in the left hand nav bar |
6058 | + assets/feed.xsl # XSL file used to style RSS feeds |
6059 | + assets/*.svg # additional assets for various parts of the UI |
6060 | + templates/ # directory of Jinja templates |
6061 | + theme.css # additional stylesheet to extend the default |
6062 | + </code></pre><p>See <code>contrib/example-theme</code> for a functional custom theme to extend as a base.</div></div></main><footer class=page-footer>2024, <a href=/projects/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
6063 | \ No newline at end of file |
6064 | diff --git a/www/public/index.html b/www/public/index.html |
6065 | index 546f763..273ce86 100644 |
6066 | --- a/www/public/index.html |
6067 | +++ b/www/public/index.html |
6068 | @@ -1 +1 @@ |
6069 | - <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><div class=screenshot><a href=https://ayllu-forge.org/projects/ayllu> <img class="screenshot night" src=/assets/images/ui.png></a><img class="screenshot day" src=/assets/images/ui-day.png></div><h1 id=welcome-to-ayllu>Welcome to Ayllu!</h1><h4 id=a-hyper-performant-hackable-code-forge-built-on-open-standards>A Hyper Performant & Hackable Code Forge Built on Open Standards</h4><p>Ayllu is a lightweight code forge designed to enable individuals and community projects develop software in collaboration across open internet standards.<h5 id=general-purpose-git-ui>General Purpose Git UI</h5><p>General purpose web based UI for git. Browse hosted projects, view contributors, source code, blame, releases, etc.<h5 id=source-code-analysis>Source Code Analysis</h5><p>Super accurate syntax highlighting and code composition insight across project history.<h5 id=incremental-jobs>Incremental Jobs</h5><p>A built-in configurable incremental jobs system controlled via Git hooks and/or cron to extend forge functionality.<h5 id=extensible-plugin-system>Extensible Plugin System</h5><p>An extensible RPC based plugin system allows adding large external integrations.<h5 id=completely-themeable>Completely Themeable</h5><p>The web interface is fully customizable, a few themes <a href=https://ayllu-forge.org/config>already</a> exist and more are on the way.<h5 id=web-1-5>Web 1.5</h5><p>Super fast web frontend with first class support for RSS based project subscriptions. Ayllu loads faster than any other code forge in existence. If it doesn't, it's a bug!<h5 id=static-hosting>Static Hosting</h5><p>Serve static websites directly from a git repository making project sites, documentation, or other assets simple to self-host.<h5 id=mailing-list-management>Mailing List Management</h5><p>Full featured email based software development workflows and mailing list management based on <a href=https://git.meli-email.org/meli/mailpot>Mailpot</a> 🍯.<h5 id=much-more>Much More</h5><p>New features planned such as continuous integration, mailing list support, external API, federation, and more.</main><footer class=page-footer>2024, <a href=/projects/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
6070 | \ No newline at end of file |
6071 | + <!doctype html><html lang=en><head><meta charset=utf-8><link href=/main.css rel=stylesheet><link href=/assets/ayllu_logo.svg rel=icon type=image/svg+xml><link href=/assets/ayllu_logo.png rel=icon sizes=any type=image/png><title>Ayllu</title></head><nav><ul><li><a href=/> <img class=logo src=/assets/ayllu_logo.png> </a></ul><ul><li><a href=https://ayllu-forge.org/browse>browse</a><li><a href=/docs>docs</a></ul></nav><body class=container><div class=wrapper><main class=page-body><h1 id=hyper-performant-hackable-code-forge-built-on-open-standards>Hyper Performant & Hackable Code Forge Built on Open Standards</h1><p>Ayllu is a lightweight code forge designed to enable individuals and community projects develop software in collaboration across open internet standards.<h2 id=general-purpose-git-ui>General Purpose Git UI</h2><p>General purpose web based UI for git. Browse hosted projects, view contributors, source code, blame, releases, etc.<h2 id=source-code-analysis>Source Code Analysis</h2><p>Super accurate syntax highlighting and code composition insight across project history.<h2 id=incremental-jobs>Incremental Jobs</h2><p>A built-in configurable incremental jobs system controlled via Git hooks and/or cron to extend forge functionality.<h2 id=extensible-plugin-system>Extensible Plugin System</h2><p>An extensible RPC based plugin system allows adding large external integrations.<h2 id=completely-themeable>Completely Themeable</h2><p>The web interface is fully customizable, a few themes <a href=https://ayllu-forge.org/config>already</a> exist and more are on the way.<h2 id=web-1-5>Web 1.5</h2><p>Super fast web frontend with first class support for RSS based project subscriptions. Ayllu loads faster than any other code forge in existence. If it doesn't, it's a bug!<h2 id=static-hosting>Static Hosting</h2><p>Serve static websites directly from a git repository making project sites, documentation, or other assets simple to self-host.<h2 id=mailing-list-management>Mailing List Management</h2><p>Full featured email based software development workflows and mailing list management based on <a href=https://git.meli-email.org/meli/mailpot>Mailpot</a> 🍯.<h2 id=much-more>Much More</h2><p>New features planned such as continuous integration, mailing list support, external API, federation, and more.</main><footer class=page-footer>2024, <a href=/projects/ayllu/blob/main/ATTRIBUTIONS.md>attributions</a></footer></div> |
6072 | \ No newline at end of file |
6073 | diff --git a/www/public/main.css b/www/public/main.css |
6074 | index 3c0c330..d4f5cbd 100644 |
6075 | --- a/www/public/main.css |
6076 | +++ b/www/public/main.css |
6077 | @@ -1,7 +1 @@ |
6078 | - /*! |
6079 | - * Pico CSS v1.5.10 (https://picocss.com) |
6080 | - * Copyright 2019-2023 - Licensed under MIT |
6081 | - * |
6082 | - * Slim version example |
6083 | - * You can export only the modules you need |
6084 | - */:root{--font-family: system-ui, -apple-system, "Segoe UI", "Roboto", "Ubuntu", "Cantarell", "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--line-height: 1.5;--font-weight: 400;--font-size: 16px;--border-radius: 0.25rem;--border-width: 1px;--outline-width: 3px;--spacing: 1rem;--typography-spacing-vertical: 1.5rem;--block-spacing-vertical: calc(var(--spacing) * 2);--block-spacing-horizontal: var(--spacing);--grid-spacing-vertical: 0;--grid-spacing-horizontal: var(--spacing);--form-element-spacing-vertical: 0.75rem;--form-element-spacing-horizontal: 1rem;--nav-element-spacing-vertical: 1rem;--nav-element-spacing-horizontal: 0.5rem;--nav-link-spacing-vertical: 0.5rem;--nav-link-spacing-horizontal: 0.5rem;--form-label-font-weight: var(--font-weight);--transition: 0.2s ease-in-out;--modal-overlay-backdrop-filter: blur(0.25rem)}@media (min-width: 576px){:root{--font-size: 17px}}@media (min-width: 768px){:root{--font-size: 18px}}@media (min-width: 992px){:root{--font-size: 19px}}@media (min-width: 1200px){:root{--font-size: 20px}}a{--text-decoration: none}a.secondary,a.contrast{--text-decoration: underline}small{--font-size: 0.875em}h1,h2,h3,h4,h5,h6{--font-weight: 700}h1{--font-size: 2rem;--typography-spacing-vertical: 3rem}h2{--font-size: 1.75rem;--typography-spacing-vertical: 2.625rem}h3{--font-size: 1.5rem;--typography-spacing-vertical: 2.25rem}h4{--font-size: 1.25rem;--typography-spacing-vertical: 1.874rem}h5{--font-size: 1.125rem;--typography-spacing-vertical: 1.6875rem}[type=checkbox],[type=radio]{--border-width: 2px}[type=checkbox][role=switch]{--border-width: 3px}thead th,thead td,tfoot th,tfoot td{--border-width: 3px}:not(thead,tfoot)>*>td{--font-size: 0.875em}pre,code,kbd,samp{--font-family: "Menlo", "Consolas", "Roboto Mono", "Ubuntu Monospace", "Noto Mono", "Oxygen Mono", "Liberation Mono", monospace, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}kbd{--font-weight: bolder}[data-theme=light],:root:not([data-theme=dark]){--background-color: #fff;--color: #415462;--h1-color: #1b2832;--h2-color: #24333e;--h3-color: #2c3d49;--h4-color: #374956;--h5-color: #415462;--h6-color: #4d606d;--muted-color: #73828c;--muted-border-color: #edf0f3;--primary: #1095c1;--primary-hover: #08769b;--primary-focus: rgba(16,149,193,.125);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #415462;--secondary-focus: rgba(89,107,120,.125);--secondary-inverse: #fff;--contrast: #1b2832;--contrast-hover: #000;--contrast-focus: rgba(89,107,120,.125);--contrast-inverse: #fff;--mark-background-color: #fff2ca;--mark-color: #543a26;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: transparent;--form-element-border-color: #a2afb9;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: transparent;--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #d5dce2;--form-element-disabled-border-color: #a2afb9;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #c62828;--form-element-invalid-active-border-color: #d32f2f;--form-element-invalid-focus-color: rgba(211,47,47,.125);--form-element-valid-border-color: #388e3c;--form-element-valid-active-border-color: #43a047;--form-element-valid-focus-color: rgba(67,160,71,.125);--switch-background-color: #bbc6ce;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #d5dce2;--range-active-border-color: #bbc6ce;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: #f6f8f9;--code-background-color: #edf0f3;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #b34d80;--code-property-color: #3d888f;--code-value-color: #986;--code-comment-color: #a2afb9;--accordion-border-color: var(--muted-border-color);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: var(--background-color);--card-border-color: var(--muted-border-color);--card-box-shadow: .0145rem .029rem .174rem rgba(27,40,50,.01698), .0335rem .067rem .402rem rgba(27,40,50,.024), .0625rem .125rem .75rem rgba(27,40,50,.03), .1125rem .225rem 1.35rem rgba(27,40,50,.036), .2085rem .417rem 2.502rem rgba(27,40,50,.04302), .5rem 1rem 6rem rgba(27,40,50,.06), 0 0 0 0.0625rem rgba(27,40,50,.015);--card-sectionning-background-color: #fbfbfc;--dropdown-background-color: #fbfbfc;--dropdown-border-color: #e1e6eb;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: #edf0f3;--modal-overlay-background-color: rgba(213,220,226,.7);--progress-background-color: #d5dce2;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(65, 84, 98)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--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(115, 130, 140)' stroke-width='4' 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");--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(65, 84, 98)' 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");--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(198, 40, 40)' 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");--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");--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(65, 84, 98)' stroke-width='2' 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");--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(65, 84, 98)' 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");--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(56, 142, 60)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:light}@media only screen and (prefers-color-scheme: dark){:root:not([data-theme]){--background-color: #11191f;--color: #bbc6ce;--h1-color: #edf0f3;--h2-color: #e1e6eb;--h3-color: #d5dce2;--h4-color: #c8d1d8;--h5-color: #bbc6ce;--h6-color: #afbbc4;--muted-color: #73828c;--muted-border-color: #1f2d38;--primary: #1095c1;--primary-hover: #1ab3e6;--primary-focus: rgba(16,149,193,.25);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #73828c;--secondary-focus: rgba(115,130,140,.25);--secondary-inverse: #fff;--contrast: #edf0f3;--contrast-hover: #fff;--contrast-focus: rgba(115,130,140,.25);--contrast-inverse: #000;--mark-background-color: #d1c284;--mark-color: #11191f;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: #11191f;--form-element-border-color: #374956;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: var(--form-element-background-color);--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #2c3d49;--form-element-disabled-border-color: #415462;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #b71c1c;--form-element-invalid-active-border-color: #c62828;--form-element-invalid-focus-color: rgba(198,40,40,.25);--form-element-valid-border-color: #2e7d32;--form-element-valid-active-border-color: #388e3c;--form-element-valid-focus-color: rgba(56,142,60,.25);--switch-background-color: #374956;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #24333e;--range-active-border-color: #2c3d49;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: rgba(115,130,140,.05);--code-background-color: #18232c;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #a65980;--code-property-color: #599fa6;--code-value-color: #8c8473;--code-comment-color: #4d606d;--accordion-border-color: var(--muted-border-color);--accordion-active-summary-color: var(--primary);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: #141e26;--card-border-color: var(--card-background-color);--card-box-shadow: .0145rem .029rem .174rem rgba(0,0,0,.01698), .0335rem .067rem .402rem rgba(0,0,0,.024), .0625rem .125rem .75rem rgba(0,0,0,.03), .1125rem .225rem 1.35rem rgba(0,0,0,.036), .2085rem .417rem 2.502rem rgba(0,0,0,.04302), .5rem 1rem 6rem rgba(0,0,0,.06), 0 0 0 0.0625rem rgba(0,0,0,.015);--card-sectionning-background-color: #18232c;--dropdown-background-color: #1b2832;--dropdown-border-color: #24333e;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: rgba(36,51,62,.75);--modal-overlay-background-color: rgba(36,51,62,.8);--progress-background-color: #24333e;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(162, 175, 185)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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(0, 0, 0)' 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");--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(115, 130, 140)' stroke-width='4' 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");--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(162, 175, 185)' 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");--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(183, 28, 28)' 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");--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");--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(162, 175, 185)' stroke-width='2' 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");--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(162, 175, 185)' 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");--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(46, 125, 50)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:dark}}[data-theme=dark]{--background-color: #11191f;--color: #bbc6ce;--h1-color: #edf0f3;--h2-color: #e1e6eb;--h3-color: #d5dce2;--h4-color: #c8d1d8;--h5-color: #bbc6ce;--h6-color: #afbbc4;--muted-color: #73828c;--muted-border-color: #1f2d38;--primary: #1095c1;--primary-hover: #1ab3e6;--primary-focus: rgba(16,149,193,.25);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #73828c;--secondary-focus: rgba(115,130,140,.25);--secondary-inverse: #fff;--contrast: #edf0f3;--contrast-hover: #fff;--contrast-focus: rgba(115,130,140,.25);--contrast-inverse: #000;--mark-background-color: #d1c284;--mark-color: #11191f;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: #11191f;--form-element-border-color: #374956;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: var(--form-element-background-color);--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #2c3d49;--form-element-disabled-border-color: #415462;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #b71c1c;--form-element-invalid-active-border-color: #c62828;--form-element-invalid-focus-color: rgba(198,40,40,.25);--form-element-valid-border-color: #2e7d32;--form-element-valid-active-border-color: #388e3c;--form-element-valid-focus-color: rgba(56,142,60,.25);--switch-background-color: #374956;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #24333e;--range-active-border-color: #2c3d49;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: rgba(115,130,140,.05);--code-background-color: #18232c;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #a65980;--code-property-color: #599fa6;--code-value-color: #8c8473;--code-comment-color: #4d606d;--accordion-border-color: var(--muted-border-color);--accordion-active-summary-color: var(--primary);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: #141e26;--card-border-color: var(--card-background-color);--card-box-shadow: .0145rem .029rem .174rem rgba(0,0,0,.01698), .0335rem .067rem .402rem rgba(0,0,0,.024), .0625rem .125rem .75rem rgba(0,0,0,.03), .1125rem .225rem 1.35rem rgba(0,0,0,.036), .2085rem .417rem 2.502rem rgba(0,0,0,.04302), .5rem 1rem 6rem rgba(0,0,0,.06), 0 0 0 0.0625rem rgba(0,0,0,.015);--card-sectionning-background-color: #18232c;--dropdown-background-color: #1b2832;--dropdown-border-color: #24333e;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: rgba(36,51,62,.75);--modal-overlay-background-color: rgba(36,51,62,.8);--progress-background-color: #24333e;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(162, 175, 185)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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(0, 0, 0)' 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");--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(115, 130, 140)' stroke-width='4' 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");--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(162, 175, 185)' 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");--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(183, 28, 28)' 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");--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");--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(162, 175, 185)' stroke-width='2' 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");--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(162, 175, 185)' 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");--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(46, 125, 50)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:dark}progress,[type=checkbox],[type=radio],[type=range]{accent-color:var(--primary)}*,*::before,*::after{box-sizing:border-box;background-repeat:no-repeat}::before,::after{text-decoration:inherit;vertical-align:inherit}:where(:root){-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--background-color);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);line-height:var(--line-height);font-family:var(--font-family);text-rendering:optimizeLegibility;overflow-wrap:break-word;cursor:default;tab-size:4}main{display:block}body{width:100%;margin:0}body>header,body>main,body>footer{width:100%;margin-right:auto;margin-left:auto;padding:var(--block-spacing-vertical) 0}.container,.container-fluid{width:100%;margin-right:auto;margin-left:auto;padding-right:var(--spacing);padding-left:var(--spacing)}@media (min-width: 576px){.container{max-width:510px;padding-right:0;padding-left:0}}@media (min-width: 768px){.container{max-width:700px}}@media (min-width: 992px){.container{max-width:920px}}@media (min-width: 1200px){.container{max-width:1130px}}section{margin-bottom:var(--block-spacing-vertical)}.grid{grid-column-gap:var(--grid-spacing-horizontal);grid-row-gap:var(--grid-spacing-vertical);display:grid;grid-template-columns:1fr;margin:0}@media (min-width: 992px){.grid{grid-template-columns:repeat(auto-fit, minmax(0%, 1fr))}}.grid>*{min-width:0}figure{display:block;margin:0;padding:0;overflow-x:auto}figure figcaption{padding:calc(var(--spacing)*.5) 0;color:var(--muted-color)}b,strong{font-weight:bolder}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,figure,form,ol,p,pre,table,ul{margin-top:0;margin-bottom:var(--typography-spacing-vertical);color:var(--color);font-style:normal;font-weight:var(--font-weight);font-size:var(--font-size)}a,[role=link]{--color: var(--primary);--background-color: transparent;outline:none;background-color:var(--background-color);color:var(--color);text-decoration:var(--text-decoration)}a:is([aria-current],:hover,:active,:focus),[role=link]:is([aria-current],:hover,:active,:focus){--color: var(--primary-hover);--text-decoration: underline}a:focus,[role=link]:focus{--background-color: var(--primary-focus)}a.secondary,[role=link].secondary{--color: var(--secondary)}a.secondary:is([aria-current],:hover,:active,:focus),[role=link].secondary:is([aria-current],:hover,:active,:focus){--color: var(--secondary-hover)}a.secondary:focus,[role=link].secondary:focus{--background-color: var(--secondary-focus)}a.contrast,[role=link].contrast{--color: var(--contrast)}a.contrast:is([aria-current],:hover,:active,:focus),[role=link].contrast:is([aria-current],:hover,:active,:focus){--color: var(--contrast-hover)}a.contrast:focus,[role=link].contrast:focus{--background-color: var(--contrast-focus)}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--typography-spacing-vertical);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);font-family:var(--font-family)}h1{--color: var(--h1-color)}h2{--color: var(--h2-color)}h3{--color: var(--h3-color)}h4{--color: var(--h4-color)}h5{--color: var(--h5-color)}h6{--color: var(--h6-color)}:where(address,blockquote,dl,figure,form,ol,p,pre,table,ul)~:is(h1,h2,h3,h4,h5,h6){margin-top:var(--typography-spacing-vertical)}hgroup,.headings{margin-bottom:var(--typography-spacing-vertical)}hgroup>*,.headings>*{margin-bottom:0}hgroup>*:last-child,.headings>*:last-child{--color: var(--muted-color);--font-weight: unset;font-size:1rem;font-family:unset}p{margin-bottom:var(--typography-spacing-vertical)}small{font-size:var(--font-size)}:where(dl,ol,ul){padding-right:0;padding-left:var(--spacing);padding-inline-start:var(--spacing);padding-inline-end:0}:where(dl,ol,ul) li{margin-bottom:calc(var(--typography-spacing-vertical)*.25)}:where(dl,ol,ul) :is(dl,ol,ul){margin:0;margin-top:calc(var(--typography-spacing-vertical)*.25)}ul li{list-style:square}mark{padding:.125rem .25rem;background-color:var(--mark-background-color);color:var(--mark-color);vertical-align:baseline}blockquote{display:block;margin:var(--typography-spacing-vertical) 0;padding:var(--spacing);border-right:none;border-left:.25rem solid var(--blockquote-border-color);border-inline-start:.25rem solid var(--blockquote-border-color);border-inline-end:none}blockquote footer{margin-top:calc(var(--typography-spacing-vertical)*.5);color:var(--blockquote-footer-color)}abbr[title]{border-bottom:1px dotted;text-decoration:none;cursor:help}ins{color:var(--ins-color);text-decoration:none}del{color:var(--del-color)}::selection{background-color:var(--primary-focus)}:where(audio,canvas,iframe,img,svg,video){vertical-align:middle}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}:where(iframe){border-style:none}img{max-width:100%;height:auto;border-style:none}:where(svg:not([fill])){fill:currentColor}svg:not(:root){overflow:hidden}button{margin:0;overflow:visible;font-family:inherit;text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button{display:block;width:100%;margin-bottom:var(--spacing)}[role=button]{display:inline-block;text-decoration:none}button,input[type=submit],input[type=button],input[type=reset],[role=button]{--background-color: var(--primary);--border-color: var(--primary);--color: var(--primary-inverse);--box-shadow: var(--button-box-shadow, 0 0 0 rgba(0, 0, 0, 0));padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer}button:is([aria-current],:hover,:active,:focus),input[type=submit]:is([aria-current],:hover,:active,:focus),input[type=button]:is([aria-current],:hover,:active,:focus),input[type=reset]:is([aria-current],:hover,:active,:focus),[role=button]:is([aria-current],:hover,:active,:focus){--background-color: var(--primary-hover);--border-color: var(--primary-hover);--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));--color: var(--primary-inverse)}button:focus,input[type=submit]:focus,input[type=button]:focus,input[type=reset]:focus,[role=button]:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--primary-focus)}:is(button,input[type=submit],input[type=button],[role=button]).secondary,input[type=reset]{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);cursor:pointer}:is(button,input[type=submit],input[type=button],[role=button]).secondary:is([aria-current],:hover,:active,:focus),input[type=reset]:is([aria-current],:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover);--color: var(--secondary-inverse)}:is(button,input[type=submit],input[type=button],[role=button]).secondary:focus,input[type=reset]:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--secondary-focus)}:is(button,input[type=submit],input[type=button],[role=button]).contrast{--background-color: var(--contrast);--border-color: var(--contrast);--color: var(--contrast-inverse)}:is(button,input[type=submit],input[type=button],[role=button]).contrast:is([aria-current],:hover,:active,:focus){--background-color: var(--contrast-hover);--border-color: var(--contrast-hover);--color: var(--contrast-inverse)}:is(button,input[type=submit],input[type=button],[role=button]).contrast:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--contrast-focus)}:is(button,input[type=submit],input[type=button],[role=button]).outline,input[type=reset].outline{--background-color: transparent;--color: var(--primary)}:is(button,input[type=submit],input[type=button],[role=button]).outline:is([aria-current],:hover,:active,:focus),input[type=reset].outline:is([aria-current],:hover,:active,:focus){--background-color: transparent;--color: var(--primary-hover)}:is(button,input[type=submit],input[type=button],[role=button]).outline.secondary,input[type=reset].outline{--color: var(--secondary)}:is(button,input[type=submit],input[type=button],[role=button]).outline.secondary:is([aria-current],:hover,:active,:focus),input[type=reset].outline:is([aria-current],:hover,:active,:focus){--color: var(--secondary-hover)}:is(button,input[type=submit],input[type=button],[role=button]).outline.contrast{--color: var(--contrast)}:is(button,input[type=submit],input[type=button],[role=button]).outline.contrast:is([aria-current],:hover,:active,:focus){--color: var(--contrast-hover)}:where(button,[type=submit],[type=button],[type=reset],[role=button])[disabled],:where(fieldset[disabled]) :is(button,[type=submit],[type=button],[type=reset],[role=button]),a[role=button]:not([href]){opacity:.5;pointer-events:none}input,optgroup,select,textarea{margin:0;font-size:1rem;line-height:var(--line-height);font-family:inherit;letter-spacing:inherit}input{overflow:visible}select{text-transform:none}legend{max-width:100%;padding:0;color:inherit;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{padding:0}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::-moz-focus-inner{padding:0;border-style:none}:-moz-focusring{outline:none}:-moz-ui-invalid{box-shadow:none}::-ms-expand{display:none}[type=file],[type=range]{padding:0;border-width:0}input:not([type=checkbox],[type=radio],[type=range]){height:calc(1rem*var(--line-height) + var(--form-element-spacing-vertical)*2 + var(--border-width)*2)}fieldset{margin:0;margin-bottom:var(--spacing);padding:0;border:0}label,fieldset legend{display:block;margin-bottom:calc(var(--spacing)*.25);font-weight:var(--form-label-font-weight, var(--font-weight))}input:not([type=checkbox],[type=radio]),select,textarea{width:100%}input:not([type=checkbox],[type=radio],[type=range],[type=file]),select,textarea{appearance:none;padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal)}input,select,textarea{--background-color: var(--form-element-background-color);--border-color: var(--form-element-border-color);--color: var(--form-element-color);--box-shadow: none;border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight)}input:not([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[readonly]):is(:active,:focus),:where(select,textarea):is(:active,:focus){--background-color: var(--form-element-active-background-color)}input:not([type=submit],[type=button],[type=reset],[role=switch],[readonly]):is(:active,:focus),:where(select,textarea):is(:active,:focus){--border-color: var(--form-element-active-border-color)}input:not([type=submit],[type=button],[type=reset],[type=range],[type=file],[readonly]):focus,select:focus,textarea:focus{--box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color)}input:not([type=submit],[type=button],[type=reset])[disabled],select[disabled],textarea[disabled],:where(fieldset[disabled]) :is(input:not([type=submit],[type=button],[type=reset]),select,textarea){--background-color: var(--form-element-disabled-background-color);--border-color: var(--form-element-disabled-border-color);opacity:var(--form-element-disabled-opacity);pointer-events:none}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid]{padding-right:calc(var(--form-element-spacing-horizontal) + 1.5rem);padding-left:var(--form-element-spacing-horizontal);padding-inline-start:var(--form-element-spacing-horizontal);padding-inline-end:calc(var(--form-element-spacing-horizontal) + 1.5rem);background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid=false]{background-image:var(--icon-valid)}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid=true]{background-image:var(--icon-invalid)}:where(input,select,textarea)[aria-invalid=false]{--border-color: var(--form-element-valid-border-color)}:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus){--border-color: var(--form-element-valid-active-border-color);--box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color)}:where(input,select,textarea)[aria-invalid=true]{--border-color: var(--form-element-invalid-border-color)}:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus){--border-color: var(--form-element-invalid-active-border-color);--box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color)}[dir=rtl] :where(input,select,textarea):not([type=checkbox],[type=radio]):is([aria-invalid],[aria-invalid=true],[aria-invalid=false]){background-position:center left .75rem}input::placeholder,input::-webkit-input-placeholder,textarea::placeholder,textarea::-webkit-input-placeholder,select:invalid{color:var(--form-element-placeholder-color);opacity:1}input:not([type=checkbox],[type=radio]),select,textarea{margin-bottom:var(--spacing)}select::-ms-expand{border:0;background-color:rgba(0,0,0,0)}select:not([multiple],[size]){padding-right:calc(var(--form-element-spacing-horizontal) + 1.5rem);padding-left:var(--form-element-spacing-horizontal);padding-inline-start:var(--form-element-spacing-horizontal);padding-inline-end:calc(var(--form-element-spacing-horizontal) + 1.5rem);background-image:var(--icon-chevron);background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}[dir=rtl] select:not([multiple],[size]){background-position:center left .75rem}:where(input,select,textarea,.grid)+small{display:block;width:100%;margin-top:calc(var(--spacing)*-.75);margin-bottom:var(--spacing);color:var(--muted-color)}label>:where(input,select,textarea){margin-top:calc(var(--spacing)*.25)}:where(table){width:100%;border-collapse:collapse;border-spacing:0;text-indent:0}th,td{padding:calc(var(--spacing)/2) var(--spacing);border-bottom:var(--border-width) solid var(--table-border-color);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);text-align:left;text-align:start}tfoot th,tfoot td{border-top:var(--border-width) solid var(--table-border-color);border-bottom:0}table[role=grid] tbody tr:nth-child(odd){background-color:var(--table-row-stripped-background-color)}[aria-controls]{cursor:pointer}[aria-disabled=true],[disabled]{cursor:not-allowed}[aria-hidden=false][hidden]{display:initial}[aria-hidden=false][hidden]:not(:focus){clip:rect(0, 0, 0, 0);position:absolute}a,area,button,input,label,select,summary,textarea,[tabindex]{-ms-touch-action:manipulation}[dir=rtl]{direction:rtl}:where(nav li)::before{float:left;content:""}nav,nav ul{display:flex}nav{justify-content:space-between}nav ol,nav ul{align-items:center;margin-bottom:0;padding:0;list-style:none}nav ol:first-of-type,nav ul:first-of-type{margin-left:calc(var(--nav-element-spacing-horizontal)*-1)}nav ol:last-of-type,nav ul:last-of-type{margin-right:calc(var(--nav-element-spacing-horizontal)*-1)}nav li{display:inline-block;margin:0;padding:var(--nav-element-spacing-vertical) var(--nav-element-spacing-horizontal)}nav li>*{--spacing: 0}nav :where(a,[role=link]){display:inline-block;margin:calc(var(--nav-link-spacing-vertical)*-1) calc(var(--nav-link-spacing-horizontal)*-1);padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);border-radius:var(--border-radius);text-decoration:none}nav :where(a,[role=link]):is([aria-current],:hover,:active,:focus){text-decoration:none}nav[aria-label=breadcrumb]{align-items:center;justify-content:start}nav[aria-label=breadcrumb] ul li:not(:first-child){margin-inline-start:var(--nav-link-spacing-horizontal)}nav[aria-label=breadcrumb] ul li:not(:last-child) ::after{position:absolute;width:calc(var(--nav-link-spacing-horizontal)*2);margin-inline-start:calc(var(--nav-link-spacing-horizontal)/2);content:"/";color:var(--muted-color);text-align:center}nav[aria-label=breadcrumb] a[aria-current]{background-color:rgba(0,0,0,0);color:inherit;text-decoration:none;pointer-events:none}nav [role=button]{margin-right:inherit;margin-left:inherit;padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal)}aside nav,aside ol,aside ul,aside li{display:block}aside li{padding:calc(var(--nav-element-spacing-vertical)*.5) var(--nav-element-spacing-horizontal)}aside li a{display:block}aside li [role=button]{margin:inherit}[dir=rtl] nav[aria-label=breadcrumb] ul li:not(:last-child) ::after{content:"\\"}p>code{font-weight:bold;text-decoration-line:underline}pre{padding:1rem;overflow:scroll;background-color:#e7e7e7}pre[data-linenos]{padding:1rem 0}pre table td{padding:0}pre table td:nth-of-type(1){text-align:center;user-select:none}pre mark{display:block;background-color:rgba(254,252,232,.9)}pre table{width:100%;border-collapse:collapse}.night{display:none}.alert{padding:20px;background-color:#f44336;color:#fff;margin-bottom:15px;text-align:center}.warning{padding:20px;background-color:#ff9800;color:#fff;margin-bottom:15px;text-align:center}.info{padding:20px;background-color:#2196f3;color:#fff;margin-bottom:15px;text-align:center}.info>a{color:#ff0}h1,h2,h3,h4,h5,h6{margin-bottom:.5em}a>button{color:#fff;text-decoration:underline}figure{overflow:clip}.blurb>button{margin-top:20px}img.screenshot{border:double 3px;border-radius:4px;max-width:400px;margin:1em}@media (min-width: 992px){img.screenshot{float:right}}img.logo{max-width:72px}html,body{box-sizing:border-box;height:100%}body>footer{margin:0px;padding:0px}.wrapper{min-height:100%;display:flex;flex-direction:column;box-sizing:border-box}.page-body{flex-grow:1}.page-footer{flex-grow:0;flex-shrink:0}footer{text-align:center;font-size:.8em}.screenshot{text-align:center}.active{text-decoration:underline}.documentation{display:flex}@media (max-width: 992px){.documentation{flex-wrap:wrap}}.documentation .doc-content{max-width:100%}.documentation .side-panel{margin-right:3em;min-width:200px}.documentation .side-panel ul>li{list-style:none;font-weight:bold;font-size:1.2em}.home-header{display:grid;grid-template-columns:50% 40%;grid-column-gap:20px;grid-row-gap:20px;justify-items:stretch;align-items:stretch}@media (max-width: 992px){.home-header{grid-template-columns:none}}.home-wrapper{display:grid;grid-template-columns:33% 33% 33%;grid-column-gap:20px;grid-row-gap:20px;justify-items:stretch;align-items:stretch}@media (max-width: 992px){.home-wrapper{grid-template-columns:none}}@media (prefers-color-scheme: dark){pre{background-color:#424242}.diagram{background:grey}.day{display:none}.night{display:initial}} |
6085 | \ No newline at end of file |
6086 | + :where(html){--link:var(--indigo-7);--link-visited:var(--purple-7);--text-1:var(--gray-12);--text-2:var(--gray-7);--surface-1:var(--gray-0);--surface-2:var(--gray-2);--surface-3:var(--gray-3);--surface-4:var(--gray-4);--scrollthumb-color:var(--gray-7);-webkit-text-size-adjust:none;accent-color:var(--brand, var(--link));background-color:var(--surface-1);block-size:100%;caret-color:var(--brand, var(--link));color:var(--text-1);color-scheme:light;font-family:var(--font-sans);line-height:var(--font-lineheight-3);scrollbar-color:var(--scrollthumb-color) transparent}@media (dynamic-range: high) or (color-gamut: p3){@supports (color: color(display-p3 0 0 0)){:where(html){--link:color(display-p3 .1 .4 1);--link-visited:color(display-p3 .6 .2 1)}}}:where(html) :where(dialog){background-color:var(--surface-1)}:where(html) :where(button,.btn){--_highlight:var(--_highlight-light);--_bg:var(--_bg-light);--_ink-shadow:var(--_ink-shadow-light)}:where(html) :where(button,.btn) :where([type=reset]){--_text:var(--red-6);--_border:var(--red-3)}:where(html) :where(button,.btn,input:is([type=button],[type=submit],[type=reset]))[disabled]{--_text:var(--gray-6)}:where(html) :where(textarea,select,input:not([type=button],[type=submit],[type=reset])){background-color:var(--surface-2)}@media (prefers-color-scheme: dark){:where(html){--link:var(--indigo-3);--link-visited:var(--purple-3);--text-1:var(--gray-1);--text-2:var(--gray-4);--surface-1:var(--gray-9);--surface-2:var(--gray-8);--surface-3:var(--gray-7);--surface-4:var(--gray-6);--scrollthumb-color:var(--gray-6);--shadow-strength:10%;--shadow-color:220 40% 2%;color-scheme:dark}}:where(a[href]){color:var(--brand, var(--link))}:where(a[href]):where(:visited){color:var(--link-visited)}:focus-visible{outline-color:var(--brand, var(--link))}*,:after,:before{box-sizing:border-box}:where(:not(dialog)){margin:0}:where(:not(fieldset,progress,meter)){background-origin:border-box;background-repeat:no-repeat;border-style:solid;border-width:0}@media (prefers-reduced-motion: no-preference){:where(html){scroll-behavior:smooth}}@media (prefers-reduced-motion: no-preference){:where(:focus-visible){transition:outline-offset 145ms var(--ease-2)}:where(:not(:active):focus-visible){transition-duration:.25s}}:where(:not(:active):focus-visible){outline-offset:5px}:where(body){min-block-size:100%}:where(h1,h2,h3,h4,h5,h6){text-wrap:balance;font-weight:var(--font-weight-9);line-height:var(--font-lineheight-1)}:where(h1){font-size:var(--font-size-8);max-inline-size:var(--size-header-1)}:where(h2){font-size:var(--font-size-6);max-inline-size:var(--size-header-2)}:where(h3){font-size:var(--font-size-5)}:where(h4){font-size:var(--font-size-4)}:where(h5){font-size:var(--font-size-3)}:where(h3,h4,h5,h6,dt){max-inline-size:var(--size-header-3)}:where(p,ul,ol,dl,h6){font-size:var(--font-size-2)}:where(a,u,ins,abbr){text-underline-offset:1px}@supports (-moz-appearance: none){:where(a,u,ins,abbr){text-underline-offset:2px}}:where(a[href],area,button,input:not([type=text],[type=email],[type=number],[type=password],[type=""],[type=tel],[type=url]),label[for],select,summary,[tabindex]:not([tabindex*="-"])){cursor:pointer}:where(a[href],area,button,input,label[for],select,summary,textarea,[tabindex]:not([tabindex*="-"])){-webkit-tap-highlight-color:transparent;touch-action:manipulation}:where(a):where([href]){text-decoration-color:var(--indigo-2)}:where(a):where([href]):where(:visited){text-decoration-color:var(--purple-2)}:where(a):where(:not(:hover)){text-decoration:inherit}:where(img,svg,video,canvas,audio,iframe,embed,object){display:block}:where(img,svg,video){block-size:auto;max-inline-size:100%}:where(input,button,textarea,select),:where(input[type=file])::-webkit-file-upload-button{color:inherit;font:inherit;font-size:inherit;letter-spacing:inherit}::placeholder{color:var(--gray-7);opacity:.75}:where(input:not([type=range]),textarea){padding-block:var(--size-1);padding-inline:var(--size-2)}:where(select){padding-block:.75ch;padding-inline:var(--size-relative-4) 0}:where(textarea,select,input:not([type=button],[type=submit],[type=reset])){background-color:var(--surface-2);border-radius:var(--radius-2)}:where(textarea){resize:block}:where(input[type=checkbox],input[type=radio]){block-size:var(--size-3);inline-size:var(--size-3)}:where(svg:not([width])){inline-size:var(--size-10)}:where(code,kbd,samp,pre){font-family:var(--font-mono)}:where(:not(pre)>code,kbd){white-space:nowrap}:where(pre){direction:ltr;max-inline-size:max-content;min-inline-size:0;white-space:pre;writing-mode:lr}:where(:not(pre)>code){background:var(--surface-2);border-radius:var(--radius-2);padding:var(--size-1) var(--size-2);writing-mode:lr}:where(kbd,var){border-color:var(--surface-4);border-radius:var(--radius-2);border-width:var(--border-size-1);padding:var(--size-1) var(--size-2)}:where(mark){border-radius:var(--radius-2);padding-inline:var(--size-1)}:where(ol,ul){padding-inline-start:var(--size-8)}:where(li){padding-inline-start:var(--size-2)}:where(li,dd,figcaption){max-inline-size:var(--size-content-2)}:where(p){text-wrap:pretty;max-inline-size:var(--size-content-3)}:where(dt,summary){font-weight:var(--font-weight-7)}:where(dt:not(:first-of-type)){margin-block-start:var(--size-5)}:where(small){font-size:max(.5em,var(--font-size-0));max-inline-size:var(--size-content-1)}:where(hr){background-color:var(--surface-3);height:var(--border-size-2);margin-block:var(--size-fluid-5)}:where(figure){display:grid;gap:var(--size-2);place-items:center}:where(figure)>:where(figcaption){text-wrap:balance;font-size:var(--font-size-1)}:where(blockquote,:not(blockquote)>cite){border-inline-start-width:var(--border-size-3)}:where(blockquote){display:grid;gap:var(--size-3);max-inline-size:var(--size-content-2);padding-block:var(--size-3);padding-inline:var(--size-4)}:where(:not(blockquote)>cite){padding-inline-start:var(--size-2)}:where(summary){background:var(--surface-3);border-radius:var(--radius-2);margin:calc(var(--size-2)*-1) calc(var(--size-3)*-1);padding:var(--size-2) var(--size-3)}:where(details){background:var(--surface-2);border-radius:var(--radius-2);padding-block:var(--size-2);padding-inline:var(--size-3)}:where(details[open]>summary){border-end-end-radius:0;border-end-start-radius:0;margin-bottom:var(--size-2)}:where(fieldset){border:var(--border-size-1) solid var(--surface-4);border-radius:var(--radius-2)}:where(del){background:var(--red-9);color:var(--red-2)}:where(ins){background:var(--green-9);color:var(--green-1)}:where(abbr){text-decoration-color:var(--blue-5)}:where(dialog){background-color:var(--surface-1);border-radius:var(--radius-3);box-shadow:var(--shadow-6);color:inherit}:where(dialog)::backdrop{backdrop-filter:blur(25px)}:where(html[\:has\(dialog\[open\]\)]){overflow:hidden}:where(html:has(dialog[open])){overflow:hidden}:where(menu){display:flex;gap:var(--size-3);padding-inline-start:0}:where(sup){font-size:.5em}:where(table){--nice-inner-radius:calc(var(--radius-3) - 2px);background:var(--surface-2);border:1px solid var(--surface-2);border-radius:var(--radius-3);width:fit-content}:where(table[\:not-has\(tfoot\)] tr:last-child td:first-child){border-end-start-radius:var(--nice-inner-radius)}:where(table:not(:has(tfoot)) tr:last-child td:first-child){border-end-start-radius:var(--nice-inner-radius)}:where(table[\:not-has\(tfoot\)] tr:last-child td:last-child){border-end-end-radius:var(--nice-inner-radius)}:where(table:not(:has(tfoot)) tr:last-child td:last-child){border-end-end-radius:var(--nice-inner-radius)}:where(table thead tr:first-child th:first-child){border-start-start-radius:var(--nice-inner-radius)}:where(table thead tr:first-child th:last-child){border-start-end-radius:var(--nice-inner-radius)}:where(tfoot tr:last-child :is(th,td):first-of-type){border-end-start-radius:var(--nice-inner-radius)}:where(tfoot tr:last-child :is(th,td):last-of-type){border-end-end-radius:var(--nice-inner-radius)}:where(th){background-color:var(--surface-2);color:var(--text-1)}:where(table :is(a,button,[contenteditable]):is(:focus-visible)){outline-offset:-2px}:where(td){text-wrap:pretty;background:var(--surface-1);max-inline-size:var(--size-content-2)}:where(td,th){padding:var(--size-2);text-align:left}:where(:is(td,th):not([align])){text-align:center}:where(thead){border-collapse:collapse}:where(table tr:hover td),:where(tbody tr:nth-child(2n):hover td){background-color:var(--gray-10)}@media (prefers-color-scheme: light){:where(table tr:hover td),:where(tbody tr:nth-child(2n):hover td){background-color:#fff}}:where(table>caption){margin:var(--size-3)}:where(tfoot button){padding-block:var(--size-1);padding-inline:var(--size-3)}@media (prefers-color-scheme: dark){:where(textarea,select,input:not([type=button],[type=submit],[type=reset])){background-color:#171a1c}:where(dialog){background-color:var(--surface-2)}::placeholder{color:var(--gray-6)}}:where(html){--font-sans:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif;--font-serif:ui-serif,serif;--font-mono:Dank Mono,Operator Mono,Inconsolata,Fira Mono,ui-monospace,SF Mono,Monaco,Droid Sans Mono,Source Code Pro,monospace;--font-weight-1:100;--font-weight-2:200;--font-weight-3:300;--font-weight-4:400;--font-weight-5:500;--font-weight-6:600;--font-weight-7:700;--font-weight-8:800;--font-weight-9:900;--font-lineheight-00:.95;--font-lineheight-0:1.1;--font-lineheight-1:1.25;--font-lineheight-2:1.375;--font-lineheight-3:1.5;--font-lineheight-4:1.75;--font-lineheight-5:2;--font-letterspacing-0:-.05em;--font-letterspacing-1:.025em;--font-letterspacing-2:.050em;--font-letterspacing-3:.075em;--font-letterspacing-4:.150em;--font-letterspacing-5:.500em;--font-letterspacing-6:.750em;--font-letterspacing-7:1em;--font-size-00:.5rem;--font-size-0:.75rem;--font-size-1:1rem;--font-size-2:1.1rem;--font-size-3:1.25rem;--font-size-4:1.5rem;--font-size-5:2rem;--font-size-6:2.5rem;--font-size-7:3rem;--font-size-8:3.5rem;--font-size-fluid-0:clamp(.75rem,2vw,1rem);--font-size-fluid-1:clamp(1rem,4vw,1.5rem);--font-size-fluid-2:clamp(1.5rem,6vw,2.5rem);--font-size-fluid-3:clamp(2rem,9vw,3.5rem);--size-000:-.5rem;--size-00:-.25rem;--size-1:.25rem;--size-2:.5rem;--size-3:1rem;--size-4:1.25rem;--size-5:1.5rem;--size-6:1.75rem;--size-7:2rem;--size-8:3rem;--size-9:4rem;--size-10:5rem;--size-11:7.5rem;--size-12:10rem;--size-13:15rem;--size-14:20rem;--size-15:30rem;--size-px-000:-8px;--size-px-00:-4px;--size-px-1:4px;--size-px-2:8px;--size-px-3:16px;--size-px-4:20px;--size-px-5:24px;--size-px-6:28px;--size-px-7:32px;--size-px-8:48px;--size-px-9:64px;--size-px-10:80px;--size-px-11:120px;--size-px-12:160px;--size-px-13:240px;--size-px-14:320px;--size-px-15:480px;--size-fluid-1:clamp(.5rem,1vw,1rem);--size-fluid-2:clamp(1rem,2vw,1.5rem);--size-fluid-3:clamp(1.5rem,3vw,2rem);--size-fluid-4:clamp(2rem,4vw,3rem);--size-fluid-5:clamp(4rem,5vw,5rem);--size-fluid-6:clamp(5rem,7vw,7.5rem);--size-fluid-7:clamp(7.5rem,10vw,10rem);--size-fluid-8:clamp(10rem,20vw,15rem);--size-fluid-9:clamp(15rem,30vw,20rem);--size-fluid-10:clamp(20rem,40vw,30rem);--size-content-1:20ch;--size-content-2:45ch;--size-content-3:60ch;--size-header-1:20ch;--size-header-2:25ch;--size-header-3:35ch;--size-xxs:240px;--size-xs:360px;--size-sm:480px;--size-md:768px;--size-lg:1024px;--size-xl:1440px;--size-xxl:1920px;--size-relative-000:-.5ch;--size-relative-00:-.25ch;--size-relative-1:.25ch;--size-relative-2:.5ch;--size-relative-3:1ch;--size-relative-4:1.25ch;--size-relative-5:1.5ch;--size-relative-6:1.75ch;--size-relative-7:2ch;--size-relative-8:3ch;--size-relative-9:4ch;--size-relative-10:5ch;--size-relative-11:7.5ch;--size-relative-12:10ch;--size-relative-13:15ch;--size-relative-14:20ch;--size-relative-15:30ch;--ease-1:cubic-bezier(.25,0,.5,1);--ease-2:cubic-bezier(.25,0,.4,1);--ease-3:cubic-bezier(.25,0,.3,1);--ease-4:cubic-bezier(.25,0,.2,1);--ease-5:cubic-bezier(.25,0,.1,1);--ease-in-1:cubic-bezier(.25,0,1,1);--ease-in-2:cubic-bezier(.50,0,1,1);--ease-in-3:cubic-bezier(.70,0,1,1);--ease-in-4:cubic-bezier(.90,0,1,1);--ease-in-5:cubic-bezier(1,0,1,1);--ease-out-1:cubic-bezier(0,0,.75,1);--ease-out-2:cubic-bezier(0,0,.50,1);--ease-out-3:cubic-bezier(0,0,.3,1);--ease-out-4:cubic-bezier(0,0,.1,1);--ease-out-5:cubic-bezier(0,0,0,1);--ease-in-out-1:cubic-bezier(.1,0,.9,1);--ease-in-out-2:cubic-bezier(.3,0,.7,1);--ease-in-out-3:cubic-bezier(.5,0,.5,1);--ease-in-out-4:cubic-bezier(.7,0,.3,1);--ease-in-out-5:cubic-bezier(.9,0,.1,1);--ease-elastic-out-1:cubic-bezier(.5,.75,.75,1.25);--ease-elastic-out-2:cubic-bezier(.5,1,.75,1.25);--ease-elastic-out-3:cubic-bezier(.5,1.25,.75,1.25);--ease-elastic-out-4:cubic-bezier(.5,1.5,.75,1.25);--ease-elastic-out-5:cubic-bezier(.5,1.75,.75,1.25);--ease-elastic-in-1:cubic-bezier(.5,-0.25,.75,1);--ease-elastic-in-2:cubic-bezier(.5,-0.50,.75,1);--ease-elastic-in-3:cubic-bezier(.5,-0.75,.75,1);--ease-elastic-in-4:cubic-bezier(.5,-1.00,.75,1);--ease-elastic-in-5:cubic-bezier(.5,-1.25,.75,1);--ease-elastic-in-out-1:cubic-bezier(.5,-.1,.1,1.5);--ease-elastic-in-out-2:cubic-bezier(.5,-.3,.1,1.5);--ease-elastic-in-out-3:cubic-bezier(.5,-.5,.1,1.5);--ease-elastic-in-out-4:cubic-bezier(.5,-.7,.1,1.5);--ease-elastic-in-out-5:cubic-bezier(.5,-.9,.1,1.5);--ease-step-1:steps(2);--ease-step-2:steps(3);--ease-step-3:steps(4);--ease-step-4:steps(7);--ease-step-5:steps(10);--ease-elastic-1:var(--ease-elastic-out-1);--ease-elastic-2:var(--ease-elastic-out-2);--ease-elastic-3:var(--ease-elastic-out-3);--ease-elastic-4:var(--ease-elastic-out-4);--ease-elastic-5:var(--ease-elastic-out-5);--ease-squish-1:var(--ease-elastic-in-out-1);--ease-squish-2:var(--ease-elastic-in-out-2);--ease-squish-3:var(--ease-elastic-in-out-3);--ease-squish-4:var(--ease-elastic-in-out-4);--ease-squish-5:var(--ease-elastic-in-out-5);--ease-spring-1:linear(0,0.006,0.025 2.8%,0.101 6.1%,0.539 18.9%,0.721 25.3%,0.849 31.5%,0.937 38.1%,0.968 41.8%,0.991 45.7%,1.006 50.1%,1.015 55%,1.017 63.9%,1.001);--ease-spring-2:linear(0,0.007,0.029 2.2%,0.118 4.7%,0.625 14.4%,0.826 19%,0.902,0.962,1.008 26.1%,1.041 28.7%,1.064 32.1%,1.07 36%,1.061 40.5%,1.015 53.4%,0.999 61.6%,0.995 71.2%,1);--ease-spring-3:linear(0,0.009,0.035 2.1%,0.141 4.4%,0.723 12.9%,0.938 16.7%,1.017,1.077,1.121,1.149 24.3%,1.159,1.163,1.161,1.154 29.9%,1.129 32.8%,1.051 39.6%,1.017 43.1%,0.991,0.977 51%,0.974 53.8%,0.975 57.1%,0.997 69.8%,1.003 76.9%,1);--ease-spring-4:linear(0,0.009,0.037 1.7%,0.153 3.6%,0.776 10.3%,1.001,1.142 16%,1.185,1.209 19%,1.215 19.9% 20.8%,1.199,1.165 25%,1.056 30.3%,1.008 33%,0.973,0.955 39.2%,0.953 41.1%,0.957 43.3%,0.998 53.3%,1.009 59.1% 63.7%,0.998 78.9%,1);--ease-spring-5:linear(0,0.01,0.04 1.6%,0.161 3.3%,0.816 9.4%,1.046,1.189 14.4%,1.231,1.254 17%,1.259,1.257 18.6%,1.236,1.194 22.3%,1.057 27%,0.999 29.4%,0.955 32.1%,0.942,0.935 34.9%,0.933,0.939 38.4%,1 47.3%,1.011,1.017 52.6%,1.016 56.4%,1 65.2%,0.996 70.2%,1.001 87.2%,1);--ease-bounce-1:linear(0,0.004,0.016,0.035,0.063,0.098,0.141,0.191,0.25,0.316,0.391 36.8%,0.563,0.766,1 58.8%,0.946,0.908 69.1%,0.895,0.885,0.879,0.878,0.879,0.885,0.895,0.908 89.7%,0.946,1);--ease-bounce-2:linear(0,0.004,0.016,0.035,0.063,0.098,0.141 15.1%,0.25,0.391,0.562,0.765,1,0.892 45.2%,0.849,0.815,0.788,0.769,0.757,0.753,0.757,0.769,0.788,0.815,0.85,0.892 75.2%,1 80.2%,0.973,0.954,0.943,0.939,0.943,0.954,0.973,1);--ease-bounce-3:linear(0,0.004,0.016,0.035,0.062,0.098,0.141 11.4%,0.25,0.39,0.562,0.764,1 30.3%,0.847 34.8%,0.787,0.737,0.699,0.672,0.655,0.65,0.656,0.672,0.699,0.738,0.787,0.847 61.7%,1 66.2%,0.946,0.908,0.885 74.2%,0.879,0.878,0.879,0.885 79.5%,0.908,0.946,1 87.4%,0.981,0.968,0.96,0.957,0.96,0.968,0.981,1);--ease-bounce-4:linear(0,0.004,0.016 3%,0.062,0.141,0.25,0.391,0.562 18.2%,1 24.3%,0.81,0.676 32.3%,0.629,0.595,0.575,0.568,0.575,0.595,0.629,0.676 48.2%,0.811,1 56.2%,0.918,0.86,0.825,0.814,0.825,0.86,0.918,1 77.2%,0.94 80.6%,0.925,0.92,0.925,0.94 87.5%,1 90.9%,0.974,0.965,0.974,1);--ease-bounce-5:linear(0,0.004,0.016 2.5%,0.063,0.141,0.25 10.1%,0.562,1 20.2%,0.783,0.627,0.534 30.9%,0.511,0.503,0.511,0.534 38%,0.627,0.782,1 48.7%,0.892,0.815,0.769 56.3%,0.757,0.753,0.757,0.769 61.3%,0.815,0.892,1 68.8%,0.908 72.4%,0.885,0.878,0.885,0.908 79.4%,1 83%,0.954 85.5%,0.943,0.939,0.943,0.954 90.5%,1 93%,0.977,0.97,0.977,1);--layer-1:1;--layer-2:2;--layer-3:3;--layer-4:4;--layer-5:5;--layer-important:2147483647;--shadow-color:220 3% 15%;--shadow-strength:1%;--inner-shadow-highlight:inset 0 -.5px 0 0 #fff,inset 0 .5px 0 0 rgba(0,0,0,.067);--shadow-1:0 1px 2px -1px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%));--shadow-2:0 3px 5px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 7px 14px -5px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%));--shadow-3:0 -1px 3px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 1px 2px -5px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 2px 5px -5px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 4%)),0 4px 12px -5px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%)),0 12px 15px -5px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 7%));--shadow-4:0 -2px 5px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 1px 1px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 2px 2px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 5px 5px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 4%)),0 9px 9px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%)),0 16px 16px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 6%));--shadow-5:0 -1px 2px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 2px 1px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 5px 5px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 10px 10px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 4%)),0 20px 20px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%)),0 40px 40px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 7%));--shadow-6:0 -1px 2px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 3px 2px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 7px 5px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 12px 10px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 4%)),0 22px 18px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%)),0 41px 33px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 6%)),0 100px 80px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 7%));--inner-shadow-0:inset 0 0 0 1px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%));--inner-shadow-1:inset 0 1px 2px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%)),var(--inner-shadow-highlight);--inner-shadow-2:inset 0 1px 4px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%)),var(--inner-shadow-highlight);--inner-shadow-3:inset 0 2px 8px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%)),var(--inner-shadow-highlight);--inner-shadow-4:inset 0 2px 14px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%)),var(--inner-shadow-highlight);--ratio-square:1;--ratio-landscape:4/3;--ratio-portrait:3/4;--ratio-widescreen:16/9;--ratio-ultrawide:18/5;--ratio-golden:1.6180/1;--gray-0:#f8f9fa;--gray-1:#f1f3f5;--gray-2:#e9ecef;--gray-3:#dee2e6;--gray-4:#ced4da;--gray-5:#adb5bd;--gray-6:#868e96;--gray-7:#495057;--gray-8:#343a40;--gray-9:#212529;--gray-10:#16191d;--gray-11:#0d0f12;--gray-12:#030507;--stone-0:#f8fafb;--stone-1:#f2f4f6;--stone-2:#ebedef;--stone-3:#e0e4e5;--stone-4:#d1d6d8;--stone-5:#b1b6b9;--stone-6:#979b9d;--stone-7:#7e8282;--stone-8:#666968;--stone-9:#50514f;--stone-10:#3a3a37;--stone-11:#252521;--stone-12:#121210;--red-0:#fff5f5;--red-1:#ffe3e3;--red-2:#ffc9c9;--red-3:#ffa8a8;--red-4:#ff8787;--red-5:#ff6b6b;--red-6:#fa5252;--red-7:#f03e3e;--red-8:#e03131;--red-9:#c92a2a;--red-10:#b02525;--red-11:#962020;--red-12:#7d1a1a;--pink-0:#fff0f6;--pink-1:#ffdeeb;--pink-2:#fcc2d7;--pink-3:#faa2c1;--pink-4:#f783ac;--pink-5:#f06595;--pink-6:#e64980;--pink-7:#d6336c;--pink-8:#c2255c;--pink-9:#a61e4d;--pink-10:#8c1941;--pink-11:#731536;--pink-12:#59102a;--purple-0:#f8f0fc;--purple-1:#f3d9fa;--purple-2:#eebefa;--purple-3:#e599f7;--purple-4:#da77f2;--purple-5:#cc5de8;--purple-6:#be4bdb;--purple-7:#ae3ec9;--purple-8:#9c36b5;--purple-9:#862e9c;--purple-10:#702682;--purple-11:#5a1e69;--purple-12:#44174f;--violet-0:#f3f0ff;--violet-1:#e5dbff;--violet-2:#d0bfff;--violet-3:#b197fc;--violet-4:#9775fa;--violet-5:#845ef7;--violet-6:#7950f2;--violet-7:#7048e8;--violet-8:#6741d9;--violet-9:#5f3dc4;--violet-10:#5235ab;--violet-11:#462d91;--violet-12:#3a2578;--indigo-0:#edf2ff;--indigo-1:#dbe4ff;--indigo-2:#bac8ff;--indigo-3:#91a7ff;--indigo-4:#748ffc;--indigo-5:#5c7cfa;--indigo-6:#4c6ef5;--indigo-7:#4263eb;--indigo-8:#3b5bdb;--indigo-9:#364fc7;--indigo-10:#2f44ad;--indigo-11:#283a94;--indigo-12:#21307a;--blue-0:#e7f5ff;--blue-1:#d0ebff;--blue-2:#a5d8ff;--blue-3:#74c0fc;--blue-4:#4dabf7;--blue-5:#339af0;--blue-6:#228be6;--blue-7:#1c7ed6;--blue-8:#1971c2;--blue-9:#1864ab;--blue-10:#145591;--blue-11:#114678;--blue-12:#0d375e;--cyan-0:#e3fafc;--cyan-1:#c5f6fa;--cyan-2:#99e9f2;--cyan-3:#66d9e8;--cyan-4:#3bc9db;--cyan-5:#22b8cf;--cyan-6:#15aabf;--cyan-7:#1098ad;--cyan-8:#0c8599;--cyan-9:#0b7285;--cyan-10:#095c6b;--cyan-11:#074652;--cyan-12:#053038;--teal-0:#e6fcf5;--teal-1:#c3fae8;--teal-2:#96f2d7;--teal-3:#63e6be;--teal-4:#38d9a9;--teal-5:#20c997;--teal-6:#12b886;--teal-7:#0ca678;--teal-8:#099268;--teal-9:#087f5b;--teal-10:#066649;--teal-11:#054d37;--teal-12:#033325;--green-0:#ebfbee;--green-1:#d3f9d8;--green-2:#b2f2bb;--green-3:#8ce99a;--green-4:#69db7c;--green-5:#51cf66;--green-6:#40c057;--green-7:#37b24d;--green-8:#2f9e44;--green-9:#2b8a3e;--green-10:#237032;--green-11:#1b5727;--green-12:#133d1b;--lime-0:#f4fce3;--lime-1:#e9fac8;--lime-2:#d8f5a2;--lime-3:#c0eb75;--lime-4:#a9e34b;--lime-5:#94d82d;--lime-6:#82c91e;--lime-7:#74b816;--lime-8:#66a80f;--lime-9:#5c940d;--lime-10:#4c7a0b;--lime-11:#3c6109;--lime-12:#2c4706;--yellow-0:#fff9db;--yellow-1:#fff3bf;--yellow-2:#ffec99;--yellow-3:#ffe066;--yellow-4:#ffd43b;--yellow-5:#fcc419;--yellow-6:#fab005;--yellow-7:#f59f00;--yellow-8:#f08c00;--yellow-9:#e67700;--yellow-10:#b35c00;--yellow-11:#804200;--yellow-12:#663500;--orange-0:#fff4e6;--orange-1:#ffe8cc;--orange-2:#ffd8a8;--orange-3:#ffc078;--orange-4:#ffa94d;--orange-5:#ff922b;--orange-6:#fd7e14;--orange-7:#f76707;--orange-8:#e8590c;--orange-9:#d9480f;--orange-10:#bf400d;--orange-11:#99330b;--orange-12:#802b09;--choco-0:#fff8dc;--choco-1:#fce1bc;--choco-2:#f7ca9e;--choco-3:#f1b280;--choco-4:#e99b62;--choco-5:#df8545;--choco-6:#d46e25;--choco-7:#bd5f1b;--choco-8:#a45117;--choco-9:#8a4513;--choco-10:#703a13;--choco-11:#572f12;--choco-12:#3d210d;--brown-0:#faf4eb;--brown-1:#ede0d1;--brown-2:#e0cab7;--brown-3:#d3b79e;--brown-4:#c5a285;--brown-5:#b78f6d;--brown-6:#a87c56;--brown-7:#956b47;--brown-8:#825b3a;--brown-9:#6f4b2d;--brown-10:#5e3a21;--brown-11:#4e2b15;--brown-12:#422412;--sand-0:#f8fafb;--sand-1:#e6e4dc;--sand-2:#d5cfbd;--sand-3:#c2b9a0;--sand-4:#aea58c;--sand-5:#9a9178;--sand-6:#867c65;--sand-7:#736a53;--sand-8:#5f5746;--sand-9:#4b4639;--sand-10:#38352d;--sand-11:#252521;--sand-12:#121210;--camo-0:#f9fbe7;--camo-1:#e8ed9c;--camo-2:#d2df4e;--camo-3:#c2ce34;--camo-4:#b5bb2e;--camo-5:#a7a827;--camo-6:#999621;--camo-7:#8c851c;--camo-8:#7e7416;--camo-9:#6d6414;--camo-10:#5d5411;--camo-11:#4d460e;--camo-12:#36300a;--jungle-0:#ecfeb0;--jungle-1:#def39a;--jungle-2:#d0e884;--jungle-3:#c2dd6e;--jungle-4:#b5d15b;--jungle-5:#a8c648;--jungle-6:#9bbb36;--jungle-7:#8fb024;--jungle-8:#84a513;--jungle-9:#7a9908;--jungle-10:#658006;--jungle-11:#516605;--jungle-12:#3d4d04;--gradient-1:linear-gradient(to bottom right,#1f005c,#5b0060,#870160,#ac255e,#ca485c,#e16b5c,#f39060,#ffb56b);--gradient-2:linear-gradient(to bottom right,#48005c,#8300e2,#a269ff);--gradient-3:radial-gradient(circle at top right,#0ff,rgba(0,255,255,0)),radial-gradient(circle at bottom left,#ff1492,rgba(255,20,146,0));--gradient-4:linear-gradient(to bottom right,#00f5a0,#00d9f5);--gradient-5:conic-gradient(from -270deg at 75% 110%,#f0f,#fffaf0);--gradient-6:conic-gradient(from -90deg at top left,#000,#fff);--gradient-7:linear-gradient(to bottom right,#72c6ef,#004e8f);--gradient-8:conic-gradient(from 90deg at 50% 0%,#111,50%,#222,#111);--gradient-9:conic-gradient(from .5turn at bottom center,#add8e6,#fff);--gradient-10:conic-gradient(from 90deg at 40% -25%,gold,#f79d03,#ee6907,#e6390a,#de0d0d,#d61039,#cf1261,#c71585,#cf1261,#d61039,#de0d0d,#ee6907,#f79d03,gold,gold,gold);--gradient-11:conic-gradient(at bottom left,#ff1493,cyan);--gradient-12:conic-gradient(from 90deg at 25% -10%,#ff4500,#d3f340,#7bee85,#afeeee,#7bee85);--gradient-13:radial-gradient(circle at 50% 200%,#000142,#3b0083,#b300c3,#ff059f,#ff4661,#ffad86,#fff3c7);--gradient-14:conic-gradient(at top right,lime,cyan);--gradient-15:linear-gradient(to bottom right,#c7d2fe,#fecaca,#fef3c7);--gradient-16:radial-gradient(circle at 50% -250%,#374151,#111827,#000);--gradient-17:conic-gradient(from -90deg at 50% -25%,blue,#8a2be2);--gradient-18:linear-gradient(0deg,rgba(255,0,0,.8),rgba(255,0,0,0) 75%),linear-gradient(60deg,rgba(255,255,0,.8),rgba(255,255,0,0) 75%),linear-gradient(120deg,rgba(0,255,0,.8),rgba(0,255,0,0) 75%),linear-gradient(180deg,rgba(0,255,255,.8),rgba(0,255,255,0) 75%),linear-gradient(240deg,rgba(0,0,255,.8),rgba(0,0,255,0) 75%),linear-gradient(300deg,rgba(255,0,255,.8),rgba(255,0,255,0) 75%);--gradient-19:linear-gradient(to bottom right,#ffe259,#ffa751);--gradient-20:conic-gradient(from -135deg at -10% center,orange,#ff7715,#ff522a,#ff3f47,#ff5482,#ff69b4);--gradient-21:conic-gradient(from -90deg at 25% 115%,red,#f06,#f0c,#c0f,#60f,#00f,#00f,#00f,#00f);--gradient-22:linear-gradient(to bottom right,#acb6e5,#86fde8);--gradient-23:linear-gradient(to bottom right,#536976,#292e49);--gradient-24:conic-gradient(from .5turn at 0% 0%,#00c476,10%,#82b0ff,90%,#00c476);--gradient-25:conic-gradient(at 125% 50%,#b78cf7,#ff7c94,#ffcf0d,#ff7c94,#b78cf7);--gradient-26:linear-gradient(to bottom right,#9796f0,#fbc7d4);--gradient-27:conic-gradient(from .5turn at bottom left,#ff1493,#639);--gradient-28:conic-gradient(from -90deg at 50% 105%,#fff,orchid);--gradient-29:radial-gradient(circle at top right,#bfb3ff,rgba(191,179,255,0)),radial-gradient(circle at bottom left,#86acf9,rgba(134,172,249,0));--gradient-30:radial-gradient(circle at top right,#00ff80,rgba(0,255,128,0)),radial-gradient(circle at bottom left,#adffd6,rgba(173,255,214,0));--noise-1:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.005' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");--noise-2:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 300 300' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.05' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");--noise-3:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.25' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");--noise-4:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 2056 2056' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.5' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");--noise-5:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 2056 2056' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");--noise-filter-1:contrast(300%) brightness(100%);--noise-filter-2:contrast(200%) brightness(150%);--noise-filter-3:contrast(200%) brightness(250%);--noise-filter-4:contrast(200%) brightness(500%);--noise-filter-5:contrast(200%) brightness(1000%);--animation-fade-in:fade-in .5s var(--ease-3);--animation-fade-in-bloom:fade-in-bloom 2s var(--ease-3);--animation-fade-out:fade-out .5s var(--ease-3);--animation-fade-out-bloom:fade-out-bloom 2s var(--ease-3);--animation-scale-up:scale-up .5s var(--ease-3);--animation-scale-down:scale-down .5s var(--ease-3);--animation-slide-out-up:slide-out-up .5s var(--ease-3);--animation-slide-out-down:slide-out-down .5s var(--ease-3);--animation-slide-out-right:slide-out-right .5s var(--ease-3);--animation-slide-out-left:slide-out-left .5s var(--ease-3);--animation-slide-in-up:slide-in-up .5s var(--ease-3);--animation-slide-in-down:slide-in-down .5s var(--ease-3);--animation-slide-in-right:slide-in-right .5s var(--ease-3);--animation-slide-in-left:slide-in-left .5s var(--ease-3);--animation-shake-x:shake-x .75s var(--ease-out-5);--animation-shake-y:shake-y .75s var(--ease-out-5);--animation-shake-z:shake-z 1s var(--ease-in-out-3);--animation-spin:spin 2s linear infinite;--animation-ping:ping 5s var(--ease-out-3) infinite;--animation-blink:blink 1s var(--ease-out-3) infinite;--animation-float:float 3s var(--ease-in-out-3) infinite;--animation-bounce:bounce 2s var(--ease-squish-2) infinite;--animation-pulse:pulse 2s var(--ease-out-3) infinite;--border-size-1:1px;--border-size-2:2px;--border-size-3:5px;--border-size-4:10px;--border-size-5:25px;--radius-1:2px;--radius-2:5px;--radius-3:1rem;--radius-4:2rem;--radius-5:4rem;--radius-6:8rem;--radius-drawn-1:255px 15px 225px 15px/15px 225px 15px 255px;--radius-drawn-2:125px 10px 20px 185px/25px 205px 205px 25px;--radius-drawn-3:15px 255px 15px 225px/225px 15px 255px 15px;--radius-drawn-4:15px 25px 155px 25px/225px 150px 25px 115px;--radius-drawn-5:250px 25px 15px 20px/15px 80px 105px 115px;--radius-drawn-6:28px 100px 20px 15px/150px 30px 205px 225px;--radius-round:1e5px;--radius-blob-1:30% 70% 70% 30%/53% 30% 70% 47%;--radius-blob-2:53% 47% 34% 66%/63% 46% 54% 37%;--radius-blob-3:37% 63% 56% 44%/49% 56% 44% 51%;--radius-blob-4:63% 37% 37% 63%/43% 37% 63% 57%;--radius-blob-5:49% 51% 48% 52%/57% 44% 56% 43%;--radius-conditional-1:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-1));--radius-conditional-2:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-2));--radius-conditional-3:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-3));--radius-conditional-4:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-4));--radius-conditional-5:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-5));--radius-conditional-6:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-6))}@media (prefers-color-scheme: dark){:where(html){--shadow-color:220 40% 2%;--shadow-strength:25%;--inner-shadow-highlight:inset 0 -.5px 0 0 hsla(0,0%,100%,.067),inset 0 .5px 0 0 rgba(0,0,0,.467)}}@keyframes fade-in{to{opacity:1}}@keyframes fade-in-bloom{0%{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(2) blur(10px);opacity:1}to{filter:brightness(1) blur(0);opacity:1}}@keyframes fade-out{to{opacity:0}}@keyframes fade-out-bloom{to{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(2) blur(10px);opacity:1}0%{filter:brightness(1) blur(0);opacity:1}}@keyframes scale-up{to{transform:scale(1.25)}}@keyframes scale-down{to{transform:scale(.75)}}@keyframes slide-out-up{to{transform:translateY(-100%)}}@keyframes slide-out-down{to{transform:translateY(100%)}}@keyframes slide-out-right{to{transform:translateX(100%)}}@keyframes slide-out-left{to{transform:translateX(-100%)}}@keyframes slide-in-up{0%{transform:translateY(100%)}}@keyframes slide-in-down{0%{transform:translateY(-100%)}}@keyframes slide-in-right{0%{transform:translateX(-100%)}}@keyframes slide-in-left{0%{transform:translateX(100%)}}@keyframes shake-x{0%, to{transform:translateX(0)}20%{transform:translateX(-5%)}40%{transform:translateX(5%)}60%{transform:translateX(-5%)}80%{transform:translateX(5%)}}@keyframes shake-y{0%, to{transform:translateY(0)}20%{transform:translateY(-5%)}40%{transform:translateY(5%)}60%{transform:translateY(-5%)}80%{transform:translateY(5%)}}@keyframes shake-z{0%, to{transform:rotate(0deg)}20%{transform:rotate(-2deg)}40%{transform:rotate(2deg)}60%{transform:rotate(-2deg)}80%{transform:rotate(2deg)}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes ping{90%, to{opacity:0;transform:scale(2)}}@keyframes blink{0%, to{opacity:1}50%{opacity:.5}}@keyframes float{50%{transform:translateY(-25%)}}@keyframes bounce{25%{transform:translateY(-20%)}40%{transform:translateY(-3%)}0%, 60%, to{transform:translateY(0)}}@keyframes pulse{50%{transform:scale(.9)}}@media (prefers-color-scheme: dark){@keyframes fade-in-bloom{0%{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(.5) blur(10px);opacity:1}to{filter:brightness(1) blur(0);opacity:1}}}@media (prefers-color-scheme: dark){@keyframes fade-out-bloom{to{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(.5) blur(10px);opacity:1}0%{filter:brightness(1) blur(0);opacity:1}}}:root{font-size:80%}a:visited{color:var(--link)}li.active{color:var(--text-2);text-shadow:0 0 10px var(--camo-5),0 0 25px var(--camo-7)}code{background:none}pre{padding:1em;color:var(--text-2);text-shadow:0 0 10px var(--camo-3),0 0 25px var(--camo-5)}div.doc-content>h1,h2,h3,h4,h5{font-size:var(--font-size-5)}img.logo{max-width:72px}html,body{box-sizing:border-box;height:100%}.content{display:flex;justify-content:center;align-items:center}body>footer{margin:0px;padding:0px}.wrapper{min-height:100%;display:flex;flex-direction:column;box-sizing:border-box}.page-body{flex-grow:1}.page-footer{flex-grow:0;flex-shrink:0}footer{text-align:center;font-size:.8em}article{padding:.5em}nav{display:flex;justify-content:space-between;align-items:center;background-color:var(--surface-1);padding:10px;color:var(--text-1);box-shadow:var(--shadow-3)}nav.subnav{background-color:var(--surface-2);color:var(--text-1);box-shadow:var(--shadow-5)}nav .logo{font-size:20px;font-weight:bold}nav ul{list-style-type:none;margin:0;padding:0;display:flex}nav ul li{margin-left:20px}nav ul li a{color:var(--link);text-decoration:none}.documentation{margin:1em}@media (width > 768px){.documentation{display:flex}}.documentation .doc-content{max-width:100%}.documentation .side-panel{margin-right:3em;margin-bottom:1em;min-width:200px}.documentation .side-panel ul>li{list-style:none;font-weight:bold;font-size:1.2em}h1,h2,h3,h4,h5{max-inline-size:none;margin-top:.5em;margin-bottom:.5em}main.page-body{margin:2em}div.side-panel>ul{padding-left:0px}.diagram{min-width:200%} |
6087 | \ No newline at end of file |
6088 | diff --git a/www/public/pico/pico.classless.css b/www/public/pico/pico.classless.css |
6089 | deleted file mode 100644 |
6090 | index dd80b93..0000000 |
6091 | --- a/www/public/pico/pico.classless.css |
6092 | +++ /dev/null |
6093 | @@ -1,4 +0,0 @@ |
6094 | - /*! |
6095 | - * Pico CSS v1.5.10 (https://picocss.com) |
6096 | - * Copyright 2019-2023 - Licensed under MIT |
6097 | - */:root{--font-family: system-ui, -apple-system, "Segoe UI", "Roboto", "Ubuntu", "Cantarell", "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--line-height: 1.5;--font-weight: 400;--font-size: 16px;--border-radius: 0.25rem;--border-width: 1px;--outline-width: 3px;--spacing: 1rem;--typography-spacing-vertical: 1.5rem;--block-spacing-vertical: calc(var(--spacing) * 2);--block-spacing-horizontal: var(--spacing);--form-element-spacing-vertical: 0.75rem;--form-element-spacing-horizontal: 1rem;--nav-element-spacing-vertical: 1rem;--nav-element-spacing-horizontal: 0.5rem;--nav-link-spacing-vertical: 0.5rem;--nav-link-spacing-horizontal: 0.5rem;--form-label-font-weight: var(--font-weight);--transition: 0.2s ease-in-out;--modal-overlay-backdrop-filter: blur(0.25rem)}@media (min-width: 576px){:root{--font-size: 17px}}@media (min-width: 768px){:root{--font-size: 18px}}@media (min-width: 992px){:root{--font-size: 19px}}@media (min-width: 1200px){:root{--font-size: 20px}}@media (min-width: 576px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 2.5)}}@media (min-width: 768px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 3)}}@media (min-width: 992px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 3.5)}}@media (min-width: 1200px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 4)}}@media (min-width: 576px){article{--block-spacing-horizontal: calc(var(--spacing) * 1.25)}}@media (min-width: 768px){article{--block-spacing-horizontal: calc(var(--spacing) * 1.5)}}@media (min-width: 992px){article{--block-spacing-horizontal: calc(var(--spacing) * 1.75)}}@media (min-width: 1200px){article{--block-spacing-horizontal: calc(var(--spacing) * 2)}}dialog>article{--block-spacing-vertical: calc(var(--spacing) * 2);--block-spacing-horizontal: var(--spacing)}@media (min-width: 576px){dialog>article{--block-spacing-vertical: calc(var(--spacing) * 2.5);--block-spacing-horizontal: calc(var(--spacing) * 1.25)}}@media (min-width: 768px){dialog>article{--block-spacing-vertical: calc(var(--spacing) * 3);--block-spacing-horizontal: calc(var(--spacing) * 1.5)}}a{--text-decoration: none}small{--font-size: 0.875em}h1,h2,h3,h4,h5,h6{--font-weight: 700}h1{--font-size: 2rem;--typography-spacing-vertical: 3rem}h2{--font-size: 1.75rem;--typography-spacing-vertical: 2.625rem}h3{--font-size: 1.5rem;--typography-spacing-vertical: 2.25rem}h4{--font-size: 1.25rem;--typography-spacing-vertical: 1.874rem}h5{--font-size: 1.125rem;--typography-spacing-vertical: 1.6875rem}[type=checkbox],[type=radio]{--border-width: 2px}[type=checkbox][role=switch]{--border-width: 3px}thead th,thead td,tfoot th,tfoot td{--border-width: 3px}:not(thead,tfoot)>*>td{--font-size: 0.875em}pre,code,kbd,samp{--font-family: "Menlo", "Consolas", "Roboto Mono", "Ubuntu Monospace", "Noto Mono", "Oxygen Mono", "Liberation Mono", monospace, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}kbd{--font-weight: bolder}[data-theme=light],:root:not([data-theme=dark]){--background-color: #fff;--color: #415462;--h1-color: #1b2832;--h2-color: #24333e;--h3-color: #2c3d49;--h4-color: #374956;--h5-color: #415462;--h6-color: #4d606d;--muted-color: #73828c;--muted-border-color: #edf0f3;--primary: #1095c1;--primary-hover: #08769b;--primary-focus: rgba(16,149,193,.125);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #415462;--secondary-focus: rgba(89,107,120,.125);--secondary-inverse: #fff;--contrast: #1b2832;--contrast-hover: #000;--contrast-focus: rgba(89,107,120,.125);--contrast-inverse: #fff;--mark-background-color: #fff2ca;--mark-color: #543a26;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: transparent;--form-element-border-color: #a2afb9;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: transparent;--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #d5dce2;--form-element-disabled-border-color: #a2afb9;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #c62828;--form-element-invalid-active-border-color: #d32f2f;--form-element-invalid-focus-color: rgba(211,47,47,.125);--form-element-valid-border-color: #388e3c;--form-element-valid-active-border-color: #43a047;--form-element-valid-focus-color: rgba(67,160,71,.125);--switch-background-color: #bbc6ce;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #d5dce2;--range-active-border-color: #bbc6ce;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: #f6f8f9;--code-background-color: #edf0f3;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #b34d80;--code-property-color: #3d888f;--code-value-color: #986;--code-comment-color: #a2afb9;--accordion-border-color: var(--muted-border-color);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: var(--background-color);--card-border-color: var(--muted-border-color);--card-box-shadow: .0145rem .029rem .174rem rgba(27,40,50,.01698), .0335rem .067rem .402rem rgba(27,40,50,.024), .0625rem .125rem .75rem rgba(27,40,50,.03), .1125rem .225rem 1.35rem rgba(27,40,50,.036), .2085rem .417rem 2.502rem rgba(27,40,50,.04302), .5rem 1rem 6rem rgba(27,40,50,.06), 0 0 0 0.0625rem rgba(27,40,50,.015);--card-sectionning-background-color: #fbfbfc;--dropdown-background-color: #fbfbfc;--dropdown-border-color: #e1e6eb;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: #edf0f3;--modal-overlay-background-color: rgba(213,220,226,.7);--progress-background-color: #d5dce2;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(65, 84, 98)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--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(115, 130, 140)' stroke-width='4' 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");--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(65, 84, 98)' 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");--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(198, 40, 40)' 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");--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");--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(65, 84, 98)' stroke-width='2' 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");--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(65, 84, 98)' 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");--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(56, 142, 60)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:light}@media only screen and (prefers-color-scheme: dark){:root:not([data-theme]){--background-color: #11191f;--color: #bbc6ce;--h1-color: #edf0f3;--h2-color: #e1e6eb;--h3-color: #d5dce2;--h4-color: #c8d1d8;--h5-color: #bbc6ce;--h6-color: #afbbc4;--muted-color: #73828c;--muted-border-color: #1f2d38;--primary: #1095c1;--primary-hover: #1ab3e6;--primary-focus: rgba(16,149,193,.25);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #73828c;--secondary-focus: rgba(115,130,140,.25);--secondary-inverse: #fff;--contrast: #edf0f3;--contrast-hover: #fff;--contrast-focus: rgba(115,130,140,.25);--contrast-inverse: #000;--mark-background-color: #d1c284;--mark-color: #11191f;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: #11191f;--form-element-border-color: #374956;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: var(--form-element-background-color);--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #2c3d49;--form-element-disabled-border-color: #415462;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #b71c1c;--form-element-invalid-active-border-color: #c62828;--form-element-invalid-focus-color: rgba(198,40,40,.25);--form-element-valid-border-color: #2e7d32;--form-element-valid-active-border-color: #388e3c;--form-element-valid-focus-color: rgba(56,142,60,.25);--switch-background-color: #374956;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #24333e;--range-active-border-color: #2c3d49;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: rgba(115,130,140,.05);--code-background-color: #18232c;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #a65980;--code-property-color: #599fa6;--code-value-color: #8c8473;--code-comment-color: #4d606d;--accordion-border-color: var(--muted-border-color);--accordion-active-summary-color: var(--primary);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: #141e26;--card-border-color: var(--card-background-color);--card-box-shadow: .0145rem .029rem .174rem rgba(0,0,0,.01698), .0335rem .067rem .402rem rgba(0,0,0,.024), .0625rem .125rem .75rem rgba(0,0,0,.03), .1125rem .225rem 1.35rem rgba(0,0,0,.036), .2085rem .417rem 2.502rem rgba(0,0,0,.04302), .5rem 1rem 6rem rgba(0,0,0,.06), 0 0 0 0.0625rem rgba(0,0,0,.015);--card-sectionning-background-color: #18232c;--dropdown-background-color: #1b2832;--dropdown-border-color: #24333e;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: rgba(36,51,62,.75);--modal-overlay-background-color: rgba(36,51,62,.8);--progress-background-color: #24333e;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(162, 175, 185)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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(0, 0, 0)' 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");--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(115, 130, 140)' stroke-width='4' 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");--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(162, 175, 185)' 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");--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(183, 28, 28)' 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");--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");--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(162, 175, 185)' stroke-width='2' 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");--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(162, 175, 185)' 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");--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(46, 125, 50)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:dark}}[data-theme=dark]{--background-color: #11191f;--color: #bbc6ce;--h1-color: #edf0f3;--h2-color: #e1e6eb;--h3-color: #d5dce2;--h4-color: #c8d1d8;--h5-color: #bbc6ce;--h6-color: #afbbc4;--muted-color: #73828c;--muted-border-color: #1f2d38;--primary: #1095c1;--primary-hover: #1ab3e6;--primary-focus: rgba(16,149,193,.25);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #73828c;--secondary-focus: rgba(115,130,140,.25);--secondary-inverse: #fff;--contrast: #edf0f3;--contrast-hover: #fff;--contrast-focus: rgba(115,130,140,.25);--contrast-inverse: #000;--mark-background-color: #d1c284;--mark-color: #11191f;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: #11191f;--form-element-border-color: #374956;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: var(--form-element-background-color);--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #2c3d49;--form-element-disabled-border-color: #415462;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #b71c1c;--form-element-invalid-active-border-color: #c62828;--form-element-invalid-focus-color: rgba(198,40,40,.25);--form-element-valid-border-color: #2e7d32;--form-element-valid-active-border-color: #388e3c;--form-element-valid-focus-color: rgba(56,142,60,.25);--switch-background-color: #374956;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #24333e;--range-active-border-color: #2c3d49;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: rgba(115,130,140,.05);--code-background-color: #18232c;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #a65980;--code-property-color: #599fa6;--code-value-color: #8c8473;--code-comment-color: #4d606d;--accordion-border-color: var(--muted-border-color);--accordion-active-summary-color: var(--primary);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: #141e26;--card-border-color: var(--card-background-color);--card-box-shadow: .0145rem .029rem .174rem rgba(0,0,0,.01698), .0335rem .067rem .402rem rgba(0,0,0,.024), .0625rem .125rem .75rem rgba(0,0,0,.03), .1125rem .225rem 1.35rem rgba(0,0,0,.036), .2085rem .417rem 2.502rem rgba(0,0,0,.04302), .5rem 1rem 6rem rgba(0,0,0,.06), 0 0 0 0.0625rem rgba(0,0,0,.015);--card-sectionning-background-color: #18232c;--dropdown-background-color: #1b2832;--dropdown-border-color: #24333e;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: rgba(36,51,62,.75);--modal-overlay-background-color: rgba(36,51,62,.8);--progress-background-color: #24333e;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(162, 175, 185)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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(0, 0, 0)' 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");--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(115, 130, 140)' stroke-width='4' 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");--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(162, 175, 185)' 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");--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(183, 28, 28)' 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");--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");--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(162, 175, 185)' stroke-width='2' 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");--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(162, 175, 185)' 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");--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(46, 125, 50)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:dark}progress,[type=checkbox],[type=radio],[type=range]{accent-color:var(--primary)}*,*::before,*::after{box-sizing:border-box;background-repeat:no-repeat}::before,::after{text-decoration:inherit;vertical-align:inherit}:where(:root){-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--background-color);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);line-height:var(--line-height);font-family:var(--font-family);text-rendering:optimizeLegibility;overflow-wrap:break-word;cursor:default;tab-size:4}main{display:block}body{width:100%;margin:0}body>header,body>main,body>footer{width:100%;margin-right:auto;margin-left:auto;padding:var(--block-spacing-vertical) var(--block-spacing-horizontal)}@media (min-width: 576px){body>header,body>main,body>footer{max-width:510px;padding-right:0;padding-left:0}}@media (min-width: 768px){body>header,body>main,body>footer{max-width:700px}}@media (min-width: 992px){body>header,body>main,body>footer{max-width:920px}}@media (min-width: 1200px){body>header,body>main,body>footer{max-width:1130px}}section{margin-bottom:var(--block-spacing-vertical)}figure{display:block;margin:0;padding:0;overflow-x:auto}figure figcaption{padding:calc(var(--spacing)*.5) 0;color:var(--muted-color)}b,strong{font-weight:bolder}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,figure,form,ol,p,pre,table,ul{margin-top:0;margin-bottom:var(--typography-spacing-vertical);color:var(--color);font-style:normal;font-weight:var(--font-weight);font-size:var(--font-size)}a,[role=link]{--color: var(--primary);--background-color: transparent;outline:none;background-color:var(--background-color);color:var(--color);text-decoration:var(--text-decoration);transition:background-color var(--transition),color var(--transition),text-decoration var(--transition),box-shadow var(--transition)}a:is([aria-current],:hover,:active,:focus),[role=link]:is([aria-current],:hover,:active,:focus){--color: var(--primary-hover);--text-decoration: underline}a:focus,[role=link]:focus{--background-color: var(--primary-focus)}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--typography-spacing-vertical);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);font-family:var(--font-family)}h1{--color: var(--h1-color)}h2{--color: var(--h2-color)}h3{--color: var(--h3-color)}h4{--color: var(--h4-color)}h5{--color: var(--h5-color)}h6{--color: var(--h6-color)}:where(address,blockquote,dl,figure,form,ol,p,pre,table,ul)~:is(h1,h2,h3,h4,h5,h6){margin-top:var(--typography-spacing-vertical)}hgroup{margin-bottom:var(--typography-spacing-vertical)}hgroup>*{margin-bottom:0}hgroup>*:last-child{--color: var(--muted-color);--font-weight: unset;font-size:1rem;font-family:unset}p{margin-bottom:var(--typography-spacing-vertical)}small{font-size:var(--font-size)}:where(dl,ol,ul){padding-right:0;padding-left:var(--spacing);padding-inline-start:var(--spacing);padding-inline-end:0}:where(dl,ol,ul) li{margin-bottom:calc(var(--typography-spacing-vertical)*.25)}:where(dl,ol,ul) :is(dl,ol,ul){margin:0;margin-top:calc(var(--typography-spacing-vertical)*.25)}ul li{list-style:square}mark{padding:.125rem .25rem;background-color:var(--mark-background-color);color:var(--mark-color);vertical-align:baseline}blockquote{display:block;margin:var(--typography-spacing-vertical) 0;padding:var(--spacing);border-right:none;border-left:.25rem solid var(--blockquote-border-color);border-inline-start:.25rem solid var(--blockquote-border-color);border-inline-end:none}blockquote footer{margin-top:calc(var(--typography-spacing-vertical)*.5);color:var(--blockquote-footer-color)}abbr[title]{border-bottom:1px dotted;text-decoration:none;cursor:help}ins{color:var(--ins-color);text-decoration:none}del{color:var(--del-color)}::selection{background-color:var(--primary-focus)}:where(audio,canvas,iframe,img,svg,video){vertical-align:middle}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}:where(iframe){border-style:none}img{max-width:100%;height:auto;border-style:none}:where(svg:not([fill])){fill:currentColor}svg:not(:root){overflow:hidden}button{margin:0;overflow:visible;font-family:inherit;text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button{display:block;width:100%;margin-bottom:var(--spacing)}[role=button]{display:inline-block;text-decoration:none}button,input[type=submit],input[type=button],input[type=reset],[role=button]{--background-color: var(--primary);--border-color: var(--primary);--color: var(--primary-inverse);--box-shadow: var(--button-box-shadow, 0 0 0 rgba(0, 0, 0, 0));padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}button:is([aria-current],:hover,:active,:focus),input[type=submit]:is([aria-current],:hover,:active,:focus),input[type=button]:is([aria-current],:hover,:active,:focus),input[type=reset]:is([aria-current],:hover,:active,:focus),[role=button]:is([aria-current],:hover,:active,:focus){--background-color: var(--primary-hover);--border-color: var(--primary-hover);--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));--color: var(--primary-inverse)}button:focus,input[type=submit]:focus,input[type=button]:focus,input[type=reset]:focus,[role=button]:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--primary-focus)}input[type=reset]{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);cursor:pointer}input[type=reset]:is([aria-current],:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover)}input[type=reset]:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--secondary-focus)}:where(button,[type=submit],[type=button],[type=reset],[role=button])[disabled],:where(fieldset[disabled]) :is(button,[type=submit],[type=button],[type=reset],[role=button]),a[role=button]:not([href]){opacity:.5;pointer-events:none}input,optgroup,select,textarea{margin:0;font-size:1rem;line-height:var(--line-height);font-family:inherit;letter-spacing:inherit}input{overflow:visible}select{text-transform:none}legend{max-width:100%;padding:0;color:inherit;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{padding:0}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::-moz-focus-inner{padding:0;border-style:none}:-moz-focusring{outline:none}:-moz-ui-invalid{box-shadow:none}::-ms-expand{display:none}[type=file],[type=range]{padding:0;border-width:0}input:not([type=checkbox],[type=radio],[type=range]){height:calc(1rem*var(--line-height) + var(--form-element-spacing-vertical)*2 + var(--border-width)*2)}fieldset{margin:0;margin-bottom:var(--spacing);padding:0;border:0}label,fieldset legend{display:block;margin-bottom:calc(var(--spacing)*.25);font-weight:var(--form-label-font-weight, var(--font-weight))}input:not([type=checkbox],[type=radio]),select,textarea{width:100%}input:not([type=checkbox],[type=radio],[type=range],[type=file]),select,textarea{appearance:none;padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal)}input,select,textarea{--background-color: var(--form-element-background-color);--border-color: var(--form-element-border-color);--color: var(--form-element-color);--box-shadow: none;border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}input:not([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[readonly]):is(:active,:focus),:where(select,textarea):is(:active,:focus){--background-color: var(--form-element-active-background-color)}input:not([type=submit],[type=button],[type=reset],[role=switch],[readonly]):is(:active,:focus),:where(select,textarea):is(:active,:focus){--border-color: var(--form-element-active-border-color)}input:not([type=submit],[type=button],[type=reset],[type=range],[type=file],[readonly]):focus,select:focus,textarea:focus{--box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color)}input:not([type=submit],[type=button],[type=reset])[disabled],select[disabled],textarea[disabled],:where(fieldset[disabled]) :is(input:not([type=submit],[type=button],[type=reset]),select,textarea){--background-color: var(--form-element-disabled-background-color);--border-color: var(--form-element-disabled-border-color);opacity:var(--form-element-disabled-opacity);pointer-events:none}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid]{padding-right:calc(var(--form-element-spacing-horizontal) + 1.5rem) !important;padding-left:var(--form-element-spacing-horizontal);padding-inline-start:var(--form-element-spacing-horizontal) !important;padding-inline-end:calc(var(--form-element-spacing-horizontal) + 1.5rem) !important;background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid=false]{background-image:var(--icon-valid)}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid=true]{background-image:var(--icon-invalid)}:where(input,select,textarea)[aria-invalid=false]{--border-color: var(--form-element-valid-border-color)}:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus){--border-color: var(--form-element-valid-active-border-color) !important;--box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color) !important}:where(input,select,textarea)[aria-invalid=true]{--border-color: var(--form-element-invalid-border-color)}:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus){--border-color: var(--form-element-invalid-active-border-color) !important;--box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color) !important}[dir=rtl] :where(input,select,textarea):not([type=checkbox],[type=radio]):is([aria-invalid],[aria-invalid=true],[aria-invalid=false]){background-position:center left .75rem}input::placeholder,input::-webkit-input-placeholder,textarea::placeholder,textarea::-webkit-input-placeholder,select:invalid{color:var(--form-element-placeholder-color);opacity:1}input:not([type=checkbox],[type=radio]),select,textarea{margin-bottom:var(--spacing)}select::-ms-expand{border:0;background-color:rgba(0,0,0,0)}select:not([multiple],[size]){padding-right:calc(var(--form-element-spacing-horizontal) + 1.5rem);padding-left:var(--form-element-spacing-horizontal);padding-inline-start:var(--form-element-spacing-horizontal);padding-inline-end:calc(var(--form-element-spacing-horizontal) + 1.5rem);background-image:var(--icon-chevron);background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}[dir=rtl] select:not([multiple],[size]){background-position:center left .75rem}:where(input,select,textarea)+small{display:block;width:100%;margin-top:calc(var(--spacing)*-.75);margin-bottom:var(--spacing);color:var(--muted-color)}label>:where(input,select,textarea){margin-top:calc(var(--spacing)*.25)}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.25em;height:1.25em;margin-top:-.125em;margin-right:.375em;margin-left:0;margin-inline-start:0;margin-inline-end:.375em;border-width:var(--border-width);font-size:inherit;vertical-align:middle;cursor:pointer}[type=checkbox]::-ms-check,[type=radio]::-ms-check{display:none}[type=checkbox]:checked,[type=checkbox]:checked:active,[type=checkbox]:checked:focus,[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--background-color: var(--primary);--border-color: var(--primary);background-image:var(--icon-checkbox);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=checkbox]~label,[type=radio]~label{display:inline-block;margin-right:.375em;margin-bottom:0;cursor:pointer}[type=checkbox]:indeterminate{--background-color: var(--primary);--border-color: var(--primary);background-image:var(--icon-minus);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=radio]{border-radius:50%}[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--background-color: var(--primary-inverse);border-width:.35em;background-image:none}[type=checkbox][role=switch]{--background-color: var(--switch-background-color);--border-color: var(--switch-background-color);--color: var(--switch-color);width:2.25em;height:1.25em;border:var(--border-width) solid var(--border-color);border-radius:1.25em;background-color:var(--background-color);line-height:1.25em}[type=checkbox][role=switch]:focus{--background-color: var(--switch-background-color);--border-color: var(--switch-background-color)}[type=checkbox][role=switch]:checked{--background-color: var(--switch-checked-background-color);--border-color: var(--switch-checked-background-color)}[type=checkbox][role=switch]:before{display:block;width:calc(1.25em - (var(--border-width) * 2));height:100%;border-radius:50%;background-color:var(--color);content:"";transition:margin .1s ease-in-out}[type=checkbox][role=switch]:checked{background-image:none}[type=checkbox][role=switch]:checked::before{margin-left:calc(1.125em - var(--border-width));margin-inline-start:calc(1.125em - var(--border-width))}[type=checkbox][aria-invalid=false],[type=checkbox]:checked[aria-invalid=false],[type=radio][aria-invalid=false],[type=radio]:checked[aria-invalid=false],[type=checkbox][role=switch][aria-invalid=false],[type=checkbox][role=switch]:checked[aria-invalid=false]{--border-color: var(--form-element-valid-border-color)}[type=checkbox][aria-invalid=true],[type=checkbox]:checked[aria-invalid=true],[type=radio][aria-invalid=true],[type=radio]:checked[aria-invalid=true],[type=checkbox][role=switch][aria-invalid=true],[type=checkbox][role=switch]:checked[aria-invalid=true]{--border-color: var(--form-element-invalid-border-color)}[type=color]::-webkit-color-swatch-wrapper{padding:0}[type=color]::-moz-focus-inner{padding:0}[type=color]::-webkit-color-swatch{border:0;border-radius:calc(var(--border-radius)*.5)}[type=color]::-moz-color-swatch{border:0;border-radius:calc(var(--border-radius)*.5)}input:not([type=checkbox],[type=radio],[type=range],[type=file]):is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){--icon-position: 0.75rem;--icon-width: 1rem;padding-right:calc(var(--icon-width) + var(--icon-position));background-image:var(--icon-date);background-position:center right var(--icon-position);background-size:var(--icon-width) auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=time]{background-image:var(--icon-time)}[type=date]::-webkit-calendar-picker-indicator,[type=datetime-local]::-webkit-calendar-picker-indicator,[type=month]::-webkit-calendar-picker-indicator,[type=time]::-webkit-calendar-picker-indicator,[type=week]::-webkit-calendar-picker-indicator{width:var(--icon-width);margin-right:calc(var(--icon-width)*-1);margin-left:var(--icon-position);opacity:0}[dir=rtl] :is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){text-align:right}@-moz-document url-prefix(){[type=date],[type=datetime-local],[type=month],[type=time],[type=week]{padding-right:var(--form-element-spacing-horizontal) !important;background-image:none !important}}[type=file]{--color: var(--muted-color);padding:calc(var(--form-element-spacing-vertical)*.5) 0;border:0;border-radius:0;background:none}[type=file]::file-selector-button{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);margin-right:calc(var(--spacing)/2);margin-left:0;margin-inline-start:0;margin-inline-end:calc(var(--spacing)/2);padding:calc(var(--form-element-spacing-vertical)*.5) calc(var(--form-element-spacing-horizontal)*.5);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[type=file]::file-selector-button:is(:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover)}[type=file]::-webkit-file-upload-button{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);margin-right:calc(var(--spacing)/2);margin-left:0;margin-inline-start:0;margin-inline-end:calc(var(--spacing)/2);padding:calc(var(--form-element-spacing-vertical)*.5) calc(var(--form-element-spacing-horizontal)*.5);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[type=file]::-webkit-file-upload-button:is(:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover)}[type=file]::-ms-browse{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);margin-right:calc(var(--spacing)/2);margin-left:0;margin-inline-start:0;margin-inline-end:calc(var(--spacing)/2);padding:calc(var(--form-element-spacing-vertical)*.5) calc(var(--form-element-spacing-horizontal)*.5);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[type=file]::-ms-browse:is(:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover)}[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:1.25rem;background:none}[type=range]::-webkit-slider-runnable-track{width:100%;height:.25rem;border-radius:var(--border-radius);background-color:var(--range-border-color);transition:background-color var(--transition),box-shadow var(--transition)}[type=range]::-moz-range-track{width:100%;height:.25rem;border-radius:var(--border-radius);background-color:var(--range-border-color);transition:background-color var(--transition),box-shadow var(--transition)}[type=range]::-ms-track{width:100%;height:.25rem;border-radius:var(--border-radius);background-color:var(--range-border-color);transition:background-color var(--transition),box-shadow var(--transition)}[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.5rem;border:2px solid var(--range-thumb-border-color);border-radius:50%;background-color:var(--range-thumb-color);cursor:pointer;transition:background-color var(--transition),transform var(--transition)}[type=range]::-moz-range-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.5rem;border:2px solid var(--range-thumb-border-color);border-radius:50%;background-color:var(--range-thumb-color);cursor:pointer;transition:background-color var(--transition),transform var(--transition)}[type=range]::-ms-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.5rem;border:2px solid var(--range-thumb-border-color);border-radius:50%;background-color:var(--range-thumb-color);cursor:pointer;transition:background-color var(--transition),transform var(--transition)}[type=range]:hover,[type=range]:focus{--range-border-color: var(--range-active-border-color);--range-thumb-color: var(--range-thumb-hover-color)}[type=range]:active{--range-thumb-color: var(--range-thumb-active-color)}[type=range]:active::-webkit-slider-thumb{transform:scale(1.25)}[type=range]:active::-moz-range-thumb{transform:scale(1.25)}[type=range]:active::-ms-thumb{transform:scale(1.25)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{padding-inline-start:calc(var(--form-element-spacing-horizontal) + 1.75rem);border-radius:5rem;background-image:var(--icon-search);background-position:center left 1.125rem;background-size:1rem auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{padding-inline-start:calc(var(--form-element-spacing-horizontal) + 1.75rem) !important;background-position:center left 1.125rem,center right .75rem}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=false]{background-image:var(--icon-search),var(--icon-valid)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=true]{background-image:var(--icon-search),var(--icon-invalid)}[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;display:none}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{background-position:center right 1.125rem}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{background-position:center right 1.125rem,center left .75rem}:where(table){width:100%;border-collapse:collapse;border-spacing:0;text-indent:0}th,td{padding:calc(var(--spacing)/2) var(--spacing);border-bottom:var(--border-width) solid var(--table-border-color);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);text-align:left;text-align:start}tfoot th,tfoot td{border-top:var(--border-width) solid var(--table-border-color);border-bottom:0}table[role=grid] tbody tr:nth-child(odd){background-color:var(--table-row-stripped-background-color)}pre,code,kbd,samp{font-size:.875em;font-family:var(--font-family)}pre{-ms-overflow-style:scrollbar;overflow:auto}pre,code,kbd{border-radius:var(--border-radius);background:var(--code-background-color);color:var(--code-color);font-weight:var(--font-weight);line-height:initial}code,kbd{display:inline-block;padding:.375rem .5rem}pre{display:block;margin-bottom:var(--spacing);overflow-x:auto}pre>code{display:block;padding:var(--spacing);background:none;font-size:14px;line-height:var(--line-height)}code b{color:var(--code-tag-color);font-weight:var(--font-weight)}code i{color:var(--code-property-color);font-style:normal}code u{color:var(--code-value-color);text-decoration:none}code em{color:var(--code-comment-color);font-style:normal}kbd{background-color:var(--code-kbd-background-color);color:var(--code-kbd-color);vertical-align:baseline}hr{height:0;border:0;border-top:1px solid var(--muted-border-color);color:inherit}[hidden],template{display:none !important}canvas{display:inline-block}details{display:block;margin-bottom:var(--spacing);padding-bottom:var(--spacing);border-bottom:var(--border-width) solid var(--accordion-border-color)}details summary{line-height:1rem;list-style-type:none;cursor:pointer;transition:color var(--transition)}details summary:not([role]){color:var(--accordion-close-summary-color)}details summary::-webkit-details-marker{display:none}details summary::marker{display:none}details summary::-moz-list-bullet{list-style-type:none}details summary::after{display:block;width:1rem;height:1rem;margin-inline-start:calc(var(--spacing, 1rem)*.5);float:right;transform:rotate(-90deg);background-image:var(--icon-chevron);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:"";transition:transform var(--transition)}details summary:focus{outline:none}details summary:focus:not([role=button]){color:var(--accordion-active-summary-color)}details summary[role=button]{width:100%;text-align:left}details summary[role=button]::after{height:calc(1rem*var(--line-height, 1.5));background-image:var(--icon-chevron-button)}details[open]>summary{margin-bottom:calc(var(--spacing))}details[open]>summary:not([role]):not(:focus){color:var(--accordion-open-summary-color)}details[open]>summary::after{transform:rotate(0)}[dir=rtl] details summary{text-align:right}[dir=rtl] details summary::after{float:left;background-position:left center}article{margin:var(--block-spacing-vertical) 0;padding:var(--block-spacing-vertical) var(--block-spacing-horizontal);border-radius:var(--border-radius);background:var(--card-background-color);box-shadow:var(--card-box-shadow)}article>header,article>footer{margin-right:calc(var(--block-spacing-horizontal)*-1);margin-left:calc(var(--block-spacing-horizontal)*-1);padding:calc(var(--block-spacing-vertical)*.66) var(--block-spacing-horizontal);background-color:var(--card-sectionning-background-color)}article>header{margin-top:calc(var(--block-spacing-vertical)*-1);margin-bottom:var(--block-spacing-vertical);border-bottom:var(--border-width) solid var(--card-border-color);border-top-right-radius:var(--border-radius);border-top-left-radius:var(--border-radius)}article>footer{margin-top:var(--block-spacing-vertical);margin-bottom:calc(var(--block-spacing-vertical)*-1);border-top:var(--border-width) solid var(--card-border-color);border-bottom-right-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius)}:root{--scrollbar-width: 0px}dialog{display:flex;z-index:999;position:fixed;top:0;right:0;bottom:0;left:0;align-items:center;justify-content:center;width:inherit;min-width:100%;height:inherit;min-height:100%;padding:var(--spacing);border:0;backdrop-filter:var(--modal-overlay-backdrop-filter);background-color:var(--modal-overlay-background-color);color:var(--color)}dialog article{max-height:calc(100vh - var(--spacing)*2);overflow:auto}@media (min-width: 576px){dialog article{max-width:510px}}@media (min-width: 768px){dialog article{max-width:700px}}dialog article>header,dialog article>footer{padding:calc(var(--block-spacing-vertical)*.5) var(--block-spacing-horizontal)}dialog article>header .close{margin:0;margin-left:var(--spacing);float:right}dialog article>footer{text-align:right}dialog article>footer [role=button]{margin-bottom:0}dialog article>footer [role=button]:not(:first-of-type){margin-left:calc(var(--spacing)*.5)}dialog article p:last-of-type{margin:0}dialog:not([open]),dialog[open=false]{display:none}:where(nav li)::before{float:left;content:""}nav,nav ul{display:flex}nav{justify-content:space-between}nav ol,nav ul{align-items:center;margin-bottom:0;padding:0;list-style:none}nav ol:first-of-type,nav ul:first-of-type{margin-left:calc(var(--nav-element-spacing-horizontal)*-1)}nav ol:last-of-type,nav ul:last-of-type{margin-right:calc(var(--nav-element-spacing-horizontal)*-1)}nav li{display:inline-block;margin:0;padding:var(--nav-element-spacing-vertical) var(--nav-element-spacing-horizontal)}nav li>*{--spacing: 0}nav :where(a,[role=link]){display:inline-block;margin:calc(var(--nav-link-spacing-vertical)*-1) calc(var(--nav-link-spacing-horizontal)*-1);padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);border-radius:var(--border-radius);text-decoration:none}nav :where(a,[role=link]):is([aria-current],:hover,:active,:focus){text-decoration:none}nav[aria-label=breadcrumb]{align-items:center;justify-content:start}nav[aria-label=breadcrumb] ul li:not(:first-child){margin-inline-start:var(--nav-link-spacing-horizontal)}nav[aria-label=breadcrumb] ul li:not(:last-child) ::after{position:absolute;width:calc(var(--nav-link-spacing-horizontal)*2);margin-inline-start:calc(var(--nav-link-spacing-horizontal)/2);content:"/";color:var(--muted-color);text-align:center}nav[aria-label=breadcrumb] a[aria-current]{background-color:rgba(0,0,0,0);color:inherit;text-decoration:none;pointer-events:none}nav [role=button]{margin-right:inherit;margin-left:inherit;padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal)}aside nav,aside ol,aside ul,aside li{display:block}aside li{padding:calc(var(--nav-element-spacing-vertical)*.5) var(--nav-element-spacing-horizontal)}aside li a{display:block}aside li [role=button]{margin:inherit}[dir=rtl] nav[aria-label=breadcrumb] ul li:not(:last-child) ::after{content:"\\"}progress{display:inline-block;vertical-align:baseline}progress{-webkit-appearance:none;-moz-appearance:none;display:inline-block;appearance:none;width:100%;height:.5rem;margin-bottom:calc(var(--spacing)*.5);overflow:hidden;border:0;border-radius:var(--border-radius);background-color:var(--progress-background-color);color:var(--progress-color)}progress::-webkit-progress-bar{border-radius:var(--border-radius);background:none}progress[value]::-webkit-progress-value{background-color:var(--progress-color)}progress::-moz-progress-bar{background-color:var(--progress-color)}@media (prefers-reduced-motion: no-preference){progress:indeterminate{background:var(--progress-background-color) linear-gradient(to right, var(--progress-color) 30%, var(--progress-background-color) 30%) top left/150% 150% no-repeat;animation:progress-indeterminate 1s linear infinite}progress:indeterminate[value]::-webkit-progress-value{background-color:rgba(0,0,0,0)}progress:indeterminate::-moz-progress-bar{background-color:rgba(0,0,0,0)}}@media (prefers-reduced-motion: no-preference){[dir=rtl] progress:indeterminate{animation-direction:reverse}}@keyframes progress-indeterminate{0%{background-position:200% 0}100%{background-position:-200% 0}}details[role=list],li[role=list]{position:relative}details[role=list] summary+ul,li[role=list]>ul{display:flex;z-index:99;position:absolute;top:auto;right:0;left:0;flex-direction:column;margin:0;padding:0;border:var(--border-width) solid var(--dropdown-border-color);border-radius:var(--border-radius);border-top-right-radius:0;border-top-left-radius:0;background-color:var(--dropdown-background-color);box-shadow:var(--card-box-shadow);color:var(--dropdown-color);white-space:nowrap}details[role=list] summary+ul li,li[role=list]>ul li{width:100%;margin-bottom:0;padding:calc(var(--form-element-spacing-vertical)*.5) var(--form-element-spacing-horizontal);list-style:none}details[role=list] summary+ul li:first-of-type,li[role=list]>ul li:first-of-type{margin-top:calc(var(--form-element-spacing-vertical)*.5)}details[role=list] summary+ul li:last-of-type,li[role=list]>ul li:last-of-type{margin-bottom:calc(var(--form-element-spacing-vertical)*.5)}details[role=list] summary+ul li a,li[role=list]>ul li a{display:block;margin:calc(var(--form-element-spacing-vertical)*-.5) calc(var(--form-element-spacing-horizontal)*-1);padding:calc(var(--form-element-spacing-vertical)*.5) var(--form-element-spacing-horizontal);overflow:hidden;color:var(--dropdown-color);text-decoration:none;text-overflow:ellipsis}details[role=list] summary+ul li a:hover,li[role=list]>ul li a:hover{background-color:var(--dropdown-hover-background-color)}details[role=list] summary::after,li[role=list]>a::after{display:block;width:1rem;height:calc(1rem*var(--line-height, 1.5));margin-inline-start:.5rem;float:right;transform:rotate(0deg);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:""}details[role=list]{padding:0;border-bottom:none}details[role=list] summary{margin-bottom:0}details[role=list] summary:not([role]){height:calc(1rem*var(--line-height) + var(--form-element-spacing-vertical)*2 + var(--border-width)*2);padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);border:var(--border-width) solid var(--form-element-border-color);border-radius:var(--border-radius);background-color:var(--form-element-background-color);color:var(--form-element-placeholder-color);line-height:inherit;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}details[role=list] summary:not([role]):active,details[role=list] summary:not([role]):focus{border-color:var(--form-element-active-border-color);background-color:var(--form-element-active-background-color)}details[role=list] summary:not([role]):focus{box-shadow:0 0 0 var(--outline-width) var(--form-element-focus-color)}details[role=list][open] summary{border-bottom-right-radius:0;border-bottom-left-radius:0}details[role=list][open] summary::before{display:block;z-index:1;position:fixed;top:0;right:0;bottom:0;left:0;background:none;content:"";cursor:default}nav details[role=list] summary,nav li[role=list] a{display:flex;direction:ltr}nav details[role=list] summary+ul,nav li[role=list]>ul{min-width:fit-content;border-radius:var(--border-radius)}nav details[role=list] summary+ul li a,nav li[role=list]>ul li a{border-radius:0}nav details[role=list] summary,nav details[role=list] summary:not([role]){height:auto;padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal)}nav details[role=list][open] summary{border-radius:var(--border-radius)}nav details[role=list] summary+ul{margin-top:var(--outline-width);margin-inline-start:0}nav details[role=list] summary[role=link]{margin-bottom:calc(var(--nav-link-spacing-vertical)*-1);line-height:var(--line-height)}nav details[role=list] summary[role=link]+ul{margin-top:calc(var(--nav-link-spacing-vertical) + var(--outline-width));margin-inline-start:calc(var(--nav-link-spacing-horizontal)*-1)}li[role=list]:hover>ul,li[role=list] a:active~ul,li[role=list] a:focus~ul{display:flex}li[role=list]>ul{display:none;margin-top:calc(var(--nav-link-spacing-vertical) + var(--outline-width));margin-inline-start:calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal))}li[role=list]>a::after{background-image:var(--icon-chevron)}label>details[role=list]{margin-top:calc(var(--spacing)*.25);margin-bottom:var(--spacing)}[aria-busy=true]{cursor:progress}[aria-busy=true]:not(input,select,textarea,html)::before{display:inline-block;width:1em;height:1em;border:.1875em solid currentColor;border-radius:1em;border-right-color:rgba(0,0,0,0);content:"";vertical-align:text-bottom;vertical-align:-.125em;animation:spinner .75s linear infinite;opacity:var(--loading-spinner-opacity)}[aria-busy=true]:not(input,select,textarea,html):not(:empty)::before{margin-right:calc(var(--spacing)*.5);margin-left:0;margin-inline-start:0;margin-inline-end:calc(var(--spacing)*.5)}[aria-busy=true]:not(input,select,textarea,html):empty{text-align:center}button[aria-busy=true],input[type=submit][aria-busy=true],input[type=button][aria-busy=true],input[type=reset][aria-busy=true],a[aria-busy=true]{pointer-events:none}@keyframes spinner{to{transform:rotate(360deg)}}[data-tooltip]{position:relative}[data-tooltip]:not(a,button,input){border-bottom:1px dotted;text-decoration:none;cursor:help}[data-tooltip][data-placement=top]::before,[data-tooltip][data-placement=top]::after,[data-tooltip]::before,[data-tooltip]::after{display:block;z-index:99;position:absolute;bottom:100%;left:50%;padding:.25rem .5rem;overflow:hidden;transform:translate(-50%, -.25rem);border-radius:var(--border-radius);background:var(--tooltip-background-color);content:attr(data-tooltip);color:var(--tooltip-color);font-style:normal;font-weight:var(--font-weight);font-size:.875rem;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;opacity:0;pointer-events:none}[data-tooltip][data-placement=top]::after,[data-tooltip]::after{padding:0;transform:translate(-50%, 0rem);border-top:.3rem solid;border-right:.3rem solid rgba(0,0,0,0);border-left:.3rem solid rgba(0,0,0,0);border-radius:0;background-color:rgba(0,0,0,0);content:"";color:var(--tooltip-background-color)}[data-tooltip][data-placement=bottom]::before,[data-tooltip][data-placement=bottom]::after{top:100%;bottom:auto;transform:translate(-50%, .25rem)}[data-tooltip][data-placement=bottom]:after{transform:translate(-50%, -.3rem);border:.3rem solid rgba(0,0,0,0);border-bottom:.3rem solid}[data-tooltip][data-placement=left]::before,[data-tooltip][data-placement=left]::after{top:50%;right:100%;bottom:auto;left:auto;transform:translate(-.25rem, -50%)}[data-tooltip][data-placement=left]:after{transform:translate(.3rem, -50%);border:.3rem solid rgba(0,0,0,0);border-left:.3rem solid}[data-tooltip][data-placement=right]::before,[data-tooltip][data-placement=right]::after{top:50%;right:auto;bottom:auto;left:100%;transform:translate(.25rem, -50%)}[data-tooltip][data-placement=right]:after{transform:translate(-.3rem, -50%);border:.3rem solid rgba(0,0,0,0);border-right:.3rem solid}[data-tooltip]:focus::before,[data-tooltip]:focus::after,[data-tooltip]:hover::before,[data-tooltip]:hover::after{opacity:1}@media (hover: hover) and (pointer: fine){[data-tooltip][data-placement=bottom]:focus::before,[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus::before,[data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus::after,[data-tooltip]:hover::before,[data-tooltip]:hover::after{animation-duration:.2s;animation-name:tooltip-slide-top}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus::after,[data-tooltip]:hover::after{animation-name:tooltip-caret-slide-top}[data-tooltip][data-placement=bottom]:focus::before,[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover::before,[data-tooltip][data-placement=bottom]:hover::after{animation-duration:.2s;animation-name:tooltip-slide-bottom}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover::after{animation-name:tooltip-caret-slide-bottom}[data-tooltip][data-placement=left]:focus::before,[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:hover::before,[data-tooltip][data-placement=left]:hover::after{animation-duration:.2s;animation-name:tooltip-slide-left}[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:hover::after{animation-name:tooltip-caret-slide-left}[data-tooltip][data-placement=right]:focus::before,[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:hover::before,[data-tooltip][data-placement=right]:hover::after{animation-duration:.2s;animation-name:tooltip-slide-right}[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:hover::after{animation-name:tooltip-caret-slide-right}}@keyframes tooltip-slide-top{from{transform:translate(-50%, .75rem);opacity:0}to{transform:translate(-50%, -.25rem);opacity:1}}@keyframes tooltip-caret-slide-top{from{opacity:0}50%{transform:translate(-50%, -.25rem);opacity:0}to{transform:translate(-50%, 0rem);opacity:1}}@keyframes tooltip-slide-bottom{from{transform:translate(-50%, -.75rem);opacity:0}to{transform:translate(-50%, .25rem);opacity:1}}@keyframes tooltip-caret-slide-bottom{from{opacity:0}50%{transform:translate(-50%, -.5rem);opacity:0}to{transform:translate(-50%, -.3rem);opacity:1}}@keyframes tooltip-slide-left{from{transform:translate(.75rem, -50%);opacity:0}to{transform:translate(-.25rem, -50%);opacity:1}}@keyframes tooltip-caret-slide-left{from{opacity:0}50%{transform:translate(.05rem, -50%);opacity:0}to{transform:translate(.3rem, -50%);opacity:1}}@keyframes tooltip-slide-right{from{transform:translate(-.75rem, -50%);opacity:0}to{transform:translate(.25rem, -50%);opacity:1}}@keyframes tooltip-caret-slide-right{from{opacity:0}50%{transform:translate(-.05rem, -50%);opacity:0}to{transform:translate(-.3rem, -50%);opacity:1}}[aria-controls]{cursor:pointer}[aria-disabled=true],[disabled]{cursor:not-allowed}[aria-hidden=false][hidden]{display:initial}[aria-hidden=false][hidden]:not(:focus){clip:rect(0, 0, 0, 0);position:absolute}a,area,button,input,label,select,summary,textarea,[tabindex]{-ms-touch-action:manipulation}[dir=rtl]{direction:rtl}@media (prefers-reduced-motion: reduce){*:not([aria-busy=true]),:not([aria-busy=true])::before,:not([aria-busy=true])::after{background-attachment:initial !important;animation-duration:1ms !important;animation-delay:-1ms !important;animation-iteration-count:1 !important;scroll-behavior:auto !important;transition-delay:0s !important;transition-duration:0s !important}} |
6098 | \ No newline at end of file |
6099 | diff --git a/www/public/pico/pico.css b/www/public/pico/pico.css |
6100 | deleted file mode 100644 |
6101 | index 90efd36..0000000 |
6102 | --- a/www/public/pico/pico.css |
6103 | +++ /dev/null |
6104 | @@ -1,4 +0,0 @@ |
6105 | - /*! |
6106 | - * Pico CSS v1.5.10 (https://picocss.com) |
6107 | - * Copyright 2019-2023 - Licensed under MIT |
6108 | - */:root{--font-family: system-ui, -apple-system, "Segoe UI", "Roboto", "Ubuntu", "Cantarell", "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--line-height: 1.5;--font-weight: 400;--font-size: 16px;--border-radius: 0.25rem;--border-width: 1px;--outline-width: 3px;--spacing: 1rem;--typography-spacing-vertical: 1.5rem;--block-spacing-vertical: calc(var(--spacing) * 2);--block-spacing-horizontal: var(--spacing);--grid-spacing-vertical: 0;--grid-spacing-horizontal: var(--spacing);--form-element-spacing-vertical: 0.75rem;--form-element-spacing-horizontal: 1rem;--nav-element-spacing-vertical: 1rem;--nav-element-spacing-horizontal: 0.5rem;--nav-link-spacing-vertical: 0.5rem;--nav-link-spacing-horizontal: 0.5rem;--form-label-font-weight: var(--font-weight);--transition: 0.2s ease-in-out;--modal-overlay-backdrop-filter: blur(0.25rem)}@media (min-width: 576px){:root{--font-size: 17px}}@media (min-width: 768px){:root{--font-size: 18px}}@media (min-width: 992px){:root{--font-size: 19px}}@media (min-width: 1200px){:root{--font-size: 20px}}@media (min-width: 576px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 2.5)}}@media (min-width: 768px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 3)}}@media (min-width: 992px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 3.5)}}@media (min-width: 1200px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 4)}}@media (min-width: 576px){article{--block-spacing-horizontal: calc(var(--spacing) * 1.25)}}@media (min-width: 768px){article{--block-spacing-horizontal: calc(var(--spacing) * 1.5)}}@media (min-width: 992px){article{--block-spacing-horizontal: calc(var(--spacing) * 1.75)}}@media (min-width: 1200px){article{--block-spacing-horizontal: calc(var(--spacing) * 2)}}dialog>article{--block-spacing-vertical: calc(var(--spacing) * 2);--block-spacing-horizontal: var(--spacing)}@media (min-width: 576px){dialog>article{--block-spacing-vertical: calc(var(--spacing) * 2.5);--block-spacing-horizontal: calc(var(--spacing) * 1.25)}}@media (min-width: 768px){dialog>article{--block-spacing-vertical: calc(var(--spacing) * 3);--block-spacing-horizontal: calc(var(--spacing) * 1.5)}}a{--text-decoration: none}a.secondary,a.contrast{--text-decoration: underline}small{--font-size: 0.875em}h1,h2,h3,h4,h5,h6{--font-weight: 700}h1{--font-size: 2rem;--typography-spacing-vertical: 3rem}h2{--font-size: 1.75rem;--typography-spacing-vertical: 2.625rem}h3{--font-size: 1.5rem;--typography-spacing-vertical: 2.25rem}h4{--font-size: 1.25rem;--typography-spacing-vertical: 1.874rem}h5{--font-size: 1.125rem;--typography-spacing-vertical: 1.6875rem}[type=checkbox],[type=radio]{--border-width: 2px}[type=checkbox][role=switch]{--border-width: 3px}thead th,thead td,tfoot th,tfoot td{--border-width: 3px}:not(thead,tfoot)>*>td{--font-size: 0.875em}pre,code,kbd,samp{--font-family: "Menlo", "Consolas", "Roboto Mono", "Ubuntu Monospace", "Noto Mono", "Oxygen Mono", "Liberation Mono", monospace, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}kbd{--font-weight: bolder}[data-theme=light],:root:not([data-theme=dark]){--background-color: #fff;--color: #415462;--h1-color: #1b2832;--h2-color: #24333e;--h3-color: #2c3d49;--h4-color: #374956;--h5-color: #415462;--h6-color: #4d606d;--muted-color: #73828c;--muted-border-color: #edf0f3;--primary: #1095c1;--primary-hover: #08769b;--primary-focus: rgba(16,149,193,.125);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #415462;--secondary-focus: rgba(89,107,120,.125);--secondary-inverse: #fff;--contrast: #1b2832;--contrast-hover: #000;--contrast-focus: rgba(89,107,120,.125);--contrast-inverse: #fff;--mark-background-color: #fff2ca;--mark-color: #543a26;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: transparent;--form-element-border-color: #a2afb9;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: transparent;--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #d5dce2;--form-element-disabled-border-color: #a2afb9;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #c62828;--form-element-invalid-active-border-color: #d32f2f;--form-element-invalid-focus-color: rgba(211,47,47,.125);--form-element-valid-border-color: #388e3c;--form-element-valid-active-border-color: #43a047;--form-element-valid-focus-color: rgba(67,160,71,.125);--switch-background-color: #bbc6ce;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #d5dce2;--range-active-border-color: #bbc6ce;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: #f6f8f9;--code-background-color: #edf0f3;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #b34d80;--code-property-color: #3d888f;--code-value-color: #986;--code-comment-color: #a2afb9;--accordion-border-color: var(--muted-border-color);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: var(--background-color);--card-border-color: var(--muted-border-color);--card-box-shadow: .0145rem .029rem .174rem rgba(27,40,50,.01698), .0335rem .067rem .402rem rgba(27,40,50,.024), .0625rem .125rem .75rem rgba(27,40,50,.03), .1125rem .225rem 1.35rem rgba(27,40,50,.036), .2085rem .417rem 2.502rem rgba(27,40,50,.04302), .5rem 1rem 6rem rgba(27,40,50,.06), 0 0 0 0.0625rem rgba(27,40,50,.015);--card-sectionning-background-color: #fbfbfc;--dropdown-background-color: #fbfbfc;--dropdown-border-color: #e1e6eb;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: #edf0f3;--modal-overlay-background-color: rgba(213,220,226,.7);--progress-background-color: #d5dce2;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(65, 84, 98)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--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(115, 130, 140)' stroke-width='4' 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");--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(65, 84, 98)' 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");--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(198, 40, 40)' 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");--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");--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(65, 84, 98)' stroke-width='2' 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");--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(65, 84, 98)' 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");--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(56, 142, 60)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:light}@media only screen and (prefers-color-scheme: dark){:root:not([data-theme]){--background-color: #11191f;--color: #bbc6ce;--h1-color: #edf0f3;--h2-color: #e1e6eb;--h3-color: #d5dce2;--h4-color: #c8d1d8;--h5-color: #bbc6ce;--h6-color: #afbbc4;--muted-color: #73828c;--muted-border-color: #1f2d38;--primary: #1095c1;--primary-hover: #1ab3e6;--primary-focus: rgba(16,149,193,.25);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #73828c;--secondary-focus: rgba(115,130,140,.25);--secondary-inverse: #fff;--contrast: #edf0f3;--contrast-hover: #fff;--contrast-focus: rgba(115,130,140,.25);--contrast-inverse: #000;--mark-background-color: #d1c284;--mark-color: #11191f;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: #11191f;--form-element-border-color: #374956;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: var(--form-element-background-color);--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #2c3d49;--form-element-disabled-border-color: #415462;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #b71c1c;--form-element-invalid-active-border-color: #c62828;--form-element-invalid-focus-color: rgba(198,40,40,.25);--form-element-valid-border-color: #2e7d32;--form-element-valid-active-border-color: #388e3c;--form-element-valid-focus-color: rgba(56,142,60,.25);--switch-background-color: #374956;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #24333e;--range-active-border-color: #2c3d49;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: rgba(115,130,140,.05);--code-background-color: #18232c;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #a65980;--code-property-color: #599fa6;--code-value-color: #8c8473;--code-comment-color: #4d606d;--accordion-border-color: var(--muted-border-color);--accordion-active-summary-color: var(--primary);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: #141e26;--card-border-color: var(--card-background-color);--card-box-shadow: .0145rem .029rem .174rem rgba(0,0,0,.01698), .0335rem .067rem .402rem rgba(0,0,0,.024), .0625rem .125rem .75rem rgba(0,0,0,.03), .1125rem .225rem 1.35rem rgba(0,0,0,.036), .2085rem .417rem 2.502rem rgba(0,0,0,.04302), .5rem 1rem 6rem rgba(0,0,0,.06), 0 0 0 0.0625rem rgba(0,0,0,.015);--card-sectionning-background-color: #18232c;--dropdown-background-color: #1b2832;--dropdown-border-color: #24333e;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: rgba(36,51,62,.75);--modal-overlay-background-color: rgba(36,51,62,.8);--progress-background-color: #24333e;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(162, 175, 185)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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(0, 0, 0)' 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");--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(115, 130, 140)' stroke-width='4' 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");--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(162, 175, 185)' 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");--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(183, 28, 28)' 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");--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");--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(162, 175, 185)' stroke-width='2' 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");--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(162, 175, 185)' 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");--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(46, 125, 50)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:dark}}[data-theme=dark]{--background-color: #11191f;--color: #bbc6ce;--h1-color: #edf0f3;--h2-color: #e1e6eb;--h3-color: #d5dce2;--h4-color: #c8d1d8;--h5-color: #bbc6ce;--h6-color: #afbbc4;--muted-color: #73828c;--muted-border-color: #1f2d38;--primary: #1095c1;--primary-hover: #1ab3e6;--primary-focus: rgba(16,149,193,.25);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #73828c;--secondary-focus: rgba(115,130,140,.25);--secondary-inverse: #fff;--contrast: #edf0f3;--contrast-hover: #fff;--contrast-focus: rgba(115,130,140,.25);--contrast-inverse: #000;--mark-background-color: #d1c284;--mark-color: #11191f;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: #11191f;--form-element-border-color: #374956;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: var(--form-element-background-color);--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #2c3d49;--form-element-disabled-border-color: #415462;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #b71c1c;--form-element-invalid-active-border-color: #c62828;--form-element-invalid-focus-color: rgba(198,40,40,.25);--form-element-valid-border-color: #2e7d32;--form-element-valid-active-border-color: #388e3c;--form-element-valid-focus-color: rgba(56,142,60,.25);--switch-background-color: #374956;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #24333e;--range-active-border-color: #2c3d49;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: rgba(115,130,140,.05);--code-background-color: #18232c;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #a65980;--code-property-color: #599fa6;--code-value-color: #8c8473;--code-comment-color: #4d606d;--accordion-border-color: var(--muted-border-color);--accordion-active-summary-color: var(--primary);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: #141e26;--card-border-color: var(--card-background-color);--card-box-shadow: .0145rem .029rem .174rem rgba(0,0,0,.01698), .0335rem .067rem .402rem rgba(0,0,0,.024), .0625rem .125rem .75rem rgba(0,0,0,.03), .1125rem .225rem 1.35rem rgba(0,0,0,.036), .2085rem .417rem 2.502rem rgba(0,0,0,.04302), .5rem 1rem 6rem rgba(0,0,0,.06), 0 0 0 0.0625rem rgba(0,0,0,.015);--card-sectionning-background-color: #18232c;--dropdown-background-color: #1b2832;--dropdown-border-color: #24333e;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: rgba(36,51,62,.75);--modal-overlay-background-color: rgba(36,51,62,.8);--progress-background-color: #24333e;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(162, 175, 185)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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(0, 0, 0)' 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");--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(115, 130, 140)' stroke-width='4' 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");--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(162, 175, 185)' 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");--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(183, 28, 28)' 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");--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");--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(162, 175, 185)' stroke-width='2' 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");--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(162, 175, 185)' 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");--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(46, 125, 50)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:dark}progress,[type=checkbox],[type=radio],[type=range]{accent-color:var(--primary)}*,*::before,*::after{box-sizing:border-box;background-repeat:no-repeat}::before,::after{text-decoration:inherit;vertical-align:inherit}:where(:root){-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--background-color);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);line-height:var(--line-height);font-family:var(--font-family);text-rendering:optimizeLegibility;overflow-wrap:break-word;cursor:default;tab-size:4}main{display:block}body{width:100%;margin:0}body>header,body>main,body>footer{width:100%;margin-right:auto;margin-left:auto;padding:var(--block-spacing-vertical) 0}.container,.container-fluid{width:100%;margin-right:auto;margin-left:auto;padding-right:var(--spacing);padding-left:var(--spacing)}@media (min-width: 576px){.container{max-width:510px;padding-right:0;padding-left:0}}@media (min-width: 768px){.container{max-width:700px}}@media (min-width: 992px){.container{max-width:920px}}@media (min-width: 1200px){.container{max-width:1130px}}section{margin-bottom:var(--block-spacing-vertical)}.grid{grid-column-gap:var(--grid-spacing-horizontal);grid-row-gap:var(--grid-spacing-vertical);display:grid;grid-template-columns:1fr;margin:0}@media (min-width: 992px){.grid{grid-template-columns:repeat(auto-fit, minmax(0%, 1fr))}}.grid>*{min-width:0}figure{display:block;margin:0;padding:0;overflow-x:auto}figure figcaption{padding:calc(var(--spacing)*.5) 0;color:var(--muted-color)}b,strong{font-weight:bolder}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,figure,form,ol,p,pre,table,ul{margin-top:0;margin-bottom:var(--typography-spacing-vertical);color:var(--color);font-style:normal;font-weight:var(--font-weight);font-size:var(--font-size)}a,[role=link]{--color: var(--primary);--background-color: transparent;outline:none;background-color:var(--background-color);color:var(--color);text-decoration:var(--text-decoration);transition:background-color var(--transition),color var(--transition),text-decoration var(--transition),box-shadow var(--transition)}a:is([aria-current],:hover,:active,:focus),[role=link]:is([aria-current],:hover,:active,:focus){--color: var(--primary-hover);--text-decoration: underline}a:focus,[role=link]:focus{--background-color: var(--primary-focus)}a.secondary,[role=link].secondary{--color: var(--secondary)}a.secondary:is([aria-current],:hover,:active,:focus),[role=link].secondary:is([aria-current],:hover,:active,:focus){--color: var(--secondary-hover)}a.secondary:focus,[role=link].secondary:focus{--background-color: var(--secondary-focus)}a.contrast,[role=link].contrast{--color: var(--contrast)}a.contrast:is([aria-current],:hover,:active,:focus),[role=link].contrast:is([aria-current],:hover,:active,:focus){--color: var(--contrast-hover)}a.contrast:focus,[role=link].contrast:focus{--background-color: var(--contrast-focus)}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--typography-spacing-vertical);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);font-family:var(--font-family)}h1{--color: var(--h1-color)}h2{--color: var(--h2-color)}h3{--color: var(--h3-color)}h4{--color: var(--h4-color)}h5{--color: var(--h5-color)}h6{--color: var(--h6-color)}:where(address,blockquote,dl,figure,form,ol,p,pre,table,ul)~:is(h1,h2,h3,h4,h5,h6){margin-top:var(--typography-spacing-vertical)}hgroup,.headings{margin-bottom:var(--typography-spacing-vertical)}hgroup>*,.headings>*{margin-bottom:0}hgroup>*:last-child,.headings>*:last-child{--color: var(--muted-color);--font-weight: unset;font-size:1rem;font-family:unset}p{margin-bottom:var(--typography-spacing-vertical)}small{font-size:var(--font-size)}:where(dl,ol,ul){padding-right:0;padding-left:var(--spacing);padding-inline-start:var(--spacing);padding-inline-end:0}:where(dl,ol,ul) li{margin-bottom:calc(var(--typography-spacing-vertical)*.25)}:where(dl,ol,ul) :is(dl,ol,ul){margin:0;margin-top:calc(var(--typography-spacing-vertical)*.25)}ul li{list-style:square}mark{padding:.125rem .25rem;background-color:var(--mark-background-color);color:var(--mark-color);vertical-align:baseline}blockquote{display:block;margin:var(--typography-spacing-vertical) 0;padding:var(--spacing);border-right:none;border-left:.25rem solid var(--blockquote-border-color);border-inline-start:.25rem solid var(--blockquote-border-color);border-inline-end:none}blockquote footer{margin-top:calc(var(--typography-spacing-vertical)*.5);color:var(--blockquote-footer-color)}abbr[title]{border-bottom:1px dotted;text-decoration:none;cursor:help}ins{color:var(--ins-color);text-decoration:none}del{color:var(--del-color)}::selection{background-color:var(--primary-focus)}:where(audio,canvas,iframe,img,svg,video){vertical-align:middle}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}:where(iframe){border-style:none}img{max-width:100%;height:auto;border-style:none}:where(svg:not([fill])){fill:currentColor}svg:not(:root){overflow:hidden}button{margin:0;overflow:visible;font-family:inherit;text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button{display:block;width:100%;margin-bottom:var(--spacing)}[role=button]{display:inline-block;text-decoration:none}button,input[type=submit],input[type=button],input[type=reset],[role=button]{--background-color: var(--primary);--border-color: var(--primary);--color: var(--primary-inverse);--box-shadow: var(--button-box-shadow, 0 0 0 rgba(0, 0, 0, 0));padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}button:is([aria-current],:hover,:active,:focus),input[type=submit]:is([aria-current],:hover,:active,:focus),input[type=button]:is([aria-current],:hover,:active,:focus),input[type=reset]:is([aria-current],:hover,:active,:focus),[role=button]:is([aria-current],:hover,:active,:focus){--background-color: var(--primary-hover);--border-color: var(--primary-hover);--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));--color: var(--primary-inverse)}button:focus,input[type=submit]:focus,input[type=button]:focus,input[type=reset]:focus,[role=button]:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--primary-focus)}:is(button,input[type=submit],input[type=button],[role=button]).secondary,input[type=reset]{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);cursor:pointer}:is(button,input[type=submit],input[type=button],[role=button]).secondary:is([aria-current],:hover,:active,:focus),input[type=reset]:is([aria-current],:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover);--color: var(--secondary-inverse)}:is(button,input[type=submit],input[type=button],[role=button]).secondary:focus,input[type=reset]:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--secondary-focus)}:is(button,input[type=submit],input[type=button],[role=button]).contrast{--background-color: var(--contrast);--border-color: var(--contrast);--color: var(--contrast-inverse)}:is(button,input[type=submit],input[type=button],[role=button]).contrast:is([aria-current],:hover,:active,:focus){--background-color: var(--contrast-hover);--border-color: var(--contrast-hover);--color: var(--contrast-inverse)}:is(button,input[type=submit],input[type=button],[role=button]).contrast:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--contrast-focus)}:is(button,input[type=submit],input[type=button],[role=button]).outline,input[type=reset].outline{--background-color: transparent;--color: var(--primary)}:is(button,input[type=submit],input[type=button],[role=button]).outline:is([aria-current],:hover,:active,:focus),input[type=reset].outline:is([aria-current],:hover,:active,:focus){--background-color: transparent;--color: var(--primary-hover)}:is(button,input[type=submit],input[type=button],[role=button]).outline.secondary,input[type=reset].outline{--color: var(--secondary)}:is(button,input[type=submit],input[type=button],[role=button]).outline.secondary:is([aria-current],:hover,:active,:focus),input[type=reset].outline:is([aria-current],:hover,:active,:focus){--color: var(--secondary-hover)}:is(button,input[type=submit],input[type=button],[role=button]).outline.contrast{--color: var(--contrast)}:is(button,input[type=submit],input[type=button],[role=button]).outline.contrast:is([aria-current],:hover,:active,:focus){--color: var(--contrast-hover)}:where(button,[type=submit],[type=button],[type=reset],[role=button])[disabled],:where(fieldset[disabled]) :is(button,[type=submit],[type=button],[type=reset],[role=button]),a[role=button]:not([href]){opacity:.5;pointer-events:none}input,optgroup,select,textarea{margin:0;font-size:1rem;line-height:var(--line-height);font-family:inherit;letter-spacing:inherit}input{overflow:visible}select{text-transform:none}legend{max-width:100%;padding:0;color:inherit;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{padding:0}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::-moz-focus-inner{padding:0;border-style:none}:-moz-focusring{outline:none}:-moz-ui-invalid{box-shadow:none}::-ms-expand{display:none}[type=file],[type=range]{padding:0;border-width:0}input:not([type=checkbox],[type=radio],[type=range]){height:calc(1rem*var(--line-height) + var(--form-element-spacing-vertical)*2 + var(--border-width)*2)}fieldset{margin:0;margin-bottom:var(--spacing);padding:0;border:0}label,fieldset legend{display:block;margin-bottom:calc(var(--spacing)*.25);font-weight:var(--form-label-font-weight, var(--font-weight))}input:not([type=checkbox],[type=radio]),select,textarea{width:100%}input:not([type=checkbox],[type=radio],[type=range],[type=file]),select,textarea{appearance:none;padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal)}input,select,textarea{--background-color: var(--form-element-background-color);--border-color: var(--form-element-border-color);--color: var(--form-element-color);--box-shadow: none;border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}input:not([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[readonly]):is(:active,:focus),:where(select,textarea):is(:active,:focus){--background-color: var(--form-element-active-background-color)}input:not([type=submit],[type=button],[type=reset],[role=switch],[readonly]):is(:active,:focus),:where(select,textarea):is(:active,:focus){--border-color: var(--form-element-active-border-color)}input:not([type=submit],[type=button],[type=reset],[type=range],[type=file],[readonly]):focus,select:focus,textarea:focus{--box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color)}input:not([type=submit],[type=button],[type=reset])[disabled],select[disabled],textarea[disabled],:where(fieldset[disabled]) :is(input:not([type=submit],[type=button],[type=reset]),select,textarea){--background-color: var(--form-element-disabled-background-color);--border-color: var(--form-element-disabled-border-color);opacity:var(--form-element-disabled-opacity);pointer-events:none}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid]{padding-right:calc(var(--form-element-spacing-horizontal) + 1.5rem) !important;padding-left:var(--form-element-spacing-horizontal);padding-inline-start:var(--form-element-spacing-horizontal) !important;padding-inline-end:calc(var(--form-element-spacing-horizontal) + 1.5rem) !important;background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid=false]{background-image:var(--icon-valid)}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid=true]{background-image:var(--icon-invalid)}:where(input,select,textarea)[aria-invalid=false]{--border-color: var(--form-element-valid-border-color)}:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus){--border-color: var(--form-element-valid-active-border-color) !important;--box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color) !important}:where(input,select,textarea)[aria-invalid=true]{--border-color: var(--form-element-invalid-border-color)}:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus){--border-color: var(--form-element-invalid-active-border-color) !important;--box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color) !important}[dir=rtl] :where(input,select,textarea):not([type=checkbox],[type=radio]):is([aria-invalid],[aria-invalid=true],[aria-invalid=false]){background-position:center left .75rem}input::placeholder,input::-webkit-input-placeholder,textarea::placeholder,textarea::-webkit-input-placeholder,select:invalid{color:var(--form-element-placeholder-color);opacity:1}input:not([type=checkbox],[type=radio]),select,textarea{margin-bottom:var(--spacing)}select::-ms-expand{border:0;background-color:rgba(0,0,0,0)}select:not([multiple],[size]){padding-right:calc(var(--form-element-spacing-horizontal) + 1.5rem);padding-left:var(--form-element-spacing-horizontal);padding-inline-start:var(--form-element-spacing-horizontal);padding-inline-end:calc(var(--form-element-spacing-horizontal) + 1.5rem);background-image:var(--icon-chevron);background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}[dir=rtl] select:not([multiple],[size]){background-position:center left .75rem}:where(input,select,textarea,.grid)+small{display:block;width:100%;margin-top:calc(var(--spacing)*-.75);margin-bottom:var(--spacing);color:var(--muted-color)}label>:where(input,select,textarea){margin-top:calc(var(--spacing)*.25)}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.25em;height:1.25em;margin-top:-.125em;margin-right:.375em;margin-left:0;margin-inline-start:0;margin-inline-end:.375em;border-width:var(--border-width);font-size:inherit;vertical-align:middle;cursor:pointer}[type=checkbox]::-ms-check,[type=radio]::-ms-check{display:none}[type=checkbox]:checked,[type=checkbox]:checked:active,[type=checkbox]:checked:focus,[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--background-color: var(--primary);--border-color: var(--primary);background-image:var(--icon-checkbox);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=checkbox]~label,[type=radio]~label{display:inline-block;margin-right:.375em;margin-bottom:0;cursor:pointer}[type=checkbox]:indeterminate{--background-color: var(--primary);--border-color: var(--primary);background-image:var(--icon-minus);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=radio]{border-radius:50%}[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--background-color: var(--primary-inverse);border-width:.35em;background-image:none}[type=checkbox][role=switch]{--background-color: var(--switch-background-color);--border-color: var(--switch-background-color);--color: var(--switch-color);width:2.25em;height:1.25em;border:var(--border-width) solid var(--border-color);border-radius:1.25em;background-color:var(--background-color);line-height:1.25em}[type=checkbox][role=switch]:focus{--background-color: var(--switch-background-color);--border-color: var(--switch-background-color)}[type=checkbox][role=switch]:checked{--background-color: var(--switch-checked-background-color);--border-color: var(--switch-checked-background-color)}[type=checkbox][role=switch]:before{display:block;width:calc(1.25em - (var(--border-width) * 2));height:100%;border-radius:50%;background-color:var(--color);content:"";transition:margin .1s ease-in-out}[type=checkbox][role=switch]:checked{background-image:none}[type=checkbox][role=switch]:checked::before{margin-left:calc(1.125em - var(--border-width));margin-inline-start:calc(1.125em - var(--border-width))}[type=checkbox][aria-invalid=false],[type=checkbox]:checked[aria-invalid=false],[type=radio][aria-invalid=false],[type=radio]:checked[aria-invalid=false],[type=checkbox][role=switch][aria-invalid=false],[type=checkbox][role=switch]:checked[aria-invalid=false]{--border-color: var(--form-element-valid-border-color)}[type=checkbox][aria-invalid=true],[type=checkbox]:checked[aria-invalid=true],[type=radio][aria-invalid=true],[type=radio]:checked[aria-invalid=true],[type=checkbox][role=switch][aria-invalid=true],[type=checkbox][role=switch]:checked[aria-invalid=true]{--border-color: var(--form-element-invalid-border-color)}[type=color]::-webkit-color-swatch-wrapper{padding:0}[type=color]::-moz-focus-inner{padding:0}[type=color]::-webkit-color-swatch{border:0;border-radius:calc(var(--border-radius)*.5)}[type=color]::-moz-color-swatch{border:0;border-radius:calc(var(--border-radius)*.5)}input:not([type=checkbox],[type=radio],[type=range],[type=file]):is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){--icon-position: 0.75rem;--icon-width: 1rem;padding-right:calc(var(--icon-width) + var(--icon-position));background-image:var(--icon-date);background-position:center right var(--icon-position);background-size:var(--icon-width) auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=time]{background-image:var(--icon-time)}[type=date]::-webkit-calendar-picker-indicator,[type=datetime-local]::-webkit-calendar-picker-indicator,[type=month]::-webkit-calendar-picker-indicator,[type=time]::-webkit-calendar-picker-indicator,[type=week]::-webkit-calendar-picker-indicator{width:var(--icon-width);margin-right:calc(var(--icon-width)*-1);margin-left:var(--icon-position);opacity:0}[dir=rtl] :is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){text-align:right}@-moz-document url-prefix(){[type=date],[type=datetime-local],[type=month],[type=time],[type=week]{padding-right:var(--form-element-spacing-horizontal) !important;background-image:none !important}}[type=file]{--color: var(--muted-color);padding:calc(var(--form-element-spacing-vertical)*.5) 0;border:0;border-radius:0;background:none}[type=file]::file-selector-button{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);margin-right:calc(var(--spacing)/2);margin-left:0;margin-inline-start:0;margin-inline-end:calc(var(--spacing)/2);padding:calc(var(--form-element-spacing-vertical)*.5) calc(var(--form-element-spacing-horizontal)*.5);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[type=file]::file-selector-button:is(:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover)}[type=file]::-webkit-file-upload-button{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);margin-right:calc(var(--spacing)/2);margin-left:0;margin-inline-start:0;margin-inline-end:calc(var(--spacing)/2);padding:calc(var(--form-element-spacing-vertical)*.5) calc(var(--form-element-spacing-horizontal)*.5);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[type=file]::-webkit-file-upload-button:is(:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover)}[type=file]::-ms-browse{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);margin-right:calc(var(--spacing)/2);margin-left:0;margin-inline-start:0;margin-inline-end:calc(var(--spacing)/2);padding:calc(var(--form-element-spacing-vertical)*.5) calc(var(--form-element-spacing-horizontal)*.5);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[type=file]::-ms-browse:is(:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover)}[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:1.25rem;background:none}[type=range]::-webkit-slider-runnable-track{width:100%;height:.25rem;border-radius:var(--border-radius);background-color:var(--range-border-color);transition:background-color var(--transition),box-shadow var(--transition)}[type=range]::-moz-range-track{width:100%;height:.25rem;border-radius:var(--border-radius);background-color:var(--range-border-color);transition:background-color var(--transition),box-shadow var(--transition)}[type=range]::-ms-track{width:100%;height:.25rem;border-radius:var(--border-radius);background-color:var(--range-border-color);transition:background-color var(--transition),box-shadow var(--transition)}[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.5rem;border:2px solid var(--range-thumb-border-color);border-radius:50%;background-color:var(--range-thumb-color);cursor:pointer;transition:background-color var(--transition),transform var(--transition)}[type=range]::-moz-range-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.5rem;border:2px solid var(--range-thumb-border-color);border-radius:50%;background-color:var(--range-thumb-color);cursor:pointer;transition:background-color var(--transition),transform var(--transition)}[type=range]::-ms-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.5rem;border:2px solid var(--range-thumb-border-color);border-radius:50%;background-color:var(--range-thumb-color);cursor:pointer;transition:background-color var(--transition),transform var(--transition)}[type=range]:hover,[type=range]:focus{--range-border-color: var(--range-active-border-color);--range-thumb-color: var(--range-thumb-hover-color)}[type=range]:active{--range-thumb-color: var(--range-thumb-active-color)}[type=range]:active::-webkit-slider-thumb{transform:scale(1.25)}[type=range]:active::-moz-range-thumb{transform:scale(1.25)}[type=range]:active::-ms-thumb{transform:scale(1.25)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{padding-inline-start:calc(var(--form-element-spacing-horizontal) + 1.75rem);border-radius:5rem;background-image:var(--icon-search);background-position:center left 1.125rem;background-size:1rem auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{padding-inline-start:calc(var(--form-element-spacing-horizontal) + 1.75rem) !important;background-position:center left 1.125rem,center right .75rem}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=false]{background-image:var(--icon-search),var(--icon-valid)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=true]{background-image:var(--icon-search),var(--icon-invalid)}[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;display:none}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{background-position:center right 1.125rem}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{background-position:center right 1.125rem,center left .75rem}:where(table){width:100%;border-collapse:collapse;border-spacing:0;text-indent:0}th,td{padding:calc(var(--spacing)/2) var(--spacing);border-bottom:var(--border-width) solid var(--table-border-color);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);text-align:left;text-align:start}tfoot th,tfoot td{border-top:var(--border-width) solid var(--table-border-color);border-bottom:0}table[role=grid] tbody tr:nth-child(odd){background-color:var(--table-row-stripped-background-color)}pre,code,kbd,samp{font-size:.875em;font-family:var(--font-family)}pre{-ms-overflow-style:scrollbar;overflow:auto}pre,code,kbd{border-radius:var(--border-radius);background:var(--code-background-color);color:var(--code-color);font-weight:var(--font-weight);line-height:initial}code,kbd{display:inline-block;padding:.375rem .5rem}pre{display:block;margin-bottom:var(--spacing);overflow-x:auto}pre>code{display:block;padding:var(--spacing);background:none;font-size:14px;line-height:var(--line-height)}code b{color:var(--code-tag-color);font-weight:var(--font-weight)}code i{color:var(--code-property-color);font-style:normal}code u{color:var(--code-value-color);text-decoration:none}code em{color:var(--code-comment-color);font-style:normal}kbd{background-color:var(--code-kbd-background-color);color:var(--code-kbd-color);vertical-align:baseline}hr{height:0;border:0;border-top:1px solid var(--muted-border-color);color:inherit}[hidden],template{display:none !important}canvas{display:inline-block}details{display:block;margin-bottom:var(--spacing);padding-bottom:var(--spacing);border-bottom:var(--border-width) solid var(--accordion-border-color)}details summary{line-height:1rem;list-style-type:none;cursor:pointer;transition:color var(--transition)}details summary:not([role]){color:var(--accordion-close-summary-color)}details summary::-webkit-details-marker{display:none}details summary::marker{display:none}details summary::-moz-list-bullet{list-style-type:none}details summary::after{display:block;width:1rem;height:1rem;margin-inline-start:calc(var(--spacing, 1rem)*.5);float:right;transform:rotate(-90deg);background-image:var(--icon-chevron);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:"";transition:transform var(--transition)}details summary:focus{outline:none}details summary:focus:not([role=button]){color:var(--accordion-active-summary-color)}details summary[role=button]{width:100%;text-align:left}details summary[role=button]::after{height:calc(1rem*var(--line-height, 1.5));background-image:var(--icon-chevron-button)}details summary[role=button]:not(.outline).contrast::after{background-image:var(--icon-chevron-button-inverse)}details[open]>summary{margin-bottom:calc(var(--spacing))}details[open]>summary:not([role]):not(:focus){color:var(--accordion-open-summary-color)}details[open]>summary::after{transform:rotate(0)}[dir=rtl] details summary{text-align:right}[dir=rtl] details summary::after{float:left;background-position:left center}article{margin:var(--block-spacing-vertical) 0;padding:var(--block-spacing-vertical) var(--block-spacing-horizontal);border-radius:var(--border-radius);background:var(--card-background-color);box-shadow:var(--card-box-shadow)}article>header,article>footer{margin-right:calc(var(--block-spacing-horizontal)*-1);margin-left:calc(var(--block-spacing-horizontal)*-1);padding:calc(var(--block-spacing-vertical)*.66) var(--block-spacing-horizontal);background-color:var(--card-sectionning-background-color)}article>header{margin-top:calc(var(--block-spacing-vertical)*-1);margin-bottom:var(--block-spacing-vertical);border-bottom:var(--border-width) solid var(--card-border-color);border-top-right-radius:var(--border-radius);border-top-left-radius:var(--border-radius)}article>footer{margin-top:var(--block-spacing-vertical);margin-bottom:calc(var(--block-spacing-vertical)*-1);border-top:var(--border-width) solid var(--card-border-color);border-bottom-right-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius)}:root{--scrollbar-width: 0px}dialog{display:flex;z-index:999;position:fixed;top:0;right:0;bottom:0;left:0;align-items:center;justify-content:center;width:inherit;min-width:100%;height:inherit;min-height:100%;padding:var(--spacing);border:0;backdrop-filter:var(--modal-overlay-backdrop-filter);background-color:var(--modal-overlay-background-color);color:var(--color)}dialog article{max-height:calc(100vh - var(--spacing)*2);overflow:auto}@media (min-width: 576px){dialog article{max-width:510px}}@media (min-width: 768px){dialog article{max-width:700px}}dialog article>header,dialog article>footer{padding:calc(var(--block-spacing-vertical)*.5) var(--block-spacing-horizontal)}dialog article>header .close{margin:0;margin-left:var(--spacing);float:right}dialog article>footer{text-align:right}dialog article>footer [role=button]{margin-bottom:0}dialog article>footer [role=button]:not(:first-of-type){margin-left:calc(var(--spacing)*.5)}dialog article p:last-of-type{margin:0}dialog article .close{display:block;width:1rem;height:1rem;margin-top:calc(var(--block-spacing-vertical)*-.5);margin-bottom:var(--typography-spacing-vertical);margin-left:auto;background-image:var(--icon-close);background-position:center;background-size:auto 1rem;background-repeat:no-repeat;opacity:.5;transition:opacity var(--transition)}dialog article .close:is([aria-current],:hover,:active,:focus){opacity:1}dialog:not([open]),dialog[open=false]{display:none}.modal-is-open{padding-right:var(--scrollbar-width, 0px);overflow:hidden;pointer-events:none;touch-action:none}.modal-is-open dialog{pointer-events:auto}:where(.modal-is-opening,.modal-is-closing) dialog,:where(.modal-is-opening,.modal-is-closing) dialog>article{animation-duration:.2s;animation-timing-function:ease-in-out;animation-fill-mode:both}:where(.modal-is-opening,.modal-is-closing) dialog{animation-duration:.8s;animation-name:modal-overlay}:where(.modal-is-opening,.modal-is-closing) dialog>article{animation-delay:.2s;animation-name:modal}.modal-is-closing dialog,.modal-is-closing dialog>article{animation-delay:0s;animation-direction:reverse}@keyframes modal-overlay{from{backdrop-filter:none;background-color:rgba(0,0,0,0)}}@keyframes modal{from{transform:translateY(-100%);opacity:0}}:where(nav li)::before{float:left;content:""}nav,nav ul{display:flex}nav{justify-content:space-between}nav ol,nav ul{align-items:center;margin-bottom:0;padding:0;list-style:none}nav ol:first-of-type,nav ul:first-of-type{margin-left:calc(var(--nav-element-spacing-horizontal)*-1)}nav ol:last-of-type,nav ul:last-of-type{margin-right:calc(var(--nav-element-spacing-horizontal)*-1)}nav li{display:inline-block;margin:0;padding:var(--nav-element-spacing-vertical) var(--nav-element-spacing-horizontal)}nav li>*{--spacing: 0}nav :where(a,[role=link]){display:inline-block;margin:calc(var(--nav-link-spacing-vertical)*-1) calc(var(--nav-link-spacing-horizontal)*-1);padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);border-radius:var(--border-radius);text-decoration:none}nav :where(a,[role=link]):is([aria-current],:hover,:active,:focus){text-decoration:none}nav[aria-label=breadcrumb]{align-items:center;justify-content:start}nav[aria-label=breadcrumb] ul li:not(:first-child){margin-inline-start:var(--nav-link-spacing-horizontal)}nav[aria-label=breadcrumb] ul li:not(:last-child) ::after{position:absolute;width:calc(var(--nav-link-spacing-horizontal)*2);margin-inline-start:calc(var(--nav-link-spacing-horizontal)/2);content:"/";color:var(--muted-color);text-align:center}nav[aria-label=breadcrumb] a[aria-current]{background-color:rgba(0,0,0,0);color:inherit;text-decoration:none;pointer-events:none}nav [role=button]{margin-right:inherit;margin-left:inherit;padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal)}aside nav,aside ol,aside ul,aside li{display:block}aside li{padding:calc(var(--nav-element-spacing-vertical)*.5) var(--nav-element-spacing-horizontal)}aside li a{display:block}aside li [role=button]{margin:inherit}[dir=rtl] nav[aria-label=breadcrumb] ul li:not(:last-child) ::after{content:"\\"}progress{display:inline-block;vertical-align:baseline}progress{-webkit-appearance:none;-moz-appearance:none;display:inline-block;appearance:none;width:100%;height:.5rem;margin-bottom:calc(var(--spacing)*.5);overflow:hidden;border:0;border-radius:var(--border-radius);background-color:var(--progress-background-color);color:var(--progress-color)}progress::-webkit-progress-bar{border-radius:var(--border-radius);background:none}progress[value]::-webkit-progress-value{background-color:var(--progress-color)}progress::-moz-progress-bar{background-color:var(--progress-color)}@media (prefers-reduced-motion: no-preference){progress:indeterminate{background:var(--progress-background-color) linear-gradient(to right, var(--progress-color) 30%, var(--progress-background-color) 30%) top left/150% 150% no-repeat;animation:progress-indeterminate 1s linear infinite}progress:indeterminate[value]::-webkit-progress-value{background-color:rgba(0,0,0,0)}progress:indeterminate::-moz-progress-bar{background-color:rgba(0,0,0,0)}}@media (prefers-reduced-motion: no-preference){[dir=rtl] progress:indeterminate{animation-direction:reverse}}@keyframes progress-indeterminate{0%{background-position:200% 0}100%{background-position:-200% 0}}details[role=list],li[role=list]{position:relative}details[role=list] summary+ul,li[role=list]>ul{display:flex;z-index:99;position:absolute;top:auto;right:0;left:0;flex-direction:column;margin:0;padding:0;border:var(--border-width) solid var(--dropdown-border-color);border-radius:var(--border-radius);border-top-right-radius:0;border-top-left-radius:0;background-color:var(--dropdown-background-color);box-shadow:var(--card-box-shadow);color:var(--dropdown-color);white-space:nowrap}details[role=list] summary+ul li,li[role=list]>ul li{width:100%;margin-bottom:0;padding:calc(var(--form-element-spacing-vertical)*.5) var(--form-element-spacing-horizontal);list-style:none}details[role=list] summary+ul li:first-of-type,li[role=list]>ul li:first-of-type{margin-top:calc(var(--form-element-spacing-vertical)*.5)}details[role=list] summary+ul li:last-of-type,li[role=list]>ul li:last-of-type{margin-bottom:calc(var(--form-element-spacing-vertical)*.5)}details[role=list] summary+ul li a,li[role=list]>ul li a{display:block;margin:calc(var(--form-element-spacing-vertical)*-.5) calc(var(--form-element-spacing-horizontal)*-1);padding:calc(var(--form-element-spacing-vertical)*.5) var(--form-element-spacing-horizontal);overflow:hidden;color:var(--dropdown-color);text-decoration:none;text-overflow:ellipsis}details[role=list] summary+ul li a:hover,li[role=list]>ul li a:hover{background-color:var(--dropdown-hover-background-color)}details[role=list] summary::after,li[role=list]>a::after{display:block;width:1rem;height:calc(1rem*var(--line-height, 1.5));margin-inline-start:.5rem;float:right;transform:rotate(0deg);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:""}details[role=list]{padding:0;border-bottom:none}details[role=list] summary{margin-bottom:0}details[role=list] summary:not([role]){height:calc(1rem*var(--line-height) + var(--form-element-spacing-vertical)*2 + var(--border-width)*2);padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);border:var(--border-width) solid var(--form-element-border-color);border-radius:var(--border-radius);background-color:var(--form-element-background-color);color:var(--form-element-placeholder-color);line-height:inherit;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}details[role=list] summary:not([role]):active,details[role=list] summary:not([role]):focus{border-color:var(--form-element-active-border-color);background-color:var(--form-element-active-background-color)}details[role=list] summary:not([role]):focus{box-shadow:0 0 0 var(--outline-width) var(--form-element-focus-color)}details[role=list][open] summary{border-bottom-right-radius:0;border-bottom-left-radius:0}details[role=list][open] summary::before{display:block;z-index:1;position:fixed;top:0;right:0;bottom:0;left:0;background:none;content:"";cursor:default}nav details[role=list] summary,nav li[role=list] a{display:flex;direction:ltr}nav details[role=list] summary+ul,nav li[role=list]>ul{min-width:fit-content;border-radius:var(--border-radius)}nav details[role=list] summary+ul li a,nav li[role=list]>ul li a{border-radius:0}nav details[role=list] summary,nav details[role=list] summary:not([role]){height:auto;padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal)}nav details[role=list][open] summary{border-radius:var(--border-radius)}nav details[role=list] summary+ul{margin-top:var(--outline-width);margin-inline-start:0}nav details[role=list] summary[role=link]{margin-bottom:calc(var(--nav-link-spacing-vertical)*-1);line-height:var(--line-height)}nav details[role=list] summary[role=link]+ul{margin-top:calc(var(--nav-link-spacing-vertical) + var(--outline-width));margin-inline-start:calc(var(--nav-link-spacing-horizontal)*-1)}li[role=list]:hover>ul,li[role=list] a:active~ul,li[role=list] a:focus~ul{display:flex}li[role=list]>ul{display:none;margin-top:calc(var(--nav-link-spacing-vertical) + var(--outline-width));margin-inline-start:calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal))}li[role=list]>a::after{background-image:var(--icon-chevron)}label>details[role=list]{margin-top:calc(var(--spacing)*.25);margin-bottom:var(--spacing)}[aria-busy=true]{cursor:progress}[aria-busy=true]:not(input,select,textarea,html)::before{display:inline-block;width:1em;height:1em;border:.1875em solid currentColor;border-radius:1em;border-right-color:rgba(0,0,0,0);content:"";vertical-align:text-bottom;vertical-align:-.125em;animation:spinner .75s linear infinite;opacity:var(--loading-spinner-opacity)}[aria-busy=true]:not(input,select,textarea,html):not(:empty)::before{margin-right:calc(var(--spacing)*.5);margin-left:0;margin-inline-start:0;margin-inline-end:calc(var(--spacing)*.5)}[aria-busy=true]:not(input,select,textarea,html):empty{text-align:center}button[aria-busy=true],input[type=submit][aria-busy=true],input[type=button][aria-busy=true],input[type=reset][aria-busy=true],a[aria-busy=true]{pointer-events:none}@keyframes spinner{to{transform:rotate(360deg)}}[data-tooltip]{position:relative}[data-tooltip]:not(a,button,input){border-bottom:1px dotted;text-decoration:none;cursor:help}[data-tooltip][data-placement=top]::before,[data-tooltip][data-placement=top]::after,[data-tooltip]::before,[data-tooltip]::after{display:block;z-index:99;position:absolute;bottom:100%;left:50%;padding:.25rem .5rem;overflow:hidden;transform:translate(-50%, -.25rem);border-radius:var(--border-radius);background:var(--tooltip-background-color);content:attr(data-tooltip);color:var(--tooltip-color);font-style:normal;font-weight:var(--font-weight);font-size:.875rem;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;opacity:0;pointer-events:none}[data-tooltip][data-placement=top]::after,[data-tooltip]::after{padding:0;transform:translate(-50%, 0rem);border-top:.3rem solid;border-right:.3rem solid rgba(0,0,0,0);border-left:.3rem solid rgba(0,0,0,0);border-radius:0;background-color:rgba(0,0,0,0);content:"";color:var(--tooltip-background-color)}[data-tooltip][data-placement=bottom]::before,[data-tooltip][data-placement=bottom]::after{top:100%;bottom:auto;transform:translate(-50%, .25rem)}[data-tooltip][data-placement=bottom]:after{transform:translate(-50%, -.3rem);border:.3rem solid rgba(0,0,0,0);border-bottom:.3rem solid}[data-tooltip][data-placement=left]::before,[data-tooltip][data-placement=left]::after{top:50%;right:100%;bottom:auto;left:auto;transform:translate(-.25rem, -50%)}[data-tooltip][data-placement=left]:after{transform:translate(.3rem, -50%);border:.3rem solid rgba(0,0,0,0);border-left:.3rem solid}[data-tooltip][data-placement=right]::before,[data-tooltip][data-placement=right]::after{top:50%;right:auto;bottom:auto;left:100%;transform:translate(.25rem, -50%)}[data-tooltip][data-placement=right]:after{transform:translate(-.3rem, -50%);border:.3rem solid rgba(0,0,0,0);border-right:.3rem solid}[data-tooltip]:focus::before,[data-tooltip]:focus::after,[data-tooltip]:hover::before,[data-tooltip]:hover::after{opacity:1}@media (hover: hover) and (pointer: fine){[data-tooltip][data-placement=bottom]:focus::before,[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus::before,[data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus::after,[data-tooltip]:hover::before,[data-tooltip]:hover::after{animation-duration:.2s;animation-name:tooltip-slide-top}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus::after,[data-tooltip]:hover::after{animation-name:tooltip-caret-slide-top}[data-tooltip][data-placement=bottom]:focus::before,[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover::before,[data-tooltip][data-placement=bottom]:hover::after{animation-duration:.2s;animation-name:tooltip-slide-bottom}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover::after{animation-name:tooltip-caret-slide-bottom}[data-tooltip][data-placement=left]:focus::before,[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:hover::before,[data-tooltip][data-placement=left]:hover::after{animation-duration:.2s;animation-name:tooltip-slide-left}[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:hover::after{animation-name:tooltip-caret-slide-left}[data-tooltip][data-placement=right]:focus::before,[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:hover::before,[data-tooltip][data-placement=right]:hover::after{animation-duration:.2s;animation-name:tooltip-slide-right}[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:hover::after{animation-name:tooltip-caret-slide-right}}@keyframes tooltip-slide-top{from{transform:translate(-50%, .75rem);opacity:0}to{transform:translate(-50%, -.25rem);opacity:1}}@keyframes tooltip-caret-slide-top{from{opacity:0}50%{transform:translate(-50%, -.25rem);opacity:0}to{transform:translate(-50%, 0rem);opacity:1}}@keyframes tooltip-slide-bottom{from{transform:translate(-50%, -.75rem);opacity:0}to{transform:translate(-50%, .25rem);opacity:1}}@keyframes tooltip-caret-slide-bottom{from{opacity:0}50%{transform:translate(-50%, -.5rem);opacity:0}to{transform:translate(-50%, -.3rem);opacity:1}}@keyframes tooltip-slide-left{from{transform:translate(.75rem, -50%);opacity:0}to{transform:translate(-.25rem, -50%);opacity:1}}@keyframes tooltip-caret-slide-left{from{opacity:0}50%{transform:translate(.05rem, -50%);opacity:0}to{transform:translate(.3rem, -50%);opacity:1}}@keyframes tooltip-slide-right{from{transform:translate(-.75rem, -50%);opacity:0}to{transform:translate(.25rem, -50%);opacity:1}}@keyframes tooltip-caret-slide-right{from{opacity:0}50%{transform:translate(-.05rem, -50%);opacity:0}to{transform:translate(-.3rem, -50%);opacity:1}}[aria-controls]{cursor:pointer}[aria-disabled=true],[disabled]{cursor:not-allowed}[aria-hidden=false][hidden]{display:initial}[aria-hidden=false][hidden]:not(:focus){clip:rect(0, 0, 0, 0);position:absolute}a,area,button,input,label,select,summary,textarea,[tabindex]{-ms-touch-action:manipulation}[dir=rtl]{direction:rtl}@media (prefers-reduced-motion: reduce){*:not([aria-busy=true]),:not([aria-busy=true])::before,:not([aria-busy=true])::after{background-attachment:initial !important;animation-duration:1ms !important;animation-delay:-1ms !important;animation-iteration-count:1 !important;scroll-behavior:auto !important;transition-delay:0s !important;transition-duration:0s !important}} |
6109 | \ No newline at end of file |
6110 | diff --git a/www/public/pico/pico.fluid.classless.css b/www/public/pico/pico.fluid.classless.css |
6111 | deleted file mode 100644 |
6112 | index bc5cf12..0000000 |
6113 | --- a/www/public/pico/pico.fluid.classless.css |
6114 | +++ /dev/null |
6115 | @@ -1,4 +0,0 @@ |
6116 | - /*! |
6117 | - * Pico CSS v1.5.10 (https://picocss.com) |
6118 | - * Copyright 2019-2023 - Licensed under MIT |
6119 | - */:root{--font-family: system-ui, -apple-system, "Segoe UI", "Roboto", "Ubuntu", "Cantarell", "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--line-height: 1.5;--font-weight: 400;--font-size: 16px;--border-radius: 0.25rem;--border-width: 1px;--outline-width: 3px;--spacing: 1rem;--typography-spacing-vertical: 1.5rem;--block-spacing-vertical: calc(var(--spacing) * 2);--block-spacing-horizontal: var(--spacing);--form-element-spacing-vertical: 0.75rem;--form-element-spacing-horizontal: 1rem;--nav-element-spacing-vertical: 1rem;--nav-element-spacing-horizontal: 0.5rem;--nav-link-spacing-vertical: 0.5rem;--nav-link-spacing-horizontal: 0.5rem;--form-label-font-weight: var(--font-weight);--transition: 0.2s ease-in-out;--modal-overlay-backdrop-filter: blur(0.25rem)}@media (min-width: 576px){:root{--font-size: 17px}}@media (min-width: 768px){:root{--font-size: 18px}}@media (min-width: 992px){:root{--font-size: 19px}}@media (min-width: 1200px){:root{--font-size: 20px}}@media (min-width: 576px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 2.5)}}@media (min-width: 768px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 3)}}@media (min-width: 992px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 3.5)}}@media (min-width: 1200px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 4)}}@media (min-width: 576px){article{--block-spacing-horizontal: calc(var(--spacing) * 1.25)}}@media (min-width: 768px){article{--block-spacing-horizontal: calc(var(--spacing) * 1.5)}}@media (min-width: 992px){article{--block-spacing-horizontal: calc(var(--spacing) * 1.75)}}@media (min-width: 1200px){article{--block-spacing-horizontal: calc(var(--spacing) * 2)}}dialog>article{--block-spacing-vertical: calc(var(--spacing) * 2);--block-spacing-horizontal: var(--spacing)}@media (min-width: 576px){dialog>article{--block-spacing-vertical: calc(var(--spacing) * 2.5);--block-spacing-horizontal: calc(var(--spacing) * 1.25)}}@media (min-width: 768px){dialog>article{--block-spacing-vertical: calc(var(--spacing) * 3);--block-spacing-horizontal: calc(var(--spacing) * 1.5)}}a{--text-decoration: none}small{--font-size: 0.875em}h1,h2,h3,h4,h5,h6{--font-weight: 700}h1{--font-size: 2rem;--typography-spacing-vertical: 3rem}h2{--font-size: 1.75rem;--typography-spacing-vertical: 2.625rem}h3{--font-size: 1.5rem;--typography-spacing-vertical: 2.25rem}h4{--font-size: 1.25rem;--typography-spacing-vertical: 1.874rem}h5{--font-size: 1.125rem;--typography-spacing-vertical: 1.6875rem}[type=checkbox],[type=radio]{--border-width: 2px}[type=checkbox][role=switch]{--border-width: 3px}thead th,thead td,tfoot th,tfoot td{--border-width: 3px}:not(thead,tfoot)>*>td{--font-size: 0.875em}pre,code,kbd,samp{--font-family: "Menlo", "Consolas", "Roboto Mono", "Ubuntu Monospace", "Noto Mono", "Oxygen Mono", "Liberation Mono", monospace, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}kbd{--font-weight: bolder}[data-theme=light],:root:not([data-theme=dark]){--background-color: #fff;--color: #415462;--h1-color: #1b2832;--h2-color: #24333e;--h3-color: #2c3d49;--h4-color: #374956;--h5-color: #415462;--h6-color: #4d606d;--muted-color: #73828c;--muted-border-color: #edf0f3;--primary: #1095c1;--primary-hover: #08769b;--primary-focus: rgba(16,149,193,.125);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #415462;--secondary-focus: rgba(89,107,120,.125);--secondary-inverse: #fff;--contrast: #1b2832;--contrast-hover: #000;--contrast-focus: rgba(89,107,120,.125);--contrast-inverse: #fff;--mark-background-color: #fff2ca;--mark-color: #543a26;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: transparent;--form-element-border-color: #a2afb9;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: transparent;--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #d5dce2;--form-element-disabled-border-color: #a2afb9;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #c62828;--form-element-invalid-active-border-color: #d32f2f;--form-element-invalid-focus-color: rgba(211,47,47,.125);--form-element-valid-border-color: #388e3c;--form-element-valid-active-border-color: #43a047;--form-element-valid-focus-color: rgba(67,160,71,.125);--switch-background-color: #bbc6ce;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #d5dce2;--range-active-border-color: #bbc6ce;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: #f6f8f9;--code-background-color: #edf0f3;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #b34d80;--code-property-color: #3d888f;--code-value-color: #986;--code-comment-color: #a2afb9;--accordion-border-color: var(--muted-border-color);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: var(--background-color);--card-border-color: var(--muted-border-color);--card-box-shadow: .0145rem .029rem .174rem rgba(27,40,50,.01698), .0335rem .067rem .402rem rgba(27,40,50,.024), .0625rem .125rem .75rem rgba(27,40,50,.03), .1125rem .225rem 1.35rem rgba(27,40,50,.036), .2085rem .417rem 2.502rem rgba(27,40,50,.04302), .5rem 1rem 6rem rgba(27,40,50,.06), 0 0 0 0.0625rem rgba(27,40,50,.015);--card-sectionning-background-color: #fbfbfc;--dropdown-background-color: #fbfbfc;--dropdown-border-color: #e1e6eb;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: #edf0f3;--modal-overlay-background-color: rgba(213,220,226,.7);--progress-background-color: #d5dce2;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(65, 84, 98)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--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(115, 130, 140)' stroke-width='4' 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");--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(65, 84, 98)' 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");--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(198, 40, 40)' 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");--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");--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(65, 84, 98)' stroke-width='2' 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");--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(65, 84, 98)' 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");--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(56, 142, 60)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:light}@media only screen and (prefers-color-scheme: dark){:root:not([data-theme]){--background-color: #11191f;--color: #bbc6ce;--h1-color: #edf0f3;--h2-color: #e1e6eb;--h3-color: #d5dce2;--h4-color: #c8d1d8;--h5-color: #bbc6ce;--h6-color: #afbbc4;--muted-color: #73828c;--muted-border-color: #1f2d38;--primary: #1095c1;--primary-hover: #1ab3e6;--primary-focus: rgba(16,149,193,.25);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #73828c;--secondary-focus: rgba(115,130,140,.25);--secondary-inverse: #fff;--contrast: #edf0f3;--contrast-hover: #fff;--contrast-focus: rgba(115,130,140,.25);--contrast-inverse: #000;--mark-background-color: #d1c284;--mark-color: #11191f;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: #11191f;--form-element-border-color: #374956;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: var(--form-element-background-color);--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #2c3d49;--form-element-disabled-border-color: #415462;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #b71c1c;--form-element-invalid-active-border-color: #c62828;--form-element-invalid-focus-color: rgba(198,40,40,.25);--form-element-valid-border-color: #2e7d32;--form-element-valid-active-border-color: #388e3c;--form-element-valid-focus-color: rgba(56,142,60,.25);--switch-background-color: #374956;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #24333e;--range-active-border-color: #2c3d49;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: rgba(115,130,140,.05);--code-background-color: #18232c;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #a65980;--code-property-color: #599fa6;--code-value-color: #8c8473;--code-comment-color: #4d606d;--accordion-border-color: var(--muted-border-color);--accordion-active-summary-color: var(--primary);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: #141e26;--card-border-color: var(--card-background-color);--card-box-shadow: .0145rem .029rem .174rem rgba(0,0,0,.01698), .0335rem .067rem .402rem rgba(0,0,0,.024), .0625rem .125rem .75rem rgba(0,0,0,.03), .1125rem .225rem 1.35rem rgba(0,0,0,.036), .2085rem .417rem 2.502rem rgba(0,0,0,.04302), .5rem 1rem 6rem rgba(0,0,0,.06), 0 0 0 0.0625rem rgba(0,0,0,.015);--card-sectionning-background-color: #18232c;--dropdown-background-color: #1b2832;--dropdown-border-color: #24333e;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: rgba(36,51,62,.75);--modal-overlay-background-color: rgba(36,51,62,.8);--progress-background-color: #24333e;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(162, 175, 185)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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(0, 0, 0)' 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");--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(115, 130, 140)' stroke-width='4' 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");--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(162, 175, 185)' 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");--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(183, 28, 28)' 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");--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");--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(162, 175, 185)' stroke-width='2' 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");--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(162, 175, 185)' 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");--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(46, 125, 50)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:dark}}[data-theme=dark]{--background-color: #11191f;--color: #bbc6ce;--h1-color: #edf0f3;--h2-color: #e1e6eb;--h3-color: #d5dce2;--h4-color: #c8d1d8;--h5-color: #bbc6ce;--h6-color: #afbbc4;--muted-color: #73828c;--muted-border-color: #1f2d38;--primary: #1095c1;--primary-hover: #1ab3e6;--primary-focus: rgba(16,149,193,.25);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #73828c;--secondary-focus: rgba(115,130,140,.25);--secondary-inverse: #fff;--contrast: #edf0f3;--contrast-hover: #fff;--contrast-focus: rgba(115,130,140,.25);--contrast-inverse: #000;--mark-background-color: #d1c284;--mark-color: #11191f;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: #11191f;--form-element-border-color: #374956;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: var(--form-element-background-color);--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #2c3d49;--form-element-disabled-border-color: #415462;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #b71c1c;--form-element-invalid-active-border-color: #c62828;--form-element-invalid-focus-color: rgba(198,40,40,.25);--form-element-valid-border-color: #2e7d32;--form-element-valid-active-border-color: #388e3c;--form-element-valid-focus-color: rgba(56,142,60,.25);--switch-background-color: #374956;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #24333e;--range-active-border-color: #2c3d49;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: rgba(115,130,140,.05);--code-background-color: #18232c;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #a65980;--code-property-color: #599fa6;--code-value-color: #8c8473;--code-comment-color: #4d606d;--accordion-border-color: var(--muted-border-color);--accordion-active-summary-color: var(--primary);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: #141e26;--card-border-color: var(--card-background-color);--card-box-shadow: .0145rem .029rem .174rem rgba(0,0,0,.01698), .0335rem .067rem .402rem rgba(0,0,0,.024), .0625rem .125rem .75rem rgba(0,0,0,.03), .1125rem .225rem 1.35rem rgba(0,0,0,.036), .2085rem .417rem 2.502rem rgba(0,0,0,.04302), .5rem 1rem 6rem rgba(0,0,0,.06), 0 0 0 0.0625rem rgba(0,0,0,.015);--card-sectionning-background-color: #18232c;--dropdown-background-color: #1b2832;--dropdown-border-color: #24333e;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: rgba(36,51,62,.75);--modal-overlay-background-color: rgba(36,51,62,.8);--progress-background-color: #24333e;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(162, 175, 185)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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(0, 0, 0)' 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");--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(115, 130, 140)' stroke-width='4' 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");--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(162, 175, 185)' 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");--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(183, 28, 28)' 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");--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");--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(162, 175, 185)' stroke-width='2' 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");--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(162, 175, 185)' 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");--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(46, 125, 50)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:dark}progress,[type=checkbox],[type=radio],[type=range]{accent-color:var(--primary)}*,*::before,*::after{box-sizing:border-box;background-repeat:no-repeat}::before,::after{text-decoration:inherit;vertical-align:inherit}:where(:root){-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--background-color);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);line-height:var(--line-height);font-family:var(--font-family);text-rendering:optimizeLegibility;overflow-wrap:break-word;cursor:default;tab-size:4}main{display:block}body{width:100%;margin:0}body>header,body>main,body>footer{width:100%;margin-right:auto;margin-left:auto;padding:var(--block-spacing-vertical) var(--block-spacing-horizontal)}section{margin-bottom:var(--block-spacing-vertical)}figure{display:block;margin:0;padding:0;overflow-x:auto}figure figcaption{padding:calc(var(--spacing)*.5) 0;color:var(--muted-color)}b,strong{font-weight:bolder}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,figure,form,ol,p,pre,table,ul{margin-top:0;margin-bottom:var(--typography-spacing-vertical);color:var(--color);font-style:normal;font-weight:var(--font-weight);font-size:var(--font-size)}a,[role=link]{--color: var(--primary);--background-color: transparent;outline:none;background-color:var(--background-color);color:var(--color);text-decoration:var(--text-decoration);transition:background-color var(--transition),color var(--transition),text-decoration var(--transition),box-shadow var(--transition)}a:is([aria-current],:hover,:active,:focus),[role=link]:is([aria-current],:hover,:active,:focus){--color: var(--primary-hover);--text-decoration: underline}a:focus,[role=link]:focus{--background-color: var(--primary-focus)}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--typography-spacing-vertical);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);font-family:var(--font-family)}h1{--color: var(--h1-color)}h2{--color: var(--h2-color)}h3{--color: var(--h3-color)}h4{--color: var(--h4-color)}h5{--color: var(--h5-color)}h6{--color: var(--h6-color)}:where(address,blockquote,dl,figure,form,ol,p,pre,table,ul)~:is(h1,h2,h3,h4,h5,h6){margin-top:var(--typography-spacing-vertical)}hgroup{margin-bottom:var(--typography-spacing-vertical)}hgroup>*{margin-bottom:0}hgroup>*:last-child{--color: var(--muted-color);--font-weight: unset;font-size:1rem;font-family:unset}p{margin-bottom:var(--typography-spacing-vertical)}small{font-size:var(--font-size)}:where(dl,ol,ul){padding-right:0;padding-left:var(--spacing);padding-inline-start:var(--spacing);padding-inline-end:0}:where(dl,ol,ul) li{margin-bottom:calc(var(--typography-spacing-vertical)*.25)}:where(dl,ol,ul) :is(dl,ol,ul){margin:0;margin-top:calc(var(--typography-spacing-vertical)*.25)}ul li{list-style:square}mark{padding:.125rem .25rem;background-color:var(--mark-background-color);color:var(--mark-color);vertical-align:baseline}blockquote{display:block;margin:var(--typography-spacing-vertical) 0;padding:var(--spacing);border-right:none;border-left:.25rem solid var(--blockquote-border-color);border-inline-start:.25rem solid var(--blockquote-border-color);border-inline-end:none}blockquote footer{margin-top:calc(var(--typography-spacing-vertical)*.5);color:var(--blockquote-footer-color)}abbr[title]{border-bottom:1px dotted;text-decoration:none;cursor:help}ins{color:var(--ins-color);text-decoration:none}del{color:var(--del-color)}::selection{background-color:var(--primary-focus)}:where(audio,canvas,iframe,img,svg,video){vertical-align:middle}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}:where(iframe){border-style:none}img{max-width:100%;height:auto;border-style:none}:where(svg:not([fill])){fill:currentColor}svg:not(:root){overflow:hidden}button{margin:0;overflow:visible;font-family:inherit;text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button{display:block;width:100%;margin-bottom:var(--spacing)}[role=button]{display:inline-block;text-decoration:none}button,input[type=submit],input[type=button],input[type=reset],[role=button]{--background-color: var(--primary);--border-color: var(--primary);--color: var(--primary-inverse);--box-shadow: var(--button-box-shadow, 0 0 0 rgba(0, 0, 0, 0));padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}button:is([aria-current],:hover,:active,:focus),input[type=submit]:is([aria-current],:hover,:active,:focus),input[type=button]:is([aria-current],:hover,:active,:focus),input[type=reset]:is([aria-current],:hover,:active,:focus),[role=button]:is([aria-current],:hover,:active,:focus){--background-color: var(--primary-hover);--border-color: var(--primary-hover);--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));--color: var(--primary-inverse)}button:focus,input[type=submit]:focus,input[type=button]:focus,input[type=reset]:focus,[role=button]:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--primary-focus)}input[type=reset]{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);cursor:pointer}input[type=reset]:is([aria-current],:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover)}input[type=reset]:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--secondary-focus)}:where(button,[type=submit],[type=button],[type=reset],[role=button])[disabled],:where(fieldset[disabled]) :is(button,[type=submit],[type=button],[type=reset],[role=button]),a[role=button]:not([href]){opacity:.5;pointer-events:none}input,optgroup,select,textarea{margin:0;font-size:1rem;line-height:var(--line-height);font-family:inherit;letter-spacing:inherit}input{overflow:visible}select{text-transform:none}legend{max-width:100%;padding:0;color:inherit;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{padding:0}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::-moz-focus-inner{padding:0;border-style:none}:-moz-focusring{outline:none}:-moz-ui-invalid{box-shadow:none}::-ms-expand{display:none}[type=file],[type=range]{padding:0;border-width:0}input:not([type=checkbox],[type=radio],[type=range]){height:calc(1rem*var(--line-height) + var(--form-element-spacing-vertical)*2 + var(--border-width)*2)}fieldset{margin:0;margin-bottom:var(--spacing);padding:0;border:0}label,fieldset legend{display:block;margin-bottom:calc(var(--spacing)*.25);font-weight:var(--form-label-font-weight, var(--font-weight))}input:not([type=checkbox],[type=radio]),select,textarea{width:100%}input:not([type=checkbox],[type=radio],[type=range],[type=file]),select,textarea{appearance:none;padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal)}input,select,textarea{--background-color: var(--form-element-background-color);--border-color: var(--form-element-border-color);--color: var(--form-element-color);--box-shadow: none;border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}input:not([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[readonly]):is(:active,:focus),:where(select,textarea):is(:active,:focus){--background-color: var(--form-element-active-background-color)}input:not([type=submit],[type=button],[type=reset],[role=switch],[readonly]):is(:active,:focus),:where(select,textarea):is(:active,:focus){--border-color: var(--form-element-active-border-color)}input:not([type=submit],[type=button],[type=reset],[type=range],[type=file],[readonly]):focus,select:focus,textarea:focus{--box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color)}input:not([type=submit],[type=button],[type=reset])[disabled],select[disabled],textarea[disabled],:where(fieldset[disabled]) :is(input:not([type=submit],[type=button],[type=reset]),select,textarea){--background-color: var(--form-element-disabled-background-color);--border-color: var(--form-element-disabled-border-color);opacity:var(--form-element-disabled-opacity);pointer-events:none}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid]{padding-right:calc(var(--form-element-spacing-horizontal) + 1.5rem) !important;padding-left:var(--form-element-spacing-horizontal);padding-inline-start:var(--form-element-spacing-horizontal) !important;padding-inline-end:calc(var(--form-element-spacing-horizontal) + 1.5rem) !important;background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid=false]{background-image:var(--icon-valid)}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid=true]{background-image:var(--icon-invalid)}:where(input,select,textarea)[aria-invalid=false]{--border-color: var(--form-element-valid-border-color)}:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus){--border-color: var(--form-element-valid-active-border-color) !important;--box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color) !important}:where(input,select,textarea)[aria-invalid=true]{--border-color: var(--form-element-invalid-border-color)}:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus){--border-color: var(--form-element-invalid-active-border-color) !important;--box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color) !important}[dir=rtl] :where(input,select,textarea):not([type=checkbox],[type=radio]):is([aria-invalid],[aria-invalid=true],[aria-invalid=false]){background-position:center left .75rem}input::placeholder,input::-webkit-input-placeholder,textarea::placeholder,textarea::-webkit-input-placeholder,select:invalid{color:var(--form-element-placeholder-color);opacity:1}input:not([type=checkbox],[type=radio]),select,textarea{margin-bottom:var(--spacing)}select::-ms-expand{border:0;background-color:rgba(0,0,0,0)}select:not([multiple],[size]){padding-right:calc(var(--form-element-spacing-horizontal) + 1.5rem);padding-left:var(--form-element-spacing-horizontal);padding-inline-start:var(--form-element-spacing-horizontal);padding-inline-end:calc(var(--form-element-spacing-horizontal) + 1.5rem);background-image:var(--icon-chevron);background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}[dir=rtl] select:not([multiple],[size]){background-position:center left .75rem}:where(input,select,textarea)+small{display:block;width:100%;margin-top:calc(var(--spacing)*-.75);margin-bottom:var(--spacing);color:var(--muted-color)}label>:where(input,select,textarea){margin-top:calc(var(--spacing)*.25)}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.25em;height:1.25em;margin-top:-.125em;margin-right:.375em;margin-left:0;margin-inline-start:0;margin-inline-end:.375em;border-width:var(--border-width);font-size:inherit;vertical-align:middle;cursor:pointer}[type=checkbox]::-ms-check,[type=radio]::-ms-check{display:none}[type=checkbox]:checked,[type=checkbox]:checked:active,[type=checkbox]:checked:focus,[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--background-color: var(--primary);--border-color: var(--primary);background-image:var(--icon-checkbox);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=checkbox]~label,[type=radio]~label{display:inline-block;margin-right:.375em;margin-bottom:0;cursor:pointer}[type=checkbox]:indeterminate{--background-color: var(--primary);--border-color: var(--primary);background-image:var(--icon-minus);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=radio]{border-radius:50%}[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--background-color: var(--primary-inverse);border-width:.35em;background-image:none}[type=checkbox][role=switch]{--background-color: var(--switch-background-color);--border-color: var(--switch-background-color);--color: var(--switch-color);width:2.25em;height:1.25em;border:var(--border-width) solid var(--border-color);border-radius:1.25em;background-color:var(--background-color);line-height:1.25em}[type=checkbox][role=switch]:focus{--background-color: var(--switch-background-color);--border-color: var(--switch-background-color)}[type=checkbox][role=switch]:checked{--background-color: var(--switch-checked-background-color);--border-color: var(--switch-checked-background-color)}[type=checkbox][role=switch]:before{display:block;width:calc(1.25em - (var(--border-width) * 2));height:100%;border-radius:50%;background-color:var(--color);content:"";transition:margin .1s ease-in-out}[type=checkbox][role=switch]:checked{background-image:none}[type=checkbox][role=switch]:checked::before{margin-left:calc(1.125em - var(--border-width));margin-inline-start:calc(1.125em - var(--border-width))}[type=checkbox][aria-invalid=false],[type=checkbox]:checked[aria-invalid=false],[type=radio][aria-invalid=false],[type=radio]:checked[aria-invalid=false],[type=checkbox][role=switch][aria-invalid=false],[type=checkbox][role=switch]:checked[aria-invalid=false]{--border-color: var(--form-element-valid-border-color)}[type=checkbox][aria-invalid=true],[type=checkbox]:checked[aria-invalid=true],[type=radio][aria-invalid=true],[type=radio]:checked[aria-invalid=true],[type=checkbox][role=switch][aria-invalid=true],[type=checkbox][role=switch]:checked[aria-invalid=true]{--border-color: var(--form-element-invalid-border-color)}[type=color]::-webkit-color-swatch-wrapper{padding:0}[type=color]::-moz-focus-inner{padding:0}[type=color]::-webkit-color-swatch{border:0;border-radius:calc(var(--border-radius)*.5)}[type=color]::-moz-color-swatch{border:0;border-radius:calc(var(--border-radius)*.5)}input:not([type=checkbox],[type=radio],[type=range],[type=file]):is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){--icon-position: 0.75rem;--icon-width: 1rem;padding-right:calc(var(--icon-width) + var(--icon-position));background-image:var(--icon-date);background-position:center right var(--icon-position);background-size:var(--icon-width) auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=time]{background-image:var(--icon-time)}[type=date]::-webkit-calendar-picker-indicator,[type=datetime-local]::-webkit-calendar-picker-indicator,[type=month]::-webkit-calendar-picker-indicator,[type=time]::-webkit-calendar-picker-indicator,[type=week]::-webkit-calendar-picker-indicator{width:var(--icon-width);margin-right:calc(var(--icon-width)*-1);margin-left:var(--icon-position);opacity:0}[dir=rtl] :is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){text-align:right}@-moz-document url-prefix(){[type=date],[type=datetime-local],[type=month],[type=time],[type=week]{padding-right:var(--form-element-spacing-horizontal) !important;background-image:none !important}}[type=file]{--color: var(--muted-color);padding:calc(var(--form-element-spacing-vertical)*.5) 0;border:0;border-radius:0;background:none}[type=file]::file-selector-button{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);margin-right:calc(var(--spacing)/2);margin-left:0;margin-inline-start:0;margin-inline-end:calc(var(--spacing)/2);padding:calc(var(--form-element-spacing-vertical)*.5) calc(var(--form-element-spacing-horizontal)*.5);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[type=file]::file-selector-button:is(:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover)}[type=file]::-webkit-file-upload-button{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);margin-right:calc(var(--spacing)/2);margin-left:0;margin-inline-start:0;margin-inline-end:calc(var(--spacing)/2);padding:calc(var(--form-element-spacing-vertical)*.5) calc(var(--form-element-spacing-horizontal)*.5);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[type=file]::-webkit-file-upload-button:is(:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover)}[type=file]::-ms-browse{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);margin-right:calc(var(--spacing)/2);margin-left:0;margin-inline-start:0;margin-inline-end:calc(var(--spacing)/2);padding:calc(var(--form-element-spacing-vertical)*.5) calc(var(--form-element-spacing-horizontal)*.5);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[type=file]::-ms-browse:is(:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover)}[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:1.25rem;background:none}[type=range]::-webkit-slider-runnable-track{width:100%;height:.25rem;border-radius:var(--border-radius);background-color:var(--range-border-color);transition:background-color var(--transition),box-shadow var(--transition)}[type=range]::-moz-range-track{width:100%;height:.25rem;border-radius:var(--border-radius);background-color:var(--range-border-color);transition:background-color var(--transition),box-shadow var(--transition)}[type=range]::-ms-track{width:100%;height:.25rem;border-radius:var(--border-radius);background-color:var(--range-border-color);transition:background-color var(--transition),box-shadow var(--transition)}[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.5rem;border:2px solid var(--range-thumb-border-color);border-radius:50%;background-color:var(--range-thumb-color);cursor:pointer;transition:background-color var(--transition),transform var(--transition)}[type=range]::-moz-range-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.5rem;border:2px solid var(--range-thumb-border-color);border-radius:50%;background-color:var(--range-thumb-color);cursor:pointer;transition:background-color var(--transition),transform var(--transition)}[type=range]::-ms-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.5rem;border:2px solid var(--range-thumb-border-color);border-radius:50%;background-color:var(--range-thumb-color);cursor:pointer;transition:background-color var(--transition),transform var(--transition)}[type=range]:hover,[type=range]:focus{--range-border-color: var(--range-active-border-color);--range-thumb-color: var(--range-thumb-hover-color)}[type=range]:active{--range-thumb-color: var(--range-thumb-active-color)}[type=range]:active::-webkit-slider-thumb{transform:scale(1.25)}[type=range]:active::-moz-range-thumb{transform:scale(1.25)}[type=range]:active::-ms-thumb{transform:scale(1.25)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{padding-inline-start:calc(var(--form-element-spacing-horizontal) + 1.75rem);border-radius:5rem;background-image:var(--icon-search);background-position:center left 1.125rem;background-size:1rem auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{padding-inline-start:calc(var(--form-element-spacing-horizontal) + 1.75rem) !important;background-position:center left 1.125rem,center right .75rem}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=false]{background-image:var(--icon-search),var(--icon-valid)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=true]{background-image:var(--icon-search),var(--icon-invalid)}[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;display:none}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{background-position:center right 1.125rem}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{background-position:center right 1.125rem,center left .75rem}:where(table){width:100%;border-collapse:collapse;border-spacing:0;text-indent:0}th,td{padding:calc(var(--spacing)/2) var(--spacing);border-bottom:var(--border-width) solid var(--table-border-color);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);text-align:left;text-align:start}tfoot th,tfoot td{border-top:var(--border-width) solid var(--table-border-color);border-bottom:0}table[role=grid] tbody tr:nth-child(odd){background-color:var(--table-row-stripped-background-color)}pre,code,kbd,samp{font-size:.875em;font-family:var(--font-family)}pre{-ms-overflow-style:scrollbar;overflow:auto}pre,code,kbd{border-radius:var(--border-radius);background:var(--code-background-color);color:var(--code-color);font-weight:var(--font-weight);line-height:initial}code,kbd{display:inline-block;padding:.375rem .5rem}pre{display:block;margin-bottom:var(--spacing);overflow-x:auto}pre>code{display:block;padding:var(--spacing);background:none;font-size:14px;line-height:var(--line-height)}code b{color:var(--code-tag-color);font-weight:var(--font-weight)}code i{color:var(--code-property-color);font-style:normal}code u{color:var(--code-value-color);text-decoration:none}code em{color:var(--code-comment-color);font-style:normal}kbd{background-color:var(--code-kbd-background-color);color:var(--code-kbd-color);vertical-align:baseline}hr{height:0;border:0;border-top:1px solid var(--muted-border-color);color:inherit}[hidden],template{display:none !important}canvas{display:inline-block}details{display:block;margin-bottom:var(--spacing);padding-bottom:var(--spacing);border-bottom:var(--border-width) solid var(--accordion-border-color)}details summary{line-height:1rem;list-style-type:none;cursor:pointer;transition:color var(--transition)}details summary:not([role]){color:var(--accordion-close-summary-color)}details summary::-webkit-details-marker{display:none}details summary::marker{display:none}details summary::-moz-list-bullet{list-style-type:none}details summary::after{display:block;width:1rem;height:1rem;margin-inline-start:calc(var(--spacing, 1rem)*.5);float:right;transform:rotate(-90deg);background-image:var(--icon-chevron);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:"";transition:transform var(--transition)}details summary:focus{outline:none}details summary:focus:not([role=button]){color:var(--accordion-active-summary-color)}details summary[role=button]{width:100%;text-align:left}details summary[role=button]::after{height:calc(1rem*var(--line-height, 1.5));background-image:var(--icon-chevron-button)}details[open]>summary{margin-bottom:calc(var(--spacing))}details[open]>summary:not([role]):not(:focus){color:var(--accordion-open-summary-color)}details[open]>summary::after{transform:rotate(0)}[dir=rtl] details summary{text-align:right}[dir=rtl] details summary::after{float:left;background-position:left center}article{margin:var(--block-spacing-vertical) 0;padding:var(--block-spacing-vertical) var(--block-spacing-horizontal);border-radius:var(--border-radius);background:var(--card-background-color);box-shadow:var(--card-box-shadow)}article>header,article>footer{margin-right:calc(var(--block-spacing-horizontal)*-1);margin-left:calc(var(--block-spacing-horizontal)*-1);padding:calc(var(--block-spacing-vertical)*.66) var(--block-spacing-horizontal);background-color:var(--card-sectionning-background-color)}article>header{margin-top:calc(var(--block-spacing-vertical)*-1);margin-bottom:var(--block-spacing-vertical);border-bottom:var(--border-width) solid var(--card-border-color);border-top-right-radius:var(--border-radius);border-top-left-radius:var(--border-radius)}article>footer{margin-top:var(--block-spacing-vertical);margin-bottom:calc(var(--block-spacing-vertical)*-1);border-top:var(--border-width) solid var(--card-border-color);border-bottom-right-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius)}:root{--scrollbar-width: 0px}dialog{display:flex;z-index:999;position:fixed;top:0;right:0;bottom:0;left:0;align-items:center;justify-content:center;width:inherit;min-width:100%;height:inherit;min-height:100%;padding:var(--spacing);border:0;backdrop-filter:var(--modal-overlay-backdrop-filter);background-color:var(--modal-overlay-background-color);color:var(--color)}dialog article{max-height:calc(100vh - var(--spacing)*2);overflow:auto}@media (min-width: 576px){dialog article{max-width:510px}}@media (min-width: 768px){dialog article{max-width:700px}}dialog article>header,dialog article>footer{padding:calc(var(--block-spacing-vertical)*.5) var(--block-spacing-horizontal)}dialog article>header .close{margin:0;margin-left:var(--spacing);float:right}dialog article>footer{text-align:right}dialog article>footer [role=button]{margin-bottom:0}dialog article>footer [role=button]:not(:first-of-type){margin-left:calc(var(--spacing)*.5)}dialog article p:last-of-type{margin:0}dialog:not([open]),dialog[open=false]{display:none}:where(nav li)::before{float:left;content:""}nav,nav ul{display:flex}nav{justify-content:space-between}nav ol,nav ul{align-items:center;margin-bottom:0;padding:0;list-style:none}nav ol:first-of-type,nav ul:first-of-type{margin-left:calc(var(--nav-element-spacing-horizontal)*-1)}nav ol:last-of-type,nav ul:last-of-type{margin-right:calc(var(--nav-element-spacing-horizontal)*-1)}nav li{display:inline-block;margin:0;padding:var(--nav-element-spacing-vertical) var(--nav-element-spacing-horizontal)}nav li>*{--spacing: 0}nav :where(a,[role=link]){display:inline-block;margin:calc(var(--nav-link-spacing-vertical)*-1) calc(var(--nav-link-spacing-horizontal)*-1);padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);border-radius:var(--border-radius);text-decoration:none}nav :where(a,[role=link]):is([aria-current],:hover,:active,:focus){text-decoration:none}nav[aria-label=breadcrumb]{align-items:center;justify-content:start}nav[aria-label=breadcrumb] ul li:not(:first-child){margin-inline-start:var(--nav-link-spacing-horizontal)}nav[aria-label=breadcrumb] ul li:not(:last-child) ::after{position:absolute;width:calc(var(--nav-link-spacing-horizontal)*2);margin-inline-start:calc(var(--nav-link-spacing-horizontal)/2);content:"/";color:var(--muted-color);text-align:center}nav[aria-label=breadcrumb] a[aria-current]{background-color:rgba(0,0,0,0);color:inherit;text-decoration:none;pointer-events:none}nav [role=button]{margin-right:inherit;margin-left:inherit;padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal)}aside nav,aside ol,aside ul,aside li{display:block}aside li{padding:calc(var(--nav-element-spacing-vertical)*.5) var(--nav-element-spacing-horizontal)}aside li a{display:block}aside li [role=button]{margin:inherit}[dir=rtl] nav[aria-label=breadcrumb] ul li:not(:last-child) ::after{content:"\\"}progress{display:inline-block;vertical-align:baseline}progress{-webkit-appearance:none;-moz-appearance:none;display:inline-block;appearance:none;width:100%;height:.5rem;margin-bottom:calc(var(--spacing)*.5);overflow:hidden;border:0;border-radius:var(--border-radius);background-color:var(--progress-background-color);color:var(--progress-color)}progress::-webkit-progress-bar{border-radius:var(--border-radius);background:none}progress[value]::-webkit-progress-value{background-color:var(--progress-color)}progress::-moz-progress-bar{background-color:var(--progress-color)}@media (prefers-reduced-motion: no-preference){progress:indeterminate{background:var(--progress-background-color) linear-gradient(to right, var(--progress-color) 30%, var(--progress-background-color) 30%) top left/150% 150% no-repeat;animation:progress-indeterminate 1s linear infinite}progress:indeterminate[value]::-webkit-progress-value{background-color:rgba(0,0,0,0)}progress:indeterminate::-moz-progress-bar{background-color:rgba(0,0,0,0)}}@media (prefers-reduced-motion: no-preference){[dir=rtl] progress:indeterminate{animation-direction:reverse}}@keyframes progress-indeterminate{0%{background-position:200% 0}100%{background-position:-200% 0}}details[role=list],li[role=list]{position:relative}details[role=list] summary+ul,li[role=list]>ul{display:flex;z-index:99;position:absolute;top:auto;right:0;left:0;flex-direction:column;margin:0;padding:0;border:var(--border-width) solid var(--dropdown-border-color);border-radius:var(--border-radius);border-top-right-radius:0;border-top-left-radius:0;background-color:var(--dropdown-background-color);box-shadow:var(--card-box-shadow);color:var(--dropdown-color);white-space:nowrap}details[role=list] summary+ul li,li[role=list]>ul li{width:100%;margin-bottom:0;padding:calc(var(--form-element-spacing-vertical)*.5) var(--form-element-spacing-horizontal);list-style:none}details[role=list] summary+ul li:first-of-type,li[role=list]>ul li:first-of-type{margin-top:calc(var(--form-element-spacing-vertical)*.5)}details[role=list] summary+ul li:last-of-type,li[role=list]>ul li:last-of-type{margin-bottom:calc(var(--form-element-spacing-vertical)*.5)}details[role=list] summary+ul li a,li[role=list]>ul li a{display:block;margin:calc(var(--form-element-spacing-vertical)*-.5) calc(var(--form-element-spacing-horizontal)*-1);padding:calc(var(--form-element-spacing-vertical)*.5) var(--form-element-spacing-horizontal);overflow:hidden;color:var(--dropdown-color);text-decoration:none;text-overflow:ellipsis}details[role=list] summary+ul li a:hover,li[role=list]>ul li a:hover{background-color:var(--dropdown-hover-background-color)}details[role=list] summary::after,li[role=list]>a::after{display:block;width:1rem;height:calc(1rem*var(--line-height, 1.5));margin-inline-start:.5rem;float:right;transform:rotate(0deg);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:""}details[role=list]{padding:0;border-bottom:none}details[role=list] summary{margin-bottom:0}details[role=list] summary:not([role]){height:calc(1rem*var(--line-height) + var(--form-element-spacing-vertical)*2 + var(--border-width)*2);padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);border:var(--border-width) solid var(--form-element-border-color);border-radius:var(--border-radius);background-color:var(--form-element-background-color);color:var(--form-element-placeholder-color);line-height:inherit;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}details[role=list] summary:not([role]):active,details[role=list] summary:not([role]):focus{border-color:var(--form-element-active-border-color);background-color:var(--form-element-active-background-color)}details[role=list] summary:not([role]):focus{box-shadow:0 0 0 var(--outline-width) var(--form-element-focus-color)}details[role=list][open] summary{border-bottom-right-radius:0;border-bottom-left-radius:0}details[role=list][open] summary::before{display:block;z-index:1;position:fixed;top:0;right:0;bottom:0;left:0;background:none;content:"";cursor:default}nav details[role=list] summary,nav li[role=list] a{display:flex;direction:ltr}nav details[role=list] summary+ul,nav li[role=list]>ul{min-width:fit-content;border-radius:var(--border-radius)}nav details[role=list] summary+ul li a,nav li[role=list]>ul li a{border-radius:0}nav details[role=list] summary,nav details[role=list] summary:not([role]){height:auto;padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal)}nav details[role=list][open] summary{border-radius:var(--border-radius)}nav details[role=list] summary+ul{margin-top:var(--outline-width);margin-inline-start:0}nav details[role=list] summary[role=link]{margin-bottom:calc(var(--nav-link-spacing-vertical)*-1);line-height:var(--line-height)}nav details[role=list] summary[role=link]+ul{margin-top:calc(var(--nav-link-spacing-vertical) + var(--outline-width));margin-inline-start:calc(var(--nav-link-spacing-horizontal)*-1)}li[role=list]:hover>ul,li[role=list] a:active~ul,li[role=list] a:focus~ul{display:flex}li[role=list]>ul{display:none;margin-top:calc(var(--nav-link-spacing-vertical) + var(--outline-width));margin-inline-start:calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal))}li[role=list]>a::after{background-image:var(--icon-chevron)}label>details[role=list]{margin-top:calc(var(--spacing)*.25);margin-bottom:var(--spacing)}[aria-busy=true]{cursor:progress}[aria-busy=true]:not(input,select,textarea,html)::before{display:inline-block;width:1em;height:1em;border:.1875em solid currentColor;border-radius:1em;border-right-color:rgba(0,0,0,0);content:"";vertical-align:text-bottom;vertical-align:-.125em;animation:spinner .75s linear infinite;opacity:var(--loading-spinner-opacity)}[aria-busy=true]:not(input,select,textarea,html):not(:empty)::before{margin-right:calc(var(--spacing)*.5);margin-left:0;margin-inline-start:0;margin-inline-end:calc(var(--spacing)*.5)}[aria-busy=true]:not(input,select,textarea,html):empty{text-align:center}button[aria-busy=true],input[type=submit][aria-busy=true],input[type=button][aria-busy=true],input[type=reset][aria-busy=true],a[aria-busy=true]{pointer-events:none}@keyframes spinner{to{transform:rotate(360deg)}}[data-tooltip]{position:relative}[data-tooltip]:not(a,button,input){border-bottom:1px dotted;text-decoration:none;cursor:help}[data-tooltip][data-placement=top]::before,[data-tooltip][data-placement=top]::after,[data-tooltip]::before,[data-tooltip]::after{display:block;z-index:99;position:absolute;bottom:100%;left:50%;padding:.25rem .5rem;overflow:hidden;transform:translate(-50%, -.25rem);border-radius:var(--border-radius);background:var(--tooltip-background-color);content:attr(data-tooltip);color:var(--tooltip-color);font-style:normal;font-weight:var(--font-weight);font-size:.875rem;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;opacity:0;pointer-events:none}[data-tooltip][data-placement=top]::after,[data-tooltip]::after{padding:0;transform:translate(-50%, 0rem);border-top:.3rem solid;border-right:.3rem solid rgba(0,0,0,0);border-left:.3rem solid rgba(0,0,0,0);border-radius:0;background-color:rgba(0,0,0,0);content:"";color:var(--tooltip-background-color)}[data-tooltip][data-placement=bottom]::before,[data-tooltip][data-placement=bottom]::after{top:100%;bottom:auto;transform:translate(-50%, .25rem)}[data-tooltip][data-placement=bottom]:after{transform:translate(-50%, -.3rem);border:.3rem solid rgba(0,0,0,0);border-bottom:.3rem solid}[data-tooltip][data-placement=left]::before,[data-tooltip][data-placement=left]::after{top:50%;right:100%;bottom:auto;left:auto;transform:translate(-.25rem, -50%)}[data-tooltip][data-placement=left]:after{transform:translate(.3rem, -50%);border:.3rem solid rgba(0,0,0,0);border-left:.3rem solid}[data-tooltip][data-placement=right]::before,[data-tooltip][data-placement=right]::after{top:50%;right:auto;bottom:auto;left:100%;transform:translate(.25rem, -50%)}[data-tooltip][data-placement=right]:after{transform:translate(-.3rem, -50%);border:.3rem solid rgba(0,0,0,0);border-right:.3rem solid}[data-tooltip]:focus::before,[data-tooltip]:focus::after,[data-tooltip]:hover::before,[data-tooltip]:hover::after{opacity:1}@media (hover: hover) and (pointer: fine){[data-tooltip][data-placement=bottom]:focus::before,[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus::before,[data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus::after,[data-tooltip]:hover::before,[data-tooltip]:hover::after{animation-duration:.2s;animation-name:tooltip-slide-top}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus::after,[data-tooltip]:hover::after{animation-name:tooltip-caret-slide-top}[data-tooltip][data-placement=bottom]:focus::before,[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover::before,[data-tooltip][data-placement=bottom]:hover::after{animation-duration:.2s;animation-name:tooltip-slide-bottom}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover::after{animation-name:tooltip-caret-slide-bottom}[data-tooltip][data-placement=left]:focus::before,[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:hover::before,[data-tooltip][data-placement=left]:hover::after{animation-duration:.2s;animation-name:tooltip-slide-left}[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:hover::after{animation-name:tooltip-caret-slide-left}[data-tooltip][data-placement=right]:focus::before,[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:hover::before,[data-tooltip][data-placement=right]:hover::after{animation-duration:.2s;animation-name:tooltip-slide-right}[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:hover::after{animation-name:tooltip-caret-slide-right}}@keyframes tooltip-slide-top{from{transform:translate(-50%, .75rem);opacity:0}to{transform:translate(-50%, -.25rem);opacity:1}}@keyframes tooltip-caret-slide-top{from{opacity:0}50%{transform:translate(-50%, -.25rem);opacity:0}to{transform:translate(-50%, 0rem);opacity:1}}@keyframes tooltip-slide-bottom{from{transform:translate(-50%, -.75rem);opacity:0}to{transform:translate(-50%, .25rem);opacity:1}}@keyframes tooltip-caret-slide-bottom{from{opacity:0}50%{transform:translate(-50%, -.5rem);opacity:0}to{transform:translate(-50%, -.3rem);opacity:1}}@keyframes tooltip-slide-left{from{transform:translate(.75rem, -50%);opacity:0}to{transform:translate(-.25rem, -50%);opacity:1}}@keyframes tooltip-caret-slide-left{from{opacity:0}50%{transform:translate(.05rem, -50%);opacity:0}to{transform:translate(.3rem, -50%);opacity:1}}@keyframes tooltip-slide-right{from{transform:translate(-.75rem, -50%);opacity:0}to{transform:translate(.25rem, -50%);opacity:1}}@keyframes tooltip-caret-slide-right{from{opacity:0}50%{transform:translate(-.05rem, -50%);opacity:0}to{transform:translate(-.3rem, -50%);opacity:1}}[aria-controls]{cursor:pointer}[aria-disabled=true],[disabled]{cursor:not-allowed}[aria-hidden=false][hidden]{display:initial}[aria-hidden=false][hidden]:not(:focus){clip:rect(0, 0, 0, 0);position:absolute}a,area,button,input,label,select,summary,textarea,[tabindex]{-ms-touch-action:manipulation}[dir=rtl]{direction:rtl}@media (prefers-reduced-motion: reduce){*:not([aria-busy=true]),:not([aria-busy=true])::before,:not([aria-busy=true])::after{background-attachment:initial !important;animation-duration:1ms !important;animation-delay:-1ms !important;animation-iteration-count:1 !important;scroll-behavior:auto !important;transition-delay:0s !important;transition-duration:0s !important}} |
6120 | \ No newline at end of file |
6121 | diff --git a/www/public/pico/pico.slim.css b/www/public/pico/pico.slim.css |
6122 | deleted file mode 100644 |
6123 | index 97b6b35..0000000 |
6124 | --- a/www/public/pico/pico.slim.css |
6125 | +++ /dev/null |
6126 | @@ -1,7 +0,0 @@ |
6127 | - /*! |
6128 | - * Pico CSS v1.5.10 (https://picocss.com) |
6129 | - * Copyright 2019-2023 - Licensed under MIT |
6130 | - * |
6131 | - * Slim version example |
6132 | - * You can export only the modules you need |
6133 | - */:root{--font-family: system-ui, -apple-system, "Segoe UI", "Roboto", "Ubuntu", "Cantarell", "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--line-height: 1.5;--font-weight: 400;--font-size: 16px;--border-radius: 0.25rem;--border-width: 1px;--outline-width: 3px;--spacing: 1rem;--typography-spacing-vertical: 1.5rem;--block-spacing-vertical: calc(var(--spacing) * 2);--block-spacing-horizontal: var(--spacing);--grid-spacing-vertical: 0;--grid-spacing-horizontal: var(--spacing);--form-element-spacing-vertical: 0.75rem;--form-element-spacing-horizontal: 1rem;--nav-element-spacing-vertical: 1rem;--nav-element-spacing-horizontal: 0.5rem;--nav-link-spacing-vertical: 0.5rem;--nav-link-spacing-horizontal: 0.5rem;--form-label-font-weight: var(--font-weight);--transition: 0.2s ease-in-out;--modal-overlay-backdrop-filter: blur(0.25rem)}@media (min-width: 576px){:root{--font-size: 17px}}@media (min-width: 768px){:root{--font-size: 18px}}@media (min-width: 992px){:root{--font-size: 19px}}@media (min-width: 1200px){:root{--font-size: 20px}}a{--text-decoration: none}a.secondary,a.contrast{--text-decoration: underline}small{--font-size: 0.875em}h1,h2,h3,h4,h5,h6{--font-weight: 700}h1{--font-size: 2rem;--typography-spacing-vertical: 3rem}h2{--font-size: 1.75rem;--typography-spacing-vertical: 2.625rem}h3{--font-size: 1.5rem;--typography-spacing-vertical: 2.25rem}h4{--font-size: 1.25rem;--typography-spacing-vertical: 1.874rem}h5{--font-size: 1.125rem;--typography-spacing-vertical: 1.6875rem}[type=checkbox],[type=radio]{--border-width: 2px}[type=checkbox][role=switch]{--border-width: 3px}thead th,thead td,tfoot th,tfoot td{--border-width: 3px}:not(thead,tfoot)>*>td{--font-size: 0.875em}pre,code,kbd,samp{--font-family: "Menlo", "Consolas", "Roboto Mono", "Ubuntu Monospace", "Noto Mono", "Oxygen Mono", "Liberation Mono", monospace, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}kbd{--font-weight: bolder}[data-theme=light],:root:not([data-theme=dark]){--background-color: #fff;--color: #415462;--h1-color: #1b2832;--h2-color: #24333e;--h3-color: #2c3d49;--h4-color: #374956;--h5-color: #415462;--h6-color: #4d606d;--muted-color: #73828c;--muted-border-color: #edf0f3;--primary: #1095c1;--primary-hover: #08769b;--primary-focus: rgba(16,149,193,.125);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #415462;--secondary-focus: rgba(89,107,120,.125);--secondary-inverse: #fff;--contrast: #1b2832;--contrast-hover: #000;--contrast-focus: rgba(89,107,120,.125);--contrast-inverse: #fff;--mark-background-color: #fff2ca;--mark-color: #543a26;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: transparent;--form-element-border-color: #a2afb9;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: transparent;--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #d5dce2;--form-element-disabled-border-color: #a2afb9;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #c62828;--form-element-invalid-active-border-color: #d32f2f;--form-element-invalid-focus-color: rgba(211,47,47,.125);--form-element-valid-border-color: #388e3c;--form-element-valid-active-border-color: #43a047;--form-element-valid-focus-color: rgba(67,160,71,.125);--switch-background-color: #bbc6ce;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #d5dce2;--range-active-border-color: #bbc6ce;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: #f6f8f9;--code-background-color: #edf0f3;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #b34d80;--code-property-color: #3d888f;--code-value-color: #986;--code-comment-color: #a2afb9;--accordion-border-color: var(--muted-border-color);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: var(--background-color);--card-border-color: var(--muted-border-color);--card-box-shadow: .0145rem .029rem .174rem rgba(27,40,50,.01698), .0335rem .067rem .402rem rgba(27,40,50,.024), .0625rem .125rem .75rem rgba(27,40,50,.03), .1125rem .225rem 1.35rem rgba(27,40,50,.036), .2085rem .417rem 2.502rem rgba(27,40,50,.04302), .5rem 1rem 6rem rgba(27,40,50,.06), 0 0 0 0.0625rem rgba(27,40,50,.015);--card-sectionning-background-color: #fbfbfc;--dropdown-background-color: #fbfbfc;--dropdown-border-color: #e1e6eb;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: #edf0f3;--modal-overlay-background-color: rgba(213,220,226,.7);--progress-background-color: #d5dce2;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(65, 84, 98)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--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(115, 130, 140)' stroke-width='4' 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");--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(65, 84, 98)' 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");--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(198, 40, 40)' 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");--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");--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(65, 84, 98)' stroke-width='2' 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");--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(65, 84, 98)' 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");--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(56, 142, 60)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:light}@media only screen and (prefers-color-scheme: dark){:root:not([data-theme]){--background-color: #11191f;--color: #bbc6ce;--h1-color: #edf0f3;--h2-color: #e1e6eb;--h3-color: #d5dce2;--h4-color: #c8d1d8;--h5-color: #bbc6ce;--h6-color: #afbbc4;--muted-color: #73828c;--muted-border-color: #1f2d38;--primary: #1095c1;--primary-hover: #1ab3e6;--primary-focus: rgba(16,149,193,.25);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #73828c;--secondary-focus: rgba(115,130,140,.25);--secondary-inverse: #fff;--contrast: #edf0f3;--contrast-hover: #fff;--contrast-focus: rgba(115,130,140,.25);--contrast-inverse: #000;--mark-background-color: #d1c284;--mark-color: #11191f;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: #11191f;--form-element-border-color: #374956;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: var(--form-element-background-color);--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #2c3d49;--form-element-disabled-border-color: #415462;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #b71c1c;--form-element-invalid-active-border-color: #c62828;--form-element-invalid-focus-color: rgba(198,40,40,.25);--form-element-valid-border-color: #2e7d32;--form-element-valid-active-border-color: #388e3c;--form-element-valid-focus-color: rgba(56,142,60,.25);--switch-background-color: #374956;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #24333e;--range-active-border-color: #2c3d49;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: rgba(115,130,140,.05);--code-background-color: #18232c;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #a65980;--code-property-color: #599fa6;--code-value-color: #8c8473;--code-comment-color: #4d606d;--accordion-border-color: var(--muted-border-color);--accordion-active-summary-color: var(--primary);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: #141e26;--card-border-color: var(--card-background-color);--card-box-shadow: .0145rem .029rem .174rem rgba(0,0,0,.01698), .0335rem .067rem .402rem rgba(0,0,0,.024), .0625rem .125rem .75rem rgba(0,0,0,.03), .1125rem .225rem 1.35rem rgba(0,0,0,.036), .2085rem .417rem 2.502rem rgba(0,0,0,.04302), .5rem 1rem 6rem rgba(0,0,0,.06), 0 0 0 0.0625rem rgba(0,0,0,.015);--card-sectionning-background-color: #18232c;--dropdown-background-color: #1b2832;--dropdown-border-color: #24333e;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: rgba(36,51,62,.75);--modal-overlay-background-color: rgba(36,51,62,.8);--progress-background-color: #24333e;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(162, 175, 185)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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(0, 0, 0)' 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");--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(115, 130, 140)' stroke-width='4' 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");--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(162, 175, 185)' 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");--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(183, 28, 28)' 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");--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");--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(162, 175, 185)' stroke-width='2' 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");--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(162, 175, 185)' 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");--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(46, 125, 50)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:dark}}[data-theme=dark]{--background-color: #11191f;--color: #bbc6ce;--h1-color: #edf0f3;--h2-color: #e1e6eb;--h3-color: #d5dce2;--h4-color: #c8d1d8;--h5-color: #bbc6ce;--h6-color: #afbbc4;--muted-color: #73828c;--muted-border-color: #1f2d38;--primary: #1095c1;--primary-hover: #1ab3e6;--primary-focus: rgba(16,149,193,.25);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #73828c;--secondary-focus: rgba(115,130,140,.25);--secondary-inverse: #fff;--contrast: #edf0f3;--contrast-hover: #fff;--contrast-focus: rgba(115,130,140,.25);--contrast-inverse: #000;--mark-background-color: #d1c284;--mark-color: #11191f;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: #11191f;--form-element-border-color: #374956;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: var(--form-element-background-color);--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #2c3d49;--form-element-disabled-border-color: #415462;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #b71c1c;--form-element-invalid-active-border-color: #c62828;--form-element-invalid-focus-color: rgba(198,40,40,.25);--form-element-valid-border-color: #2e7d32;--form-element-valid-active-border-color: #388e3c;--form-element-valid-focus-color: rgba(56,142,60,.25);--switch-background-color: #374956;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #24333e;--range-active-border-color: #2c3d49;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: rgba(115,130,140,.05);--code-background-color: #18232c;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #a65980;--code-property-color: #599fa6;--code-value-color: #8c8473;--code-comment-color: #4d606d;--accordion-border-color: var(--muted-border-color);--accordion-active-summary-color: var(--primary);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: #141e26;--card-border-color: var(--card-background-color);--card-box-shadow: .0145rem .029rem .174rem rgba(0,0,0,.01698), .0335rem .067rem .402rem rgba(0,0,0,.024), .0625rem .125rem .75rem rgba(0,0,0,.03), .1125rem .225rem 1.35rem rgba(0,0,0,.036), .2085rem .417rem 2.502rem rgba(0,0,0,.04302), .5rem 1rem 6rem rgba(0,0,0,.06), 0 0 0 0.0625rem rgba(0,0,0,.015);--card-sectionning-background-color: #18232c;--dropdown-background-color: #1b2832;--dropdown-border-color: #24333e;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: rgba(36,51,62,.75);--modal-overlay-background-color: rgba(36,51,62,.8);--progress-background-color: #24333e;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(162, 175, 185)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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(0, 0, 0)' 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");--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(115, 130, 140)' stroke-width='4' 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");--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(162, 175, 185)' 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");--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(183, 28, 28)' 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");--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");--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(162, 175, 185)' stroke-width='2' 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");--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(162, 175, 185)' 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");--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(46, 125, 50)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:dark}progress,[type=checkbox],[type=radio],[type=range]{accent-color:var(--primary)}*,*::before,*::after{box-sizing:border-box;background-repeat:no-repeat}::before,::after{text-decoration:inherit;vertical-align:inherit}:where(:root){-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--background-color);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);line-height:var(--line-height);font-family:var(--font-family);text-rendering:optimizeLegibility;overflow-wrap:break-word;cursor:default;tab-size:4}main{display:block}body{width:100%;margin:0}body>header,body>main,body>footer{width:100%;margin-right:auto;margin-left:auto;padding:var(--block-spacing-vertical) 0}.container,.container-fluid{width:100%;margin-right:auto;margin-left:auto;padding-right:var(--spacing);padding-left:var(--spacing)}@media (min-width: 576px){.container{max-width:510px;padding-right:0;padding-left:0}}@media (min-width: 768px){.container{max-width:700px}}@media (min-width: 992px){.container{max-width:920px}}@media (min-width: 1200px){.container{max-width:1130px}}section{margin-bottom:var(--block-spacing-vertical)}.grid{grid-column-gap:var(--grid-spacing-horizontal);grid-row-gap:var(--grid-spacing-vertical);display:grid;grid-template-columns:1fr;margin:0}@media (min-width: 992px){.grid{grid-template-columns:repeat(auto-fit, minmax(0%, 1fr))}}.grid>*{min-width:0}figure{display:block;margin:0;padding:0;overflow-x:auto}figure figcaption{padding:calc(var(--spacing)*.5) 0;color:var(--muted-color)}b,strong{font-weight:bolder}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,figure,form,ol,p,pre,table,ul{margin-top:0;margin-bottom:var(--typography-spacing-vertical);color:var(--color);font-style:normal;font-weight:var(--font-weight);font-size:var(--font-size)}a,[role=link]{--color: var(--primary);--background-color: transparent;outline:none;background-color:var(--background-color);color:var(--color);text-decoration:var(--text-decoration)}a:is([aria-current],:hover,:active,:focus),[role=link]:is([aria-current],:hover,:active,:focus){--color: var(--primary-hover);--text-decoration: underline}a:focus,[role=link]:focus{--background-color: var(--primary-focus)}a.secondary,[role=link].secondary{--color: var(--secondary)}a.secondary:is([aria-current],:hover,:active,:focus),[role=link].secondary:is([aria-current],:hover,:active,:focus){--color: var(--secondary-hover)}a.secondary:focus,[role=link].secondary:focus{--background-color: var(--secondary-focus)}a.contrast,[role=link].contrast{--color: var(--contrast)}a.contrast:is([aria-current],:hover,:active,:focus),[role=link].contrast:is([aria-current],:hover,:active,:focus){--color: var(--contrast-hover)}a.contrast:focus,[role=link].contrast:focus{--background-color: var(--contrast-focus)}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--typography-spacing-vertical);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);font-family:var(--font-family)}h1{--color: var(--h1-color)}h2{--color: var(--h2-color)}h3{--color: var(--h3-color)}h4{--color: var(--h4-color)}h5{--color: var(--h5-color)}h6{--color: var(--h6-color)}:where(address,blockquote,dl,figure,form,ol,p,pre,table,ul)~:is(h1,h2,h3,h4,h5,h6){margin-top:var(--typography-spacing-vertical)}hgroup,.headings{margin-bottom:var(--typography-spacing-vertical)}hgroup>*,.headings>*{margin-bottom:0}hgroup>*:last-child,.headings>*:last-child{--color: var(--muted-color);--font-weight: unset;font-size:1rem;font-family:unset}p{margin-bottom:var(--typography-spacing-vertical)}small{font-size:var(--font-size)}:where(dl,ol,ul){padding-right:0;padding-left:var(--spacing);padding-inline-start:var(--spacing);padding-inline-end:0}:where(dl,ol,ul) li{margin-bottom:calc(var(--typography-spacing-vertical)*.25)}:where(dl,ol,ul) :is(dl,ol,ul){margin:0;margin-top:calc(var(--typography-spacing-vertical)*.25)}ul li{list-style:square}mark{padding:.125rem .25rem;background-color:var(--mark-background-color);color:var(--mark-color);vertical-align:baseline}blockquote{display:block;margin:var(--typography-spacing-vertical) 0;padding:var(--spacing);border-right:none;border-left:.25rem solid var(--blockquote-border-color);border-inline-start:.25rem solid var(--blockquote-border-color);border-inline-end:none}blockquote footer{margin-top:calc(var(--typography-spacing-vertical)*.5);color:var(--blockquote-footer-color)}abbr[title]{border-bottom:1px dotted;text-decoration:none;cursor:help}ins{color:var(--ins-color);text-decoration:none}del{color:var(--del-color)}::selection{background-color:var(--primary-focus)}:where(audio,canvas,iframe,img,svg,video){vertical-align:middle}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}:where(iframe){border-style:none}img{max-width:100%;height:auto;border-style:none}:where(svg:not([fill])){fill:currentColor}svg:not(:root){overflow:hidden}button{margin:0;overflow:visible;font-family:inherit;text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button{display:block;width:100%;margin-bottom:var(--spacing)}[role=button]{display:inline-block;text-decoration:none}button,input[type=submit],input[type=button],input[type=reset],[role=button]{--background-color: var(--primary);--border-color: var(--primary);--color: var(--primary-inverse);--box-shadow: var(--button-box-shadow, 0 0 0 rgba(0, 0, 0, 0));padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer}button:is([aria-current],:hover,:active,:focus),input[type=submit]:is([aria-current],:hover,:active,:focus),input[type=button]:is([aria-current],:hover,:active,:focus),input[type=reset]:is([aria-current],:hover,:active,:focus),[role=button]:is([aria-current],:hover,:active,:focus){--background-color: var(--primary-hover);--border-color: var(--primary-hover);--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));--color: var(--primary-inverse)}button:focus,input[type=submit]:focus,input[type=button]:focus,input[type=reset]:focus,[role=button]:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--primary-focus)}:is(button,input[type=submit],input[type=button],[role=button]).secondary,input[type=reset]{--background-color: var(--secondary);--border-color: var(--secondary);--color: var(--secondary-inverse);cursor:pointer}:is(button,input[type=submit],input[type=button],[role=button]).secondary:is([aria-current],:hover,:active,:focus),input[type=reset]:is([aria-current],:hover,:active,:focus){--background-color: var(--secondary-hover);--border-color: var(--secondary-hover);--color: var(--secondary-inverse)}:is(button,input[type=submit],input[type=button],[role=button]).secondary:focus,input[type=reset]:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--secondary-focus)}:is(button,input[type=submit],input[type=button],[role=button]).contrast{--background-color: var(--contrast);--border-color: var(--contrast);--color: var(--contrast-inverse)}:is(button,input[type=submit],input[type=button],[role=button]).contrast:is([aria-current],:hover,:active,:focus){--background-color: var(--contrast-hover);--border-color: var(--contrast-hover);--color: var(--contrast-inverse)}:is(button,input[type=submit],input[type=button],[role=button]).contrast:focus{--box-shadow: var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)), 0 0 0 var(--outline-width) var(--contrast-focus)}:is(button,input[type=submit],input[type=button],[role=button]).outline,input[type=reset].outline{--background-color: transparent;--color: var(--primary)}:is(button,input[type=submit],input[type=button],[role=button]).outline:is([aria-current],:hover,:active,:focus),input[type=reset].outline:is([aria-current],:hover,:active,:focus){--background-color: transparent;--color: var(--primary-hover)}:is(button,input[type=submit],input[type=button],[role=button]).outline.secondary,input[type=reset].outline{--color: var(--secondary)}:is(button,input[type=submit],input[type=button],[role=button]).outline.secondary:is([aria-current],:hover,:active,:focus),input[type=reset].outline:is([aria-current],:hover,:active,:focus){--color: var(--secondary-hover)}:is(button,input[type=submit],input[type=button],[role=button]).outline.contrast{--color: var(--contrast)}:is(button,input[type=submit],input[type=button],[role=button]).outline.contrast:is([aria-current],:hover,:active,:focus){--color: var(--contrast-hover)}:where(button,[type=submit],[type=button],[type=reset],[role=button])[disabled],:where(fieldset[disabled]) :is(button,[type=submit],[type=button],[type=reset],[role=button]),a[role=button]:not([href]){opacity:.5;pointer-events:none}input,optgroup,select,textarea{margin:0;font-size:1rem;line-height:var(--line-height);font-family:inherit;letter-spacing:inherit}input{overflow:visible}select{text-transform:none}legend{max-width:100%;padding:0;color:inherit;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{padding:0}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::-moz-focus-inner{padding:0;border-style:none}:-moz-focusring{outline:none}:-moz-ui-invalid{box-shadow:none}::-ms-expand{display:none}[type=file],[type=range]{padding:0;border-width:0}input:not([type=checkbox],[type=radio],[type=range]){height:calc(1rem*var(--line-height) + var(--form-element-spacing-vertical)*2 + var(--border-width)*2)}fieldset{margin:0;margin-bottom:var(--spacing);padding:0;border:0}label,fieldset legend{display:block;margin-bottom:calc(var(--spacing)*.25);font-weight:var(--form-label-font-weight, var(--font-weight))}input:not([type=checkbox],[type=radio]),select,textarea{width:100%}input:not([type=checkbox],[type=radio],[type=range],[type=file]),select,textarea{appearance:none;padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal)}input,select,textarea{--background-color: var(--form-element-background-color);--border-color: var(--form-element-border-color);--color: var(--form-element-color);--box-shadow: none;border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:none;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight)}input:not([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[readonly]):is(:active,:focus),:where(select,textarea):is(:active,:focus){--background-color: var(--form-element-active-background-color)}input:not([type=submit],[type=button],[type=reset],[role=switch],[readonly]):is(:active,:focus),:where(select,textarea):is(:active,:focus){--border-color: var(--form-element-active-border-color)}input:not([type=submit],[type=button],[type=reset],[type=range],[type=file],[readonly]):focus,select:focus,textarea:focus{--box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color)}input:not([type=submit],[type=button],[type=reset])[disabled],select[disabled],textarea[disabled],:where(fieldset[disabled]) :is(input:not([type=submit],[type=button],[type=reset]),select,textarea){--background-color: var(--form-element-disabled-background-color);--border-color: var(--form-element-disabled-border-color);opacity:var(--form-element-disabled-opacity);pointer-events:none}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid]{padding-right:calc(var(--form-element-spacing-horizontal) + 1.5rem);padding-left:var(--form-element-spacing-horizontal);padding-inline-start:var(--form-element-spacing-horizontal);padding-inline-end:calc(var(--form-element-spacing-horizontal) + 1.5rem);background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid=false]{background-image:var(--icon-valid)}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid=true]{background-image:var(--icon-invalid)}:where(input,select,textarea)[aria-invalid=false]{--border-color: var(--form-element-valid-border-color)}:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus){--border-color: var(--form-element-valid-active-border-color);--box-shadow: 0 0 0 var(--outline-width) var(--form-element-valid-focus-color)}:where(input,select,textarea)[aria-invalid=true]{--border-color: var(--form-element-invalid-border-color)}:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus){--border-color: var(--form-element-invalid-active-border-color);--box-shadow: 0 0 0 var(--outline-width) var(--form-element-invalid-focus-color)}[dir=rtl] :where(input,select,textarea):not([type=checkbox],[type=radio]):is([aria-invalid],[aria-invalid=true],[aria-invalid=false]){background-position:center left .75rem}input::placeholder,input::-webkit-input-placeholder,textarea::placeholder,textarea::-webkit-input-placeholder,select:invalid{color:var(--form-element-placeholder-color);opacity:1}input:not([type=checkbox],[type=radio]),select,textarea{margin-bottom:var(--spacing)}select::-ms-expand{border:0;background-color:rgba(0,0,0,0)}select:not([multiple],[size]){padding-right:calc(var(--form-element-spacing-horizontal) + 1.5rem);padding-left:var(--form-element-spacing-horizontal);padding-inline-start:var(--form-element-spacing-horizontal);padding-inline-end:calc(var(--form-element-spacing-horizontal) + 1.5rem);background-image:var(--icon-chevron);background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}[dir=rtl] select:not([multiple],[size]){background-position:center left .75rem}:where(input,select,textarea,.grid)+small{display:block;width:100%;margin-top:calc(var(--spacing)*-.75);margin-bottom:var(--spacing);color:var(--muted-color)}label>:where(input,select,textarea){margin-top:calc(var(--spacing)*.25)}:where(table){width:100%;border-collapse:collapse;border-spacing:0;text-indent:0}th,td{padding:calc(var(--spacing)/2) var(--spacing);border-bottom:var(--border-width) solid var(--table-border-color);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);text-align:left;text-align:start}tfoot th,tfoot td{border-top:var(--border-width) solid var(--table-border-color);border-bottom:0}table[role=grid] tbody tr:nth-child(odd){background-color:var(--table-row-stripped-background-color)}[aria-controls]{cursor:pointer}[aria-disabled=true],[disabled]{cursor:not-allowed}[aria-hidden=false][hidden]{display:initial}[aria-hidden=false][hidden]:not(:focus){clip:rect(0, 0, 0, 0);position:absolute}a,area,button,input,label,select,summary,textarea,[tabindex]{-ms-touch-action:manipulation}[dir=rtl]{direction:rtl} |
6134 | \ No newline at end of file |
6135 | diff --git a/www/public/pico/themes/default.css b/www/public/pico/themes/default.css |
6136 | deleted file mode 100644 |
6137 | index 64d01fb..0000000 |
6138 | --- a/www/public/pico/themes/default.css |
6139 | +++ /dev/null |
6140 | @@ -1 +0,0 @@ |
6141 | - :root{--font-family: system-ui, -apple-system, "Segoe UI", "Roboto", "Ubuntu", "Cantarell", "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--line-height: 1.5;--font-weight: 400;--font-size: 16px;--border-radius: 0.25rem;--border-width: 1px;--outline-width: 3px;--spacing: 1rem;--typography-spacing-vertical: 1.5rem;--block-spacing-vertical: calc(var(--spacing) * 2);--block-spacing-horizontal: var(--spacing);--grid-spacing-vertical: 0;--grid-spacing-horizontal: var(--spacing);--form-element-spacing-vertical: 0.75rem;--form-element-spacing-horizontal: 1rem;--nav-element-spacing-vertical: 1rem;--nav-element-spacing-horizontal: 0.5rem;--nav-link-spacing-vertical: 0.5rem;--nav-link-spacing-horizontal: 0.5rem;--form-label-font-weight: var(--font-weight);--transition: 0.2s ease-in-out;--modal-overlay-backdrop-filter: blur(0.25rem)}@media (min-width: 576px){:root{--font-size: 17px}}@media (min-width: 768px){:root{--font-size: 18px}}@media (min-width: 992px){:root{--font-size: 19px}}@media (min-width: 1200px){:root{--font-size: 20px}}@media (min-width: 576px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 2.5)}}@media (min-width: 768px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 3)}}@media (min-width: 992px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 3.5)}}@media (min-width: 1200px){body>header,body>main,body>footer,section{--block-spacing-vertical: calc(var(--spacing) * 4)}}@media (min-width: 576px){article{--block-spacing-horizontal: calc(var(--spacing) * 1.25)}}@media (min-width: 768px){article{--block-spacing-horizontal: calc(var(--spacing) * 1.5)}}@media (min-width: 992px){article{--block-spacing-horizontal: calc(var(--spacing) * 1.75)}}@media (min-width: 1200px){article{--block-spacing-horizontal: calc(var(--spacing) * 2)}}dialog>article{--block-spacing-vertical: calc(var(--spacing) * 2);--block-spacing-horizontal: var(--spacing)}@media (min-width: 576px){dialog>article{--block-spacing-vertical: calc(var(--spacing) * 2.5);--block-spacing-horizontal: calc(var(--spacing) * 1.25)}}@media (min-width: 768px){dialog>article{--block-spacing-vertical: calc(var(--spacing) * 3);--block-spacing-horizontal: calc(var(--spacing) * 1.5)}}a{--text-decoration: none}a.secondary,a.contrast{--text-decoration: underline}small{--font-size: 0.875em}h1,h2,h3,h4,h5,h6{--font-weight: 700}h1{--font-size: 2rem;--typography-spacing-vertical: 3rem}h2{--font-size: 1.75rem;--typography-spacing-vertical: 2.625rem}h3{--font-size: 1.5rem;--typography-spacing-vertical: 2.25rem}h4{--font-size: 1.25rem;--typography-spacing-vertical: 1.874rem}h5{--font-size: 1.125rem;--typography-spacing-vertical: 1.6875rem}[type=checkbox],[type=radio]{--border-width: 2px}[type=checkbox][role=switch]{--border-width: 3px}thead th,thead td,tfoot th,tfoot td{--border-width: 3px}:not(thead,tfoot)>*>td{--font-size: 0.875em}pre,code,kbd,samp{--font-family: "Menlo", "Consolas", "Roboto Mono", "Ubuntu Monospace", "Noto Mono", "Oxygen Mono", "Liberation Mono", monospace, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}kbd{--font-weight: bolder}[data-theme=light],:root:not([data-theme=dark]){--background-color: #fff;--color: #415462;--h1-color: #1b2832;--h2-color: #24333e;--h3-color: #2c3d49;--h4-color: #374956;--h5-color: #415462;--h6-color: #4d606d;--muted-color: #73828c;--muted-border-color: #edf0f3;--primary: #1095c1;--primary-hover: #08769b;--primary-focus: rgba(16,149,193,.125);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #415462;--secondary-focus: rgba(89,107,120,.125);--secondary-inverse: #fff;--contrast: #1b2832;--contrast-hover: #000;--contrast-focus: rgba(89,107,120,.125);--contrast-inverse: #fff;--mark-background-color: #fff2ca;--mark-color: #543a26;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: transparent;--form-element-border-color: #a2afb9;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: transparent;--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #d5dce2;--form-element-disabled-border-color: #a2afb9;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #c62828;--form-element-invalid-active-border-color: #d32f2f;--form-element-invalid-focus-color: rgba(211,47,47,.125);--form-element-valid-border-color: #388e3c;--form-element-valid-active-border-color: #43a047;--form-element-valid-focus-color: rgba(67,160,71,.125);--switch-background-color: #bbc6ce;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #d5dce2;--range-active-border-color: #bbc6ce;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: #f6f8f9;--code-background-color: #edf0f3;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #b34d80;--code-property-color: #3d888f;--code-value-color: #986;--code-comment-color: #a2afb9;--accordion-border-color: var(--muted-border-color);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: var(--background-color);--card-border-color: var(--muted-border-color);--card-box-shadow: .0145rem .029rem .174rem rgba(27,40,50,.01698), .0335rem .067rem .402rem rgba(27,40,50,.024), .0625rem .125rem .75rem rgba(27,40,50,.03), .1125rem .225rem 1.35rem rgba(27,40,50,.036), .2085rem .417rem 2.502rem rgba(27,40,50,.04302), .5rem 1rem 6rem rgba(27,40,50,.06), 0 0 0 0.0625rem rgba(27,40,50,.015);--card-sectionning-background-color: #fbfbfc;--dropdown-background-color: #fbfbfc;--dropdown-border-color: #e1e6eb;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: #edf0f3;--modal-overlay-background-color: rgba(213,220,226,.7);--progress-background-color: #d5dce2;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(65, 84, 98)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--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(115, 130, 140)' stroke-width='4' 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");--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(65, 84, 98)' 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");--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(198, 40, 40)' 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");--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");--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(65, 84, 98)' stroke-width='2' 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");--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(65, 84, 98)' 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");--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(56, 142, 60)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:light}@media only screen and (prefers-color-scheme: dark){:root:not([data-theme]){--background-color: #11191f;--color: #bbc6ce;--h1-color: #edf0f3;--h2-color: #e1e6eb;--h3-color: #d5dce2;--h4-color: #c8d1d8;--h5-color: #bbc6ce;--h6-color: #afbbc4;--muted-color: #73828c;--muted-border-color: #1f2d38;--primary: #1095c1;--primary-hover: #1ab3e6;--primary-focus: rgba(16,149,193,.25);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #73828c;--secondary-focus: rgba(115,130,140,.25);--secondary-inverse: #fff;--contrast: #edf0f3;--contrast-hover: #fff;--contrast-focus: rgba(115,130,140,.25);--contrast-inverse: #000;--mark-background-color: #d1c284;--mark-color: #11191f;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: #11191f;--form-element-border-color: #374956;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: var(--form-element-background-color);--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #2c3d49;--form-element-disabled-border-color: #415462;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #b71c1c;--form-element-invalid-active-border-color: #c62828;--form-element-invalid-focus-color: rgba(198,40,40,.25);--form-element-valid-border-color: #2e7d32;--form-element-valid-active-border-color: #388e3c;--form-element-valid-focus-color: rgba(56,142,60,.25);--switch-background-color: #374956;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #24333e;--range-active-border-color: #2c3d49;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: rgba(115,130,140,.05);--code-background-color: #18232c;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #a65980;--code-property-color: #599fa6;--code-value-color: #8c8473;--code-comment-color: #4d606d;--accordion-border-color: var(--muted-border-color);--accordion-active-summary-color: var(--primary);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: #141e26;--card-border-color: var(--card-background-color);--card-box-shadow: .0145rem .029rem .174rem rgba(0,0,0,.01698), .0335rem .067rem .402rem rgba(0,0,0,.024), .0625rem .125rem .75rem rgba(0,0,0,.03), .1125rem .225rem 1.35rem rgba(0,0,0,.036), .2085rem .417rem 2.502rem rgba(0,0,0,.04302), .5rem 1rem 6rem rgba(0,0,0,.06), 0 0 0 0.0625rem rgba(0,0,0,.015);--card-sectionning-background-color: #18232c;--dropdown-background-color: #1b2832;--dropdown-border-color: #24333e;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: rgba(36,51,62,.75);--modal-overlay-background-color: rgba(36,51,62,.8);--progress-background-color: #24333e;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(162, 175, 185)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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(0, 0, 0)' 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");--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(115, 130, 140)' stroke-width='4' 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");--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(162, 175, 185)' 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");--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(183, 28, 28)' 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");--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");--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(162, 175, 185)' stroke-width='2' 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");--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(162, 175, 185)' 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");--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(46, 125, 50)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:dark}}[data-theme=dark]{--background-color: #11191f;--color: #bbc6ce;--h1-color: #edf0f3;--h2-color: #e1e6eb;--h3-color: #d5dce2;--h4-color: #c8d1d8;--h5-color: #bbc6ce;--h6-color: #afbbc4;--muted-color: #73828c;--muted-border-color: #1f2d38;--primary: #1095c1;--primary-hover: #1ab3e6;--primary-focus: rgba(16,149,193,.25);--primary-inverse: #fff;--secondary: #596b78;--secondary-hover: #73828c;--secondary-focus: rgba(115,130,140,.25);--secondary-inverse: #fff;--contrast: #edf0f3;--contrast-hover: #fff;--contrast-focus: rgba(115,130,140,.25);--contrast-inverse: #000;--mark-background-color: #d1c284;--mark-color: #11191f;--ins-color: #388e3c;--del-color: #c62828;--blockquote-border-color: var(--muted-border-color);--blockquote-footer-color: var(--muted-color);--button-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0);--form-element-background-color: #11191f;--form-element-border-color: #374956;--form-element-color: var(--color);--form-element-placeholder-color: var(--muted-color);--form-element-active-background-color: var(--form-element-background-color);--form-element-active-border-color: var(--primary);--form-element-focus-color: var(--primary-focus);--form-element-disabled-background-color: #2c3d49;--form-element-disabled-border-color: #415462;--form-element-disabled-opacity: 0.5;--form-element-invalid-border-color: #b71c1c;--form-element-invalid-active-border-color: #c62828;--form-element-invalid-focus-color: rgba(198,40,40,.25);--form-element-valid-border-color: #2e7d32;--form-element-valid-active-border-color: #388e3c;--form-element-valid-focus-color: rgba(56,142,60,.25);--switch-background-color: #374956;--switch-color: var(--primary-inverse);--switch-checked-background-color: var(--primary);--range-border-color: #24333e;--range-active-border-color: #2c3d49;--range-thumb-border-color: var(--background-color);--range-thumb-color: var(--secondary);--range-thumb-hover-color: var(--secondary-hover);--range-thumb-active-color: var(--primary);--table-border-color: var(--muted-border-color);--table-row-stripped-background-color: rgba(115,130,140,.05);--code-background-color: #18232c;--code-color: var(--muted-color);--code-kbd-background-color: var(--contrast);--code-kbd-color: var(--contrast-inverse);--code-tag-color: #a65980;--code-property-color: #599fa6;--code-value-color: #8c8473;--code-comment-color: #4d606d;--accordion-border-color: var(--muted-border-color);--accordion-active-summary-color: var(--primary);--accordion-close-summary-color: var(--color);--accordion-open-summary-color: var(--muted-color);--card-background-color: #141e26;--card-border-color: var(--card-background-color);--card-box-shadow: .0145rem .029rem .174rem rgba(0,0,0,.01698), .0335rem .067rem .402rem rgba(0,0,0,.024), .0625rem .125rem .75rem rgba(0,0,0,.03), .1125rem .225rem 1.35rem rgba(0,0,0,.036), .2085rem .417rem 2.502rem rgba(0,0,0,.04302), .5rem 1rem 6rem rgba(0,0,0,.06), 0 0 0 0.0625rem rgba(0,0,0,.015);--card-sectionning-background-color: #18232c;--dropdown-background-color: #1b2832;--dropdown-border-color: #24333e;--dropdown-box-shadow: var(--card-box-shadow);--dropdown-color: var(--color);--dropdown-hover-background-color: rgba(36,51,62,.75);--modal-overlay-background-color: rgba(36,51,62,.8);--progress-background-color: #24333e;--progress-color: var(--primary);--loading-spinner-opacity: 0.5;--tooltip-background-color: var(--contrast);--tooltip-color: var(--contrast-inverse);--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");--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(162, 175, 185)' 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");--icon-chevron-button: 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='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse: 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(0, 0, 0)' 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");--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(115, 130, 140)' stroke-width='4' 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");--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(162, 175, 185)' 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");--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(183, 28, 28)' 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");--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");--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(162, 175, 185)' stroke-width='2' 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");--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(162, 175, 185)' 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");--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(46, 125, 50)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:dark}progress,[type=checkbox],[type=radio],[type=range]{accent-color:var(--primary)} |
6142 | \ No newline at end of file |
6143 | diff --git a/www/public/sitemap.xml b/www/public/sitemap.xml |
6144 | index 52aba1c..7d45076 100644 |
6145 | --- a/www/public/sitemap.xml |
6146 | +++ b/www/public/sitemap.xml |
6147 | @@ -27,4 +27,7 @@ |
6148 | <url> |
6149 | <loc>https://ayllu-forge.org/docs/mail/</loc> |
6150 | </url> |
6151 | + <url> |
6152 | + <loc>https://ayllu-forge.org/docs/themes/</loc> |
6153 | + </url> |
6154 | </urlset> |
6155 | diff --git a/www/sass/main.scss b/www/sass/main.scss |
6156 | index d3f5359..bc2df20 100644 |
6157 | --- a/www/sass/main.scss |
6158 | +++ b/www/sass/main.scss |
6159 | @@ -1,121 +1,53 @@ |
6160 | - @import "pico/pico.slim.scss"; |
6161 | - @import "pico/components/_nav.scss"; |
6162 | + @use "../../node_modules/open-props/normalize.min.css"; |
6163 | + @use "../../node_modules/open-props/open-props.min.css"; |
6164 | |
6165 | - p > code { |
6166 | - font-weight: bold; |
6167 | - text-decoration-line: underline; |
6168 | - } |
6169 | - |
6170 | - pre { |
6171 | - padding: 1rem; |
6172 | - overflow: scroll; |
6173 | - background-color: #e7e7e7; |
6174 | - } |
6175 | - |
6176 | - // The line numbers already provide some kind of left/right padding |
6177 | - pre[data-linenos] { |
6178 | - padding: 1rem 0; |
6179 | - } |
6180 | - |
6181 | - pre table td { |
6182 | - padding: 0; |
6183 | - } |
6184 | - |
6185 | - // The line number cells |
6186 | - pre table td:nth-of-type(1) { |
6187 | - text-align: center; |
6188 | - user-select: none; |
6189 | - } |
6190 | - |
6191 | - pre mark { |
6192 | - // If you want your highlights to take the full width. |
6193 | - display: block; |
6194 | - // The default background colour of a mark is bright yellow |
6195 | - background-color: rgba(254, 252, 232, 0.9); |
6196 | - } |
6197 | - |
6198 | - pre table { |
6199 | - width: 100%; |
6200 | - border-collapse: collapse; |
6201 | - } |
6202 | - |
6203 | - .night { |
6204 | - display: none; |
6205 | - } |
6206 | - |
6207 | - .alert { |
6208 | - padding: 20px; |
6209 | - background-color: #f44336; |
6210 | - color: white; |
6211 | - margin-bottom: 15px; |
6212 | - text-align: center; |
6213 | - } |
6214 | - |
6215 | - .warning { |
6216 | - padding: 20px; |
6217 | - background-color: #ff9800; |
6218 | - color: white; |
6219 | - margin-bottom: 15px; |
6220 | - text-align: center; |
6221 | - } |
6222 | - |
6223 | - .info{ |
6224 | - padding: 20px; |
6225 | - background-color: #2196F3; |
6226 | - color: white; |
6227 | - margin-bottom: 15px; |
6228 | - text-align: center; |
6229 | - } |
6230 | - |
6231 | - .info > a { |
6232 | - color: yellow; |
6233 | - } |
6234 | - |
6235 | - h1, h2, h3, h4, h5, h6 { |
6236 | - margin-bottom: .5em; |
6237 | + :root { |
6238 | + font-size: 80%; |
6239 | } |
6240 | |
6241 | - a > button { |
6242 | - color: white; |
6243 | - text-decoration: underline; |
6244 | + a:visited { |
6245 | + color: var(--link); |
6246 | } |
6247 | |
6248 | - figure { |
6249 | - overflow: clip; |
6250 | + li.active { |
6251 | + color: var(--text-2); |
6252 | + text-shadow: |
6253 | + 0 0 10px var(--camo-5), |
6254 | + 0 0 25px var(--camo-7); |
6255 | } |
6256 | |
6257 | - .blurb > button { |
6258 | - margin-top: 20px; |
6259 | + code { |
6260 | + background: none; |
6261 | } |
6262 | |
6263 | - .blurb { |
6264 | - @if map-get($breakpoints, "lg") { |
6265 | - @media (min-width: map-get($breakpoints, "lg")) { |
6266 | - } |
6267 | - } |
6268 | + pre { |
6269 | + padding: 1em; |
6270 | + color: var(--text-2); |
6271 | + text-shadow: |
6272 | + 0 0 10px var(--camo-3), |
6273 | + 0 0 25px var(--camo-5); |
6274 | } |
6275 | |
6276 | - img.screenshot { |
6277 | - border: double 3px; |
6278 | - border-radius: 4px; |
6279 | - max-width: 400px; |
6280 | - margin: 1em; |
6281 | - @if map-get($breakpoints, "lg") { |
6282 | - @media (min-width: map-get($breakpoints, "lg")) { |
6283 | - float: right; |
6284 | - } |
6285 | - } |
6286 | + div.doc-content > h1,h2,h3,h4,h5 { |
6287 | + font-size: var(--font-size-5); |
6288 | } |
6289 | |
6290 | img.logo { |
6291 | max-width: 72px; |
6292 | } |
6293 | |
6294 | - html, body { |
6295 | + html, |
6296 | + body { |
6297 | box-sizing: border-box; |
6298 | height: 100%; |
6299 | } |
6300 | |
6301 | + .content { |
6302 | + display: flex; |
6303 | + justify-content: center; |
6304 | + align-items: center; |
6305 | + } |
6306 | + |
6307 | body > footer { |
6308 | margin: 0px; |
6309 | padding: 0px; |
6310 | @@ -139,90 +71,91 @@ body > footer { |
6311 | |
6312 | footer { |
6313 | text-align: center; |
6314 | - font-size: .8em; |
6315 | + font-size: 0.8em; |
6316 | } |
6317 | |
6318 | - .screenshot { |
6319 | - text-align: center; |
6320 | + article { |
6321 | + padding: 0.5em; |
6322 | } |
6323 | |
6324 | - .active { |
6325 | - text-decoration: underline; |
6326 | + nav { |
6327 | + display: flex; |
6328 | + justify-content: space-between; |
6329 | + align-items: center; |
6330 | + background-color: var(--surface-1); |
6331 | + padding: 10px; |
6332 | + color: var(--text-1); |
6333 | + box-shadow: var(--shadow-3); |
6334 | } |
6335 | |
6336 | - .documentation { |
6337 | + nav.subnav { |
6338 | + background-color: var(--surface-2); |
6339 | + color: var(--text-1); |
6340 | + box-shadow: var(--shadow-5); |
6341 | + } |
6342 | + |
6343 | + nav .logo { |
6344 | + font-size: 20px; |
6345 | + font-weight: bold; |
6346 | + } |
6347 | + |
6348 | + nav ul { |
6349 | + list-style-type: none; |
6350 | + margin: 0; |
6351 | + padding: 0; |
6352 | display: flex; |
6353 | + } |
6354 | |
6355 | - @if map-get($breakpoints, "lg") { |
6356 | - @media (max-width: map-get($breakpoints, "lg")) { |
6357 | - flex-wrap: wrap; |
6358 | - } |
6359 | - } |
6360 | + nav ul li { |
6361 | + margin-left: 20px; |
6362 | + } |
6363 | + |
6364 | + nav ul li a { |
6365 | + color: var(--link); |
6366 | + text-decoration: none; |
6367 | + } |
6368 | |
6369 | + .documentation { |
6370 | + margin: 1em; |
6371 | + @media (width > 768px) { |
6372 | + display: flex; |
6373 | + } |
6374 | .doc-content { |
6375 | max-width: 100%; |
6376 | } |
6377 | - |
6378 | .side-panel { |
6379 | margin-right: 3em; |
6380 | + margin-bottom: 1em; |
6381 | min-width: 200px; |
6382 | - |
6383 | ul > li { |
6384 | list-style: none; |
6385 | font-weight: bold; |
6386 | font-size: 1.2em; |
6387 | } |
6388 | } |
6389 | - |
6390 | } |
6391 | |
6392 | - .home-header { |
6393 | - display: grid; |
6394 | - grid-template-columns: 50% 40%; |
6395 | - grid-column-gap: 20px; |
6396 | - grid-row-gap: 20px; |
6397 | - justify-items: stretch; |
6398 | - align-items: stretch; |
6399 | - |
6400 | - @if map-get($breakpoints, "lg") { |
6401 | - @media (max-width: map-get($breakpoints, "lg")) { |
6402 | - grid-template-columns: none; |
6403 | - } |
6404 | - } |
6405 | + h1, |
6406 | + h2, |
6407 | + h3, |
6408 | + h4, |
6409 | + h5 { |
6410 | + max-inline-size: none; |
6411 | + margin-top: .5em; |
6412 | + margin-bottom: .5em; |
6413 | } |
6414 | |
6415 | - .home-wrapper { |
6416 | - display: grid; |
6417 | - grid-template-columns: 33% 33% 33%; |
6418 | - grid-column-gap: 20px; |
6419 | - grid-row-gap: 20px; |
6420 | - justify-items: stretch; |
6421 | - align-items: stretch; |
6422 | - |
6423 | - @if map-get($breakpoints, "lg") { |
6424 | - @media (max-width: map-get($breakpoints, "lg")) { |
6425 | - grid-template-columns: none; |
6426 | - } |
6427 | - } |
6428 | - |
6429 | + main.page-body { |
6430 | + margin: 2em; |
6431 | } |
6432 | |
6433 | - @media (prefers-color-scheme: dark) { |
6434 | - |
6435 | - pre { |
6436 | - background-color: #424242; |
6437 | - } |
6438 | - |
6439 | - .diagram { |
6440 | - background: grey; |
6441 | - } |
6442 | - |
6443 | - .day { |
6444 | - display: none; |
6445 | - } |
6446 | + div.side-panel > ul { |
6447 | + padding-left: 0px; |
6448 | + } |
6449 | |
6450 | - .night { |
6451 | - display: initial; |
6452 | - } |
6453 | + .diagram { |
6454 | + min-width: 200%; |
6455 | + } |
6456 | |
6457 | + pre { |
6458 | } |
6459 | diff --git a/www/templates/base.html b/www/templates/base.html |
6460 | index d77b7ef..9e0b317 100644 |
6461 | --- a/www/templates/base.html |
6462 | +++ b/www/templates/base.html |
6463 | @@ -1,37 +1,41 @@ |
6464 | - <!doctype html> |
6465 | + <!DOCTYPE html> |
6466 | <html lang="en"> |
6467 | - <head> |
6468 | - <meta charset="utf-8" /> |
6469 | - <link rel="stylesheet" href="/main.css" /> |
6470 | - <link href="/assets/ayllu_logo.svg" rel="icon" type="image/svg+xml" /> |
6471 | - <link |
6472 | - href="/assets/ayllu_logo.png" |
6473 | - rel="icon" |
6474 | - sizes="any" |
6475 | - type="image/png" |
6476 | - /> |
6477 | - <title>Ayllu</title> |
6478 | - </head> |
6479 | - <nav> |
6480 | - <ul> |
6481 | - <li> |
6482 | - <a href="/"> |
6483 | - <img class="logo" src="/assets/ayllu_logo.png" /> |
6484 | - </a> |
6485 | - </li> |
6486 | - </ul> |
6487 | - <ul> |
6488 | - <li><a href="https://ayllu-forge.org/browse">browse</a></li> |
6489 | - <li><a href="/docs">docs</a></li> |
6490 | - </ul> |
6491 | - </nav> |
6492 | - <body class="container"> |
6493 | - <div class="wrapper"> |
6494 | - <main class="page-body"> |
6495 | - {% block doc_nav %}{% endblock doc_nav %} {% block content %}{% endblock |
6496 | - content %} |
6497 | - </main> |
6498 | - <footer class="page-footer"> {{ now() | date(format="%Y") }}, <a href="/projects/ayllu/blob/main/ATTRIBUTIONS.md">attributions</a> </footer> |
6499 | - </div> |
6500 | - </body> |
6501 | + <head> |
6502 | + <meta charset="utf-8" /> |
6503 | + <link rel="stylesheet" href="/main.css" /> |
6504 | + <link href="/assets/ayllu_logo.svg" rel="icon" type="image/svg+xml" /> |
6505 | + <link href="/assets/ayllu_logo.png" rel="icon" sizes="any" type="image/png" /> |
6506 | + <title>Ayllu</title> |
6507 | + </head> |
6508 | + <nav> |
6509 | + <ul> |
6510 | + <li> |
6511 | + <a href="/"> |
6512 | + <img class="logo" src="/assets/ayllu_logo.png" /> |
6513 | + </a> |
6514 | + </li> |
6515 | + </ul> |
6516 | + <ul> |
6517 | + <li> |
6518 | + <a href="https://ayllu-forge.org/browse">browse</a> |
6519 | + </li> |
6520 | + <li> |
6521 | + <a href="/docs">docs</a> |
6522 | + </li> |
6523 | + </ul> |
6524 | + </nav> |
6525 | + <body class="container"> |
6526 | + <div class="wrapper"> |
6527 | + <main class="page-body"> |
6528 | + {% block doc_nav %} |
6529 | + {% endblock doc_nav %} |
6530 | + {% block content %} |
6531 | + {% endblock |
6532 | + content %} |
6533 | + </main> |
6534 | + <footer class="page-footer"> |
6535 | + {{ now() | date(format="%Y") }}, <a href="/projects/ayllu/blob/main/ATTRIBUTIONS.md">attributions</a> |
6536 | + </footer> |
6537 | + </div> |
6538 | + </body> |
6539 | </html> |
6540 | diff --git a/www/templates/index.html b/www/templates/index.html |
6541 | index af8dcc3..7155bae 100644 |
6542 | --- a/www/templates/index.html |
6543 | +++ b/www/templates/index.html |
6544 | @@ -1,4 +1,4 @@ |
6545 | {% extends "base.html" %} |
6546 | - {% block content %} |
6547 | - {{ section.content | safe }} |
6548 | + {% block content %} |
6549 | + {{ section.content | safe }} |
6550 | {% endblock content %} |
6551 | diff --git a/www/templates/page.html b/www/templates/page.html |
6552 | index f795409..8ed6c76 100644 |
6553 | --- a/www/templates/page.html |
6554 | +++ b/www/templates/page.html |
6555 | @@ -16,9 +16,6 @@ |
6556 | {% endfor %} |
6557 | </ul> |
6558 | </div> |
6559 | - <div class="doc-content"> |
6560 | - <h1>{{ page.title }}</h1> |
6561 | - {{ page.content | safe }} |
6562 | - </div> |
6563 | + <div class="doc-content">{{ page.content | safe }}</div> |
6564 | </div> |
6565 | {% endblock content %} |