@daz4126/swifty 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/LICENSE +21 -0
  2. package/config.yaml +11 -0
  3. package/css/custom.css +30 -0
  4. package/css/simple.css +1267 -0
  5. package/dist/about.html +26 -0
  6. package/dist/css/custom.css +30 -0
  7. package/dist/css/simple.css +1267 -0
  8. package/dist/docs/configuration.html +17 -0
  9. package/dist/docs/folder-structure.html +21 -0
  10. package/dist/docs/get-started.html +17 -0
  11. package/dist/docs/layouts.html +28 -0
  12. package/dist/docs/pages.html +17 -0
  13. package/dist/docs/partials.html +17 -0
  14. package/dist/docs/template.html +20 -0
  15. package/dist/docs.html +60 -0
  16. package/dist/images/horizon.jpg +0 -0
  17. package/dist/images/lights.jpg +0 -0
  18. package/dist/images/raspberries.jpg +0 -0
  19. package/dist/index.html +98 -0
  20. package/dist/tags/about.html +16 -0
  21. package/dist/tags/config.html +19 -0
  22. package/dist/tags/docs.html +21 -0
  23. package/dist/tags/swifty.html +23 -0
  24. package/dist/tags/todo.html +15 -0
  25. package/dist/tags.html +16 -0
  26. package/dist/test.html +91 -0
  27. package/images/horizon.jpg +0 -0
  28. package/images/lights.jpg +0 -0
  29. package/images/raspberries.jpg +0 -0
  30. package/init.js +55 -0
  31. package/layouts/default.html +5 -0
  32. package/layouts/docs.html +10 -0
  33. package/package.json +41 -0
  34. package/pages/about.md +36 -0
  35. package/pages/docs/configuration.md +20 -0
  36. package/pages/docs/folder-structure.md +27 -0
  37. package/pages/docs/get-started.md +9 -0
  38. package/pages/docs/layouts.md +50 -0
  39. package/pages/docs/pages.md +24 -0
  40. package/pages/docs/partials.md +24 -0
  41. package/pages/docs/template.md +15 -0
  42. package/pages/index.md +42 -0
  43. package/pages/test.md +34 -0
  44. package/partials/docs.md +9 -0
  45. package/partials/number.md +9 -0
  46. package/partials/pages.md +9 -0
  47. package/serve.json +5 -0
  48. package/swifty.js +446 -0
  49. package/template.html +22 -0
  50. package/test/swifty.test.js +78 -0
package/css/simple.css ADDED
@@ -0,0 +1,1267 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Holtwood+One+SC&family=Pacifico&family=Monoton&family=Jost&display=swap');
2
+ /* Global variables. */
3
+ :root {
4
+ background: var(--accent-bg);
5
+ --font-family: var(--sans-font);
6
+ --serif-font: Constantia, "Lucida Bright", Lucidabright, "Lucida Serif", Lucida, "DejaVu Serif", "Bitstream Vera Serif", "Liberation Serif", Georgia, serif;
7
+ --sans-font: -apple-system, "BlinkMacSystemFont", "Avenir",
8
+ "Avenir Next", "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell",
9
+ "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
10
+ --mono-font: Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace;
11
+ --brand-font: "Monoton";
12
+ --heading-font: var(--sans-font);
13
+ --fancy-font: "Pacifico";
14
+ --slab-font: "Holtwood One SC", serif;
15
+
16
+ /* Default (light) theme */
17
+ --bg: #fff;
18
+ --accent-bg: #ccedf5;
19
+ --highlight: var(--lightGrey);
20
+ --text: var(--carbon);
21
+ --text-light: var(--darkGrey);
22
+ --border: var(--gray);
23
+ --primary: var(--blue);
24
+ --secondary: var(--slate);
25
+ --primary-hover: var(--pink);
26
+ --accent-text: var(--bg);
27
+ --code: var(--red);
28
+ --preformatted: var(--graphite);
29
+ --marked: var(--yellow);
30
+ --disabled: var(--offWhite);
31
+
32
+ --white: #f6f7f8;
33
+ --offWhite: #efefef;
34
+ --black: #191919;
35
+ --carbon: #292929;
36
+ --dropshadow: rgba(0,0,0,0.16);
37
+ --grey: #a4a5a6;
38
+ --gray: var(--grey);
39
+ --lightGrey: #f5f5f5;
40
+ --lightGray: var(--lightGrey);
41
+ --darkGrey: #585858;
42
+ --darkGray: var(--darkGrey);
43
+ --lightRed: #ffcdd2;
44
+ --red: #c20000;
45
+ --darkRed: #b71c1c;
46
+ --lightBlue: #e1f5fe;
47
+ --blue: #0099dd;
48
+ --darkBlue: #01579b;
49
+ --lightGreen: #e8f5e9;
50
+ --green: #4caf50;
51
+ --darkGreen: #1b5e20;
52
+ --lightYellow: #fff9c4;
53
+ --yellow: #f6e548;
54
+ --darkYellow: #fbc02d;
55
+ --lightOrange: #ffe0b2;
56
+ --orange: #ff6900;
57
+ --darkOrange: #e65100;
58
+ --pink: #ffb3db;
59
+ --purple: #5f52a1;
60
+ --brown: #5d3c2f;
61
+ --slate: #92a2b9;
62
+ --maroon: #660105;
63
+ --aqua: #4ecab8;
64
+ --jade: #00adb9;
65
+ --teal: #306c6d;
66
+ --navy: #0b22a0;
67
+ --graphite: #424242;
68
+ --midnight: #190919;
69
+
70
+ --gradient: linear-gradient(135deg, var(--blue), var(--pink), var(--yellow));
71
+
72
+ --grid-columns: 3;
73
+
74
+ --container-width: min(45rem,90%);
75
+
76
+ --margin-unit: 0.5rem;
77
+ --margin-xs: var(--margin-unit);
78
+ --margin-s: calc(2*var(--margin-unit));
79
+ --margin-m: calc(3*var(--margin-unit));
80
+ --margin-l: calc(4*var(--margin-unit));
81
+ --margin-xl: calc(5*var(--margin-unit));
82
+
83
+ --padding-unit: 0.5rem;
84
+ --padding-xs: var(--padding-unit);
85
+ --padding-s: calc(2*var(--padding-unit));
86
+ --padding-m: calc(3*var(--padding-unit));
87
+ --padding-l: calc(4*var(--padding-unit));
88
+ --padding-xl: calc(5*var(--padding-unit));
89
+
90
+ --border-unit: 1px;
91
+ --border-width-s: var(--border-unit);
92
+ --border-width-m: calc(3*var(--border-unit));
93
+ --border-width-l: calc(6*var(--border-unit));
94
+
95
+ --radius-unit: 1rem;
96
+ --radius-xs: calc(0.5*var(--radius-unit));
97
+ --radius-s: var(--radius-unit);
98
+ --radius-m: calc(2*var(--radius-unit));
99
+ --radius-l: calc(3*var(--radius-unit));
100
+ --radius-xl: calc(4*var(--radius-unit));
101
+ }
102
+
103
+ /* Dark theme */
104
+ @media (prefers-color-scheme: dark) {
105
+ :root {
106
+ color-scheme: dark;
107
+ --bg: var(--black);
108
+ --dropshadow: rgba(0,0,0,0.42);
109
+ --accent-bg: var(--midnight);
110
+ --highlight: var(--graphite);
111
+ --text: var(--lightGrey);
112
+ --text-light: var(--grey);
113
+ --primary: var(--pink);
114
+ --primary-hover: var(--yellow);
115
+ --secondary: var(--aqua);
116
+ --accent-text: var(--bg);
117
+ --code: var(--yellow);
118
+ --preformatted: var(--lightGrey);
119
+ --disabled: var(--black);
120
+ }
121
+ /* Add a bit of transparency so light media isn't so glaring in dark mode */
122
+ img,
123
+ video {
124
+ opacity: 0.8;
125
+ }
126
+ }
127
+
128
+ /* Reset box-sizing */
129
+ *, *::before, *::after {
130
+ box-sizing: border-box;
131
+ }
132
+
133
+ /* Reset default appearance */
134
+ textarea,
135
+ select,
136
+ input,
137
+ progress {
138
+ appearance: none;
139
+ -webkit-appearance: none;
140
+ -moz-appearance: none;
141
+ }
142
+
143
+ html {
144
+ /* Set the font globally */
145
+ font-family: var(--sans-font);
146
+ scroll-behavior: smooth;
147
+ }
148
+
149
+ /* Make the body a nice central block */
150
+ body {
151
+ color: var(--text);
152
+ background-color: var(--bg);
153
+ font-size: 1.15rem;
154
+ line-height: 1.5;
155
+ margin: 0;
156
+ }
157
+
158
+ .container{
159
+ display: grid;
160
+ grid-template-columns: 1fr var(--container-width) 1fr;
161
+ }
162
+
163
+ .container > * {
164
+ grid-column: 2;
165
+ }
166
+
167
+ .highlight{
168
+ background: var(--highlight);
169
+ }
170
+
171
+ .opacity-0{ opacity: 0; }
172
+ .opacity-1{ opacity: 0.1; }
173
+ .opacity-2{ opacity: 0.2; }
174
+ .opacity-3{ opacity: 0.3; }
175
+ .opacity-4{ opacity: 0.4; }
176
+ .opacity-5{ opacity: 0.5; }
177
+ .opacity-6{ opacity: 0.6; }
178
+ .opacity-7{ opacity: 0.7; }
179
+ .opacity-8{ opacity: 0.8; }
180
+ .opacity-9{ opacity: 0.9; }
181
+ .opacity-10{ opacity: 1; }
182
+
183
+ /* Make the header bg full width, but the content inline with body */
184
+ body > header {
185
+ background-color: var(--accent-bg);
186
+ background-image: linear-gradient(var(--accent-bg), var(--bg));
187
+ text-align: center;
188
+ grid-column: 1 / -1;
189
+ }
190
+
191
+ /* Add a little padding to ensure spacing is correct between content and header > nav */
192
+ main {
193
+ padding-top: var(--padding-s);
194
+ grid-column: 1 / -1;
195
+ }
196
+
197
+ body > footer {
198
+ background-image: linear-gradient(var(--bg),var(--accent-bg));
199
+ margin-top: var(--margin-l);
200
+ padding: var(--padding-xs) var(--padding-s) var(--padding-m) var(--padding-s);
201
+ color: var(--text-light);
202
+ font-size: 0.9rem;
203
+ text-align: center;
204
+ grid-column: 1 / -1;
205
+ }
206
+
207
+ h1, h2, h3, h4, h5, h6 {
208
+ font-family: var(--heading-font);
209
+ }
210
+
211
+ /* Format headers */
212
+ h1 {
213
+ font-size: 3rem;
214
+ margin-top: var(--margin-l);
215
+ margin-bottom: var(--margin-s);
216
+ }
217
+
218
+ h2 {
219
+ font-size: 2.6rem;
220
+ margin-top: var(--margin-l);
221
+ }
222
+
223
+ h3 {
224
+ font-size: 2rem;
225
+ margin-top: var(--margin-l);
226
+ }
227
+
228
+ h4 {
229
+ font-size: 1.44rem;
230
+ margin-top: var(--margin-m);
231
+ }
232
+
233
+ h5 {
234
+ font-size: 1.15rem;
235
+ margin-top: var(--margin-m);
236
+ }
237
+
238
+ h6 {
239
+ font-size: 0.96rem;
240
+ margin-top: var(--margin-m);
241
+ }
242
+
243
+ p {
244
+ margin: var(--margin-m) 0;
245
+ }
246
+
247
+ /* Prevent long strings from overflowing container */
248
+ p, h1, h2, h3, h4, h5, h6 {
249
+ overflow-wrap: break-word;
250
+ }
251
+
252
+ /* Fix line height when title wraps */
253
+ h1,
254
+ h2,
255
+ h3 {
256
+ line-height: 1.1;
257
+ }
258
+
259
+ /* Reduce header size on mobile */
260
+ @media only screen and (max-width: 720px) {
261
+ h1 {
262
+ font-size: 2.5rem;
263
+ }
264
+
265
+ h2 {
266
+ font-size: 2.1rem;
267
+ }
268
+
269
+ h3 {
270
+ font-size: 1.75rem;
271
+ }
272
+
273
+ h4 {
274
+ font-size: 1.25rem;
275
+ }
276
+ }
277
+
278
+ /* Format links & buttons */
279
+ a,
280
+ a:visited {
281
+ color: var(--primary);
282
+ }
283
+
284
+ a:hover {
285
+ text-decoration: none;
286
+ }
287
+
288
+ button,
289
+ .button,
290
+ a.button,
291
+ a.big-button, /* extra specificity to override a */
292
+ input[type="submit"],
293
+ input[type="reset"],
294
+ input[type="button"] {
295
+ border: var(--border-width-s) solid var(--primary);
296
+ border-radius: var(--radius-l);
297
+ background-color: var(--primary);
298
+ color: var(--accent-text);
299
+ padding: var(--padding-s) var(--padding-l);
300
+ text-decoration: none;
301
+ line-height: normal;
302
+ }
303
+
304
+ .button[aria-disabled="true"],
305
+ input:disabled,
306
+ textarea:disabled,
307
+ select:disabled,
308
+ button[disabled] {
309
+ cursor: not-allowed;
310
+ background-color: var(--disabled);
311
+ border-color: var(--disabled);
312
+ color: var(--text-light);
313
+ }
314
+
315
+ input[type="range"] {
316
+ padding: 0;
317
+ }
318
+
319
+ /* Set the cursor to '?' on an abbreviation and style the abbreviation to show that there is more information underneath */
320
+ abbr[title] {
321
+ cursor: help;
322
+ text-decoration-line: underline;
323
+ text-decoration-style: dotted;
324
+ }
325
+
326
+ button:enabled:hover,
327
+ .button:not([aria-disabled="true"]):hover,
328
+ input[type="submit"]:enabled:hover,
329
+ input[type="reset"]:enabled:hover,
330
+ input[type="button"]:enabled:hover {
331
+ background-color: var(--primary-hover);
332
+ border-color: var(--primary-hover);
333
+ cursor: pointer;
334
+ }
335
+
336
+ .button:focus-visible,
337
+ button:focus-visible:where(:enabled),
338
+ input:enabled:focus-visible:where(
339
+ [type="submit"],
340
+ [type="reset"],
341
+ [type="button"]
342
+ ) {
343
+ outline: 2px solid var(--primary);
344
+ outline-offset: 1px;
345
+ }
346
+
347
+ /* Format navigation */
348
+ header > nav,.tabs {
349
+ font-size: 1rem;
350
+ line-height: 2;
351
+ }
352
+
353
+ /* Use flexbox to allow items to wrap, as needed */
354
+ header > nav,
355
+ .tabs{
356
+ align-content: space-around;
357
+ align-items: center;
358
+ display: flex;
359
+ flex-direction: row;
360
+ flex-wrap: wrap;
361
+ justify-content: center;
362
+ list-style-type: none;
363
+ }
364
+
365
+ /* List items are inline elements, make them behave more like blocks */
366
+ header > nav > *,
367
+ .tabs > * {
368
+ display: inline-block;
369
+ }
370
+
371
+ header > nav a,
372
+ header > nav a:visited,
373
+ .tabs a,
374
+ .tabs a:visited {
375
+ margin: 0 var(--margin-xs);
376
+ border-radius: var(--radius-l);
377
+ color: var(--primary);
378
+ display: inline-block;
379
+ padding: 0 var(--padding-s);
380
+ text-decoration: none;
381
+ }
382
+
383
+ header > nav a:hover,
384
+ header > nav a.current,
385
+ header > nav a[aria-current="page"],
386
+ header > nav a[aria-current="true"],
387
+ .tabs a:hover,
388
+ .tabs a.current,
389
+ .tabs a[aria-current="page"],
390
+ .tabs a[aria-current="true"] {
391
+ background-color: var(--primary);
392
+ color: var(--bg);
393
+ cursor: pointer;
394
+ }
395
+
396
+ /* Reduce nav side on mobile */
397
+ @media only screen and (max-width: 720px) {
398
+ header > nav a {
399
+ border: none;
400
+ text-decoration: underline;
401
+ line-height: 1;
402
+ }
403
+ }
404
+
405
+ /* Consolidate box styling */
406
+ aside, details, pre, progress {
407
+ background-color: var(--accent-bg);
408
+ border: 1px solid var(--border);
409
+ border-radius: var(--radius-xs);
410
+ margin-bottom: var(--margin-s);
411
+ }
412
+
413
+ aside {
414
+ font-size: 1rem;
415
+ width: 30%;
416
+ padding: 0 15px;
417
+ margin-inline-start: 15px;
418
+ float: right;
419
+ }
420
+ *[dir="rtl"] aside {
421
+ float: left;
422
+ }
423
+
424
+ /* Make aside full-width on mobile */
425
+ @media only screen and (max-width: 720px) {
426
+ aside {
427
+ width: 100%;
428
+ float: none;
429
+ margin-inline-start: 0;
430
+ }
431
+ }
432
+
433
+ article, fieldset, dialog {
434
+ border: var(--border-width-s) solid var(--border);
435
+ padding: var(--padding-s);
436
+ border-radius: var(--radius-m);
437
+ margin-bottom: var(--margin-s);
438
+ }
439
+
440
+ article h2:first-child,
441
+ section h2:first-child,
442
+ article h3:first-child,
443
+ section h3:first-child {
444
+ margin-top: var(--margin-s);
445
+ }
446
+
447
+ section {
448
+ padding: var(--padding-m);
449
+ margin: var(--margin-m) 0;
450
+ }
451
+
452
+ /* Don't double separators when chaining sections */
453
+ section + section {
454
+ margin-top: 0;
455
+ }
456
+
457
+ details {
458
+ padding: var(--padding-xs) var(--margin-s);
459
+ }
460
+
461
+ summary {
462
+ cursor: pointer;
463
+ font-weight: bold;
464
+ padding: var(--padding-xs) var(--padding-s);
465
+ margin: -0.7rem -1rem;
466
+ word-break: break-all;
467
+ }
468
+
469
+ details[open] > summary + * {
470
+ margin-top: 0;
471
+ }
472
+
473
+ details[open] > summary {
474
+ margin-bottom:var(--margin-xs);
475
+ }
476
+
477
+ details[open] > :last-child {
478
+ margin-bottom: 0;
479
+ }
480
+
481
+ /* Format tables */
482
+ table {
483
+ border-collapse: collapse;
484
+ margin: var(--margin-m) 0;
485
+ }
486
+
487
+ figure > table {
488
+ width: max-content;
489
+ margin: 0;
490
+ }
491
+
492
+ td,
493
+ th {
494
+ border: var(--border-width-s) solid var(--border);
495
+ text-align: start;
496
+ padding: 0.5rem;
497
+ }
498
+
499
+ th {
500
+ background-color: var(--accent-bg);
501
+ font-weight: bold;
502
+ }
503
+
504
+ tr:nth-child(even) {
505
+ /* Set every other cell slightly darker. Improves readability. */
506
+ background-color: var(--accent-bg);
507
+ }
508
+
509
+ table caption {
510
+ font-weight: bold;
511
+ margin-bottom: var(--margin-xs);
512
+ }
513
+
514
+ /* Format forms */
515
+ textarea,
516
+ select,
517
+ input,
518
+ button,
519
+ .button {
520
+ font-size: inherit;
521
+ font-family: inherit;
522
+ padding: var(--padding-xs);
523
+ margin-bottom: var(--margin-xs);
524
+ border-radius: var(--radius-m);
525
+ box-shadow: none;
526
+ max-width: 100%;
527
+ display: inline-block;
528
+ }
529
+ textarea,
530
+ select,
531
+ input {
532
+ color: var(--text);
533
+ background-color: var(--bg);
534
+ border: 1px solid var(--border);
535
+ }
536
+ label {
537
+ display: block;
538
+ }
539
+ textarea:not([cols]) {
540
+ width: 100%;
541
+ }
542
+
543
+ /* Add arrow to drop-down */
544
+ select:not([multiple]) {
545
+ background-image: linear-gradient(45deg, transparent 49%, var(--text) 51%),
546
+ linear-gradient(135deg, var(--text) 51%, transparent 49%);
547
+ background-position: calc(100% - 15px), calc(100% - 10px);
548
+ background-size: 5px 5px, 5px 5px;
549
+ background-repeat: no-repeat;
550
+ padding-inline-end: 25px;
551
+ }
552
+ *[dir="rtl"] select:not([multiple]) {
553
+ background-position: 10px, 15px;
554
+ }
555
+
556
+ /* checkbox and radio button style */
557
+ input[type="checkbox"],
558
+ input[type="radio"] {
559
+ vertical-align: middle;
560
+ position: relative;
561
+ width: min-content;
562
+ }
563
+
564
+ input[type="checkbox"] + label,
565
+ input[type="radio"] + label {
566
+ display: inline-block;
567
+ }
568
+
569
+ input[type="radio"] {
570
+ border-radius: 100%;
571
+ }
572
+
573
+ input[type="checkbox"]:checked,
574
+ input[type="radio"]:checked {
575
+ background-color: var(--primary);
576
+ }
577
+
578
+ input[type="checkbox"]:checked::after {
579
+ /* Creates a rectangle with colored right and bottom borders which is rotated to look like a check mark */
580
+ content: " ";
581
+ width: 0.18em;
582
+ height: 0.32em;
583
+ border-radius: 0;
584
+ position: absolute;
585
+ top: 0.05em;
586
+ left: 0.17em;
587
+ background-color: transparent;
588
+ border-right: solid var(--bg) 0.08em;
589
+ border-bottom: solid var(--bg) 0.08em;
590
+ font-size: 1.8em;
591
+ transform: rotate(45deg);
592
+ }
593
+ input[type="radio"]:checked::after {
594
+ /* creates a colored circle for the checked radio button */
595
+ content: " ";
596
+ width: 0.25em;
597
+ height: 0.25em;
598
+ border-radius: 100%;
599
+ position: absolute;
600
+ top: 0.125em;
601
+ background-color: var(--bg);
602
+ left: 0.125em;
603
+ font-size: 32px;
604
+ }
605
+
606
+ /* Makes input fields wider on smaller screens */
607
+ @media only screen and (max-width: 720px) {
608
+ textarea,
609
+ select,
610
+ input {
611
+ width: 100%;
612
+ }
613
+ }
614
+
615
+ /* Set a height for color input */
616
+ input[type="color"] {
617
+ height: 2.5rem;
618
+ padding: 0.2rem;
619
+ }
620
+
621
+ /* do not show border around file selector button */
622
+ input[type="file"] {
623
+ border: 0;
624
+ }
625
+
626
+ /* Misc body elements */
627
+ hr {
628
+ border: none;
629
+ height: 1px;
630
+ background: var(--border);
631
+ margin: 1rem auto;
632
+ }
633
+
634
+ mark {
635
+ padding: 2px 5px;
636
+ border-radius: var(--radius-m);
637
+ background-color: var(--marked);
638
+ color: black;
639
+ }
640
+
641
+ mark a {
642
+ color: #0d47a1;
643
+ }
644
+
645
+ img,
646
+ video {
647
+ max-width: 100%;
648
+ height: auto;
649
+ display: block;
650
+ border-radius: var(--radius-s);
651
+ }
652
+
653
+ figure {
654
+ margin: 0;
655
+ display: block;
656
+ overflow-x: auto;
657
+ }
658
+
659
+ figure > img,
660
+ figure > picture > img {
661
+ display: block;
662
+ margin-inline: auto;
663
+ }
664
+
665
+ figcaption {
666
+ text-align: center;
667
+ font-size: 0.9rem;
668
+ color: var(--text-light);
669
+ margin-block: 1rem;
670
+ }
671
+
672
+ blockquote {
673
+ margin-inline-start: 2rem;
674
+ margin-inline-end: 0;
675
+ margin-block: 2rem;
676
+ padding: 0.4rem 0.8rem;
677
+ border-inline-start: 0.35rem solid var(--primary);
678
+ color: var(--text-light);
679
+ font-style: italic;
680
+ }
681
+
682
+ cite {
683
+ font-size: 0.9rem;
684
+ color: var(--text-light);
685
+ font-style: normal;
686
+ }
687
+
688
+ dt {
689
+ color: var(--text-light);
690
+ }
691
+
692
+ /* Use mono font for code elements */
693
+ code,
694
+ pre,
695
+ pre span,
696
+ kbd,
697
+ samp {
698
+ font-family: var(--mono-font);
699
+ color: var(--code);
700
+ }
701
+
702
+ kbd {
703
+ color: var(--preformatted);
704
+ border: 1px solid var(--preformatted);
705
+ border-bottom: 3px solid var(--preformatted);
706
+ border-radius: var(--radius-s);
707
+ padding: 0.1rem 0.4rem;
708
+ }
709
+
710
+ pre {
711
+ padding: 1rem 1.4rem;
712
+ max-width: 100%;
713
+ overflow: auto;
714
+ color: var(--preformatted);
715
+ }
716
+
717
+ /* Fix embedded code within pre */
718
+ pre code {
719
+ color: var(--preformatted);
720
+ background: none;
721
+ margin: 0;
722
+ padding: 0;
723
+ }
724
+
725
+ /* Progress bars */
726
+ /* Declarations are repeated because you */
727
+ /* cannot combine vendor-specific selectors */
728
+ progress {
729
+ width: 100%;
730
+ }
731
+
732
+ progress:indeterminate {
733
+ background-color: var(--accent-bg);
734
+ }
735
+
736
+ progress::-webkit-progress-bar {
737
+ border-radius: var(--radius-m);
738
+ background-color: var(--accent-bg);
739
+ }
740
+
741
+ progress::-webkit-progress-value {
742
+ border-radius: var(--radius-m);
743
+ background-color: var(--primary);
744
+ }
745
+
746
+ progress::-moz-progress-bar {
747
+ border-radius: var(--radius-m);
748
+ background-color: var(--primary);
749
+ transition-property: width;
750
+ transition-duration: 0.3s;
751
+ }
752
+
753
+ progress:indeterminate::-moz-progress-bar {
754
+ background-color: var(--accent-bg);
755
+ }
756
+
757
+ dialog {
758
+ background-color: var(--bg);
759
+ max-width: 40rem;
760
+ margin: auto;
761
+ }
762
+
763
+ dialog::backdrop {
764
+ background-color: var(--bg);
765
+ opacity: 0.8;
766
+ }
767
+
768
+ @media only screen and (max-width: 720px) {
769
+ dialog {
770
+ max-width: 100%;
771
+ margin: auto 1em;
772
+ }
773
+ }
774
+
775
+ /* Superscript & Subscript */
776
+ /* Prevent scripts from affecting line-height. */
777
+ sup, sub {
778
+ vertical-align: baseline;
779
+ position: relative;
780
+ }
781
+
782
+ sup {
783
+ top: -0.4em;
784
+ }
785
+
786
+ sub {
787
+ top: 0.3em;
788
+ }
789
+
790
+ /* Utility classes for typography */
791
+ .display-l,
792
+ .display-m,
793
+ .display-s{
794
+ font-family: var(--font-family);
795
+ line-height: 1.2;
796
+ font-weight: 300;
797
+ font-size: 4rem;
798
+ }
799
+
800
+ .display-m {
801
+ font-size: 3rem;
802
+ }
803
+
804
+ .display-s {
805
+ font-size: 2.25rem;
806
+ }
807
+
808
+ .text-xl {
809
+ font-size: 3.2rem;
810
+ }
811
+ .text-l {
812
+ font-size: 2rem;
813
+ }
814
+ .text-m {
815
+ font-size: 1.4rem;
816
+ }
817
+ .text-s {
818
+ font-size: 1rem;
819
+ }
820
+ .text-xs {
821
+ font-size: 0.8rem;
822
+ }
823
+
824
+ .text-center {
825
+ text-align: center;
826
+ }
827
+
828
+ .text-left {
829
+ text-align: left;
830
+ }
831
+
832
+ .text-right {
833
+ text-align: right;
834
+ }
835
+
836
+ .justify {
837
+ text-align: justify;
838
+ }
839
+
840
+ .uppercase {
841
+ text-transform: uppercase;
842
+ }
843
+
844
+ .lowercase {
845
+ text-transform: lowercase;
846
+ }
847
+
848
+ .capitalize,.capitalise {
849
+ text-transform: capitalize;
850
+ }
851
+
852
+ .italic{
853
+ font-style: italic;
854
+ }
855
+
856
+ .bold{
857
+ font-weight: bold;
858
+ }
859
+
860
+ .underline{
861
+ text-decoration: underline;
862
+ }
863
+
864
+ .no-underline,.no-underline:hover{
865
+ text-decoration: none !important;
866
+ }
867
+
868
+ .line-through,.strike-through{
869
+ text-decoration: line-through;
870
+ }
871
+
872
+ .sans-font{
873
+ font-family: var(--sans-font);
874
+ }
875
+
876
+ .serif-font{
877
+ font-family: var(--serif-font);
878
+ }
879
+
880
+ .mono-font{
881
+ font-family: var(--mono-font);
882
+ }
883
+
884
+ .heading-font{
885
+ font-family: var(--heading-font);
886
+ }
887
+
888
+ .fancy-font{
889
+ font-family: var(--fancy-font);
890
+ }
891
+
892
+ .slab-font{
893
+ font-family: var(--slab-font);
894
+ }
895
+
896
+ .brand-font{
897
+ font-family: var(--brand-font);
898
+ }
899
+
900
+ .glow{
901
+ text-shadow: 0 0 0.25em currentcolor;
902
+ }
903
+
904
+ /* Classes for layout */
905
+
906
+ .full-width{
907
+ grid-column: 1 / -1;
908
+ }
909
+
910
+ .align-vertical {
911
+ display: flex;
912
+ align-items: center;
913
+ }
914
+
915
+ .align-horizontal {
916
+ display: flex;
917
+ justify-content: center;
918
+ }
919
+
920
+ .align-center {
921
+ display: flex;
922
+ align-items: center;
923
+ justify-content: center;
924
+ }
925
+
926
+ .align-right {
927
+ display: flex;
928
+ align-items: right;
929
+ justify-content: flex-end;
930
+ }
931
+
932
+ .align-left {
933
+ display: flex;
934
+ align-items: left;
935
+ justify-content: flex-start;
936
+ }
937
+
938
+ .space-between {
939
+ display: flex;
940
+ justify-content: space-between;
941
+ }
942
+
943
+ .gap-s{ gap: var(--margin-s); }
944
+ .gap-m{ gap: var(--margin-m); }
945
+ .gap-l{ gap: var(--margin-l); }
946
+
947
+ .inline{
948
+ display: inline;
949
+ }
950
+
951
+ .block{
952
+ display: block;
953
+ }
954
+
955
+ .inline-block{
956
+ display: inline-block;
957
+ }
958
+
959
+ .absolute{
960
+ position: absolute;
961
+ }
962
+
963
+ .relative{
964
+ position: relative;
965
+ }
966
+
967
+ .fixed {
968
+ position: fixed;
969
+ }
970
+
971
+ .sticky{
972
+ position: sticky;
973
+ top: 0;
974
+ z-index: 1000;
975
+ }
976
+
977
+ .padding {
978
+ padding: var(--padding-m);
979
+ }
980
+
981
+ .padding-x {
982
+ padding: 0 var(--padding-m);
983
+ }
984
+
985
+ .padding-y {
986
+ padding: var(--padding-m) 0;
987
+ }
988
+
989
+ .no-padding {
990
+ padding: 0 !important;
991
+ }
992
+
993
+ .no-padding-x {
994
+ padding-left: 0 !important;
995
+ padding-right: 0 !important;
996
+ }
997
+
998
+ .no-padding-y {
999
+ padding-top: 0 !important;
1000
+ padding-bottom: 0 !important;
1001
+ }
1002
+
1003
+ .margin {
1004
+ margin: var(--margin-m);
1005
+ }
1006
+
1007
+ .margin-x {
1008
+ margin: 0 var(--margin-m);
1009
+ }
1010
+
1011
+ .margin-y {
1012
+ margin: var(--margin-m) 0;
1013
+ }
1014
+
1015
+ .margin-auto{
1016
+ margin: auto !important;
1017
+ }
1018
+
1019
+ .margin-auto-x{
1020
+ margin-left: auto !important;
1021
+ margin-right: auto !important;
1022
+ }
1023
+
1024
+ .no-margin {
1025
+ margin: 0 !important;
1026
+ }
1027
+
1028
+ .no-margin-x {
1029
+ margin-left: 0 !important;
1030
+ margin-right: 0 !important;
1031
+ }
1032
+
1033
+ .no-margin-y {
1034
+ margin-top: 0 !important;
1035
+ margin-bottom: 0 !important;
1036
+ }
1037
+
1038
+ .dropshadow{
1039
+ box-shadow: 3px 3px 16px var(--dropshadow);
1040
+ }
1041
+
1042
+ .clearfix {
1043
+ content: "";
1044
+ display: table;
1045
+ clear: both;
1046
+ }
1047
+
1048
+ .hidden {
1049
+ display: none !important;
1050
+ }
1051
+
1052
+ .muted{
1053
+ opacity: 0.7;
1054
+ }
1055
+
1056
+ .no-bullet{
1057
+ list-style: none;
1058
+ padding-left: 0;
1059
+ }
1060
+
1061
+ /* Classes for gradient text */
1062
+
1063
+ .gradient{
1064
+ background: var(--gradient);
1065
+ }
1066
+
1067
+ .gradient-text{
1068
+ background-image: var(--gradient);
1069
+ background-clip: text;
1070
+ -webkit-background-clip: text;
1071
+ -moz-background-clip: text;
1072
+ text-fill-color: transparent;
1073
+ -webkit-text-fill-color: transparent;
1074
+ -moz-text-fill-color: transparent;
1075
+ background-size: 100%;
1076
+ -webkit-box-decoration-break: clone;
1077
+ display: inline-block;
1078
+ }
1079
+
1080
+ /* Classes for notices */
1081
+ .notice {
1082
+ background: var(--accent-bg);
1083
+ border: 2px solid var(--border);
1084
+ border-radius: var(--radius-m);
1085
+ padding: var(--padding-m);
1086
+ margin: var(--margin-m) 0;
1087
+ }
1088
+ /* Classes for tags */
1089
+ .tag,
1090
+ .tag:visited {
1091
+ font-size: 0.8rem;
1092
+ margin: 0 0.2rem;
1093
+ border: 1px solid var(--border);
1094
+ border-radius: var(--radius-xs);
1095
+ color: var(--text);
1096
+ display: inline-block;
1097
+ padding: 0.1rem var(--padding-xs);
1098
+ text-decoration: none;
1099
+ }
1100
+
1101
+ .tag:hover,
1102
+ .tag.current,
1103
+ .tag[aria-current="page"],
1104
+ .tag[aria-current="true"] {
1105
+ border-color: var(--secondary);
1106
+ color: var(--secondary);
1107
+ }
1108
+
1109
+ /* Classes for colours */
1110
+
1111
+ .primary { background-color: var(--primary) !important;}
1112
+ .secondary { background-color: var(--secondary) !important;}
1113
+ .bg { background-color: var(--bg) !important;}
1114
+
1115
+ .white { background-color: var(--white) !important; }
1116
+ .grey,.gray { background-color: var(--grey) !important; }
1117
+ .light-grey,.light-gray { background-color: var(--lightGrey) !important; }
1118
+ .dark-grey,.dark-gray { background-color: var(--darkGrey) !important; }
1119
+ .black { background-color: var(--black)!important; }
1120
+
1121
+ .red { background-color: var(--red) !important; }
1122
+ .orange { background-color: var(--orange) !important; }
1123
+ .yellow { background-color: var(--yellow) !important; }
1124
+ .green { background-color: var(--green) !important; }
1125
+ .blue { background-color: var(--blue) !important; }
1126
+ .purple { background-color: var(--purple) !important; }
1127
+ .pink { background-color: var(--pink) !important; }
1128
+ .brown { background-color: var(--brown) !important; }
1129
+ .slate { background-color: var(--slate) !important; }
1130
+ .aqua { background-color: var(--aqua) !important; }
1131
+ .maroon { background-color: var(--maroon) !important; }
1132
+ .teal { background-color: var(--teal) !important; }
1133
+ .jade { background-color: var(--jade) !important;}
1134
+ .light-red { background-color: var(--lightRed) !important;}
1135
+ .light-orange { background-color: var(--lightOrange) !important;}
1136
+ .light-yellow { background-color: var(--lightYellow) !important;}
1137
+ .light-green { background-color: var(--lightGreen) !important;}
1138
+ .light-blue { background-color: var(--lightBlue) !important;}
1139
+ .dark-red { background-color: var(--darkRed) !important;}
1140
+ .dark-orange { background-color: var(--darkOrange) !important;}
1141
+ .dark-yellow { background-color: var(--darkYellow) !important;}
1142
+ .dark-green { background-color: var(--darkGreen) !important;}
1143
+ .dark-blue { background-color: var(--darkBlue) !important;}
1144
+
1145
+ .primary-text{ color: var(--primary) !important; }
1146
+ .secondary-text{ color: var(--secondary) !important; }
1147
+ .red-text { color: var(--red) !important; }
1148
+ .orange-text { color: var(--orange) !important; }
1149
+ .yellow-text { color: var(--yellow) !important; }
1150
+ .green-text { color: var(--green) !important; }
1151
+ .blue-text { color: var(--blue) !important; }
1152
+ .purple-text { color: var(--purple) !important; }
1153
+ .pink-text { color: var(--pink) !important; }
1154
+ .brown-text { color: var(--brown) !important; }
1155
+ .slate-text { color: var(--slate) !important; }
1156
+ .aqua-text { color: var(--aqua) !important; }
1157
+ .maroon-text { color: var(--maroon) !important; }
1158
+ .teal-text { color: var(--teal) !important; }
1159
+ .jade-text { color: var(--jade) !important; }
1160
+
1161
+ /* Classes for grids */
1162
+
1163
+ .grid {
1164
+ display: grid;
1165
+ gap: var(--margin-m);
1166
+ grid-template-columns: 1fr;
1167
+ grid-template-rows: 1fr auto;
1168
+ }
1169
+
1170
+ @media screen and (min-width: 600px) {
1171
+ .grid {
1172
+ grid-template-columns: repeat(var(--grid-columns), minmax(0, 1fr));
1173
+ }
1174
+
1175
+ .grid.no-gap{ gap: 0; }
1176
+ .grid.gap-xs{ gap: var(--margin-xs); }
1177
+ .grid.gap-s{ gap: var(--margin-s); }
1178
+ .grid.gap-m{ gap: var(--margin-m); }
1179
+ .grid.gap-l{ gap: var(--margin-l); }
1180
+ .grid.gap-xl{ gap: var(--margin-xl); }
1181
+
1182
+ .one-column.grid{ --grid-columns: 1; }
1183
+ .two-column.grid{ --grid-columns: 2; }
1184
+ .three-column.grid{ --grid-columns: 3; }
1185
+ .four-column.grid{ --grid-columns: 4; }
1186
+ .five-column.grid{ --grid-columns: 5; }
1187
+ .six-column.grid{ --grid-columns: 6; }
1188
+
1189
+
1190
+ .grid .row-span-2{ grid-row: span 2; }
1191
+ .grid .row-span-3{ grid-row: span 3; }
1192
+ .grid .row-span-4{ grid-row: span 4; }
1193
+ .grid .row-span-5{ grid-row: span 5; }
1194
+ .grid .row-span-6{ grid-row: span 6; }
1195
+
1196
+ .grid .col-span-2{ grid-column: span 2; }
1197
+ .grid .col-span-3{ grid-column: span 3; }
1198
+ .grid .col-span-4{ grid-column: span 4; }
1199
+ .grid .col-span-5{ grid-column: span 5; }
1200
+ .grid .col-span-6{ grid-column: span 6; }
1201
+
1202
+ .grid .start-2{ grid-column-start: 2; }
1203
+ .grid .start-2.col-span-2{ grid-column: 2 / span 2; }
1204
+ .grid .start-2.col-span-3{ grid-column: 2 / span 3; }
1205
+ .grid .start-2.col-span-4{ grid-column: 2 / span 4; }
1206
+ .grid .start-2.col-span-5{ grid-column: 2 / span 5; }
1207
+
1208
+ .grid .start-3{ grid-column-start: 3; }
1209
+ .grid .start-3.col-span-2{ grid-column: 3 / span 2; }
1210
+ .grid .start-3.col-span-3{ grid-column: 3 / span 3; }
1211
+ .grid .start-3.col-span-4{ grid-column: 3 / span 4; }
1212
+
1213
+ .grid .start-4{ grid-column-start: 4; }
1214
+ .grid .start-4.col-span-2{ grid-column: 4 / span 2; }
1215
+ .grid .start-4.col-span-3{ grid-column: 4 / span 3; }
1216
+
1217
+ .grid .start-5{ grid-column-start: 5; }
1218
+ .grid .start-5.col-span-2{ grid-column: 5 / span 2; }
1219
+
1220
+ .grid .start-6{ grid-column-start: 6; }
1221
+ }
1222
+
1223
+ /* Print */
1224
+ @media print {
1225
+ @page {
1226
+ margin: 1cm;
1227
+ }
1228
+ body {
1229
+ display: block;
1230
+ }
1231
+ body > header {
1232
+ background-color: unset;
1233
+ }
1234
+ body > header nav,
1235
+ body > footer {
1236
+ display: none;
1237
+ }
1238
+ article {
1239
+ border: none;
1240
+ padding: 0;
1241
+ }
1242
+ a[href^="http"]::after {
1243
+ content: " <" attr(href) ">";
1244
+ }
1245
+ abbr[title]:after {
1246
+ content: " (" attr(title) ")";
1247
+ }
1248
+ a {
1249
+ text-decoration: none;
1250
+ }
1251
+ p {
1252
+ widows: 3;
1253
+ orphans: 3;
1254
+ }
1255
+ hr {
1256
+ border-top: 1px solid var(--border);
1257
+ }
1258
+ mark {
1259
+ border: 1px solid var(--border);
1260
+ }
1261
+ pre, table, figure, img, svg {
1262
+ break-inside: avoid;
1263
+ }
1264
+ pre code {
1265
+ white-space: pre-wrap;
1266
+ }
1267
+ }