73 |
74 |
75 |
--------------------------------------------------------------------------------
/_includes/layouts/robots.njk:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow: /
3 |
--------------------------------------------------------------------------------
/_tmp/style.css:
--------------------------------------------------------------------------------
1 | /*! tailwindcss v2.2.7 | MIT License | https://tailwindcss.com */
2 |
3 | /*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */
4 |
5 | /*
6 | Document
7 | ========
8 | */
9 |
10 | /**
11 | Use a better box model (opinionated).
12 | */
13 |
14 | *,
15 | ::before,
16 | ::after {
17 | box-sizing: border-box;
18 | }
19 |
20 | /**
21 | Use a more readable tab size (opinionated).
22 | */
23 |
24 | html {
25 | -moz-tab-size: 4;
26 | -o-tab-size: 4;
27 | tab-size: 4;
28 | }
29 |
30 | /**
31 | 1. Correct the line height in all browsers.
32 | 2. Prevent adjustments of font size after orientation changes in iOS.
33 | */
34 |
35 | html {
36 | line-height: 1.15; /* 1 */
37 | -webkit-text-size-adjust: 100%; /* 2 */
38 | }
39 |
40 | /*
41 | Sections
42 | ========
43 | */
44 |
45 | /**
46 | Remove the margin in all browsers.
47 | */
48 |
49 | body {
50 | margin: 0;
51 | }
52 |
53 | /**
54 | Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
55 | */
56 |
57 | body {
58 | font-family:
59 | system-ui,
60 | -apple-system, /* Firefox supports this but not yet `system-ui` */
61 | 'Segoe UI',
62 | Roboto,
63 | Helvetica,
64 | Arial,
65 | sans-serif,
66 | 'Apple Color Emoji',
67 | 'Segoe UI Emoji';
68 | }
69 |
70 | /*
71 | Grouping content
72 | ================
73 | */
74 |
75 | /**
76 | 1. Add the correct height in Firefox.
77 | 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
78 | */
79 |
80 | hr {
81 | height: 0; /* 1 */
82 | color: inherit; /* 2 */
83 | }
84 |
85 | /*
86 | Text-level semantics
87 | ====================
88 | */
89 |
90 | /**
91 | Add the correct text decoration in Chrome, Edge, and Safari.
92 | */
93 |
94 | abbr[title] {
95 | -webkit-text-decoration: underline dotted;
96 | text-decoration: underline dotted;
97 | }
98 |
99 | /**
100 | Add the correct font weight in Edge and Safari.
101 | */
102 |
103 | b,
104 | strong {
105 | font-weight: bolder;
106 | }
107 |
108 | /**
109 | 1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
110 | 2. Correct the odd 'em' font sizing in all browsers.
111 | */
112 |
113 | code,
114 | kbd,
115 | samp,
116 | pre {
117 | font-family:
118 | ui-monospace,
119 | SFMono-Regular,
120 | Consolas,
121 | 'Liberation Mono',
122 | Menlo,
123 | monospace; /* 1 */
124 | font-size: 1em; /* 2 */
125 | }
126 |
127 | /**
128 | Add the correct font size in all browsers.
129 | */
130 |
131 | small {
132 | font-size: 80%;
133 | }
134 |
135 | /**
136 | Prevent 'sub' and 'sup' elements from affecting the line height in all browsers.
137 | */
138 |
139 | sub,
140 | sup {
141 | font-size: 75%;
142 | line-height: 0;
143 | position: relative;
144 | vertical-align: baseline;
145 | }
146 |
147 | sub {
148 | bottom: -0.25em;
149 | }
150 |
151 | sup {
152 | top: -0.5em;
153 | }
154 |
155 | /*
156 | Tabular data
157 | ============
158 | */
159 |
160 | /**
161 | 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
162 | 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
163 | */
164 |
165 | table {
166 | text-indent: 0; /* 1 */
167 | border-color: inherit; /* 2 */
168 | }
169 |
170 | /*
171 | Forms
172 | =====
173 | */
174 |
175 | /**
176 | 1. Change the font styles in all browsers.
177 | 2. Remove the margin in Firefox and Safari.
178 | */
179 |
180 | button,
181 | input,
182 | optgroup,
183 | select,
184 | textarea {
185 | font-family: inherit; /* 1 */
186 | font-size: 100%; /* 1 */
187 | line-height: 1.15; /* 1 */
188 | margin: 0; /* 2 */
189 | }
190 |
191 | /**
192 | Remove the inheritance of text transform in Edge and Firefox.
193 | 1. Remove the inheritance of text transform in Firefox.
194 | */
195 |
196 | button,
197 | select { /* 1 */
198 | text-transform: none;
199 | }
200 |
201 | /**
202 | Correct the inability to style clickable types in iOS and Safari.
203 | */
204 |
205 | button,
206 | [type='button'],
207 | [type='submit'] {
208 | -webkit-appearance: button;
209 | }
210 |
211 | /**
212 | Remove the inner border and padding in Firefox.
213 | */
214 |
215 | /**
216 | Restore the focus styles unset by the previous rule.
217 | */
218 |
219 | /**
220 | Remove the additional ':invalid' styles in Firefox.
221 | See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737
222 | */
223 |
224 | /**
225 | Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.
226 | */
227 |
228 | legend {
229 | padding: 0;
230 | }
231 |
232 | /**
233 | Add the correct vertical alignment in Chrome and Firefox.
234 | */
235 |
236 | progress {
237 | vertical-align: baseline;
238 | }
239 |
240 | /**
241 | Correct the cursor style of increment and decrement buttons in Safari.
242 | */
243 |
244 | /**
245 | 1. Correct the odd appearance in Chrome and Safari.
246 | 2. Correct the outline style in Safari.
247 | */
248 |
249 | [type='search'] {
250 | -webkit-appearance: textfield; /* 1 */
251 | outline-offset: -2px; /* 2 */
252 | }
253 |
254 | /**
255 | Remove the inner padding in Chrome and Safari on macOS.
256 | */
257 |
258 | /**
259 | 1. Correct the inability to style clickable types in iOS and Safari.
260 | 2. Change font properties to 'inherit' in Safari.
261 | */
262 |
263 | /*
264 | Interactive
265 | ===========
266 | */
267 |
268 | /*
269 | Add the correct display in Chrome and Safari.
270 | */
271 |
272 | summary {
273 | display: list-item;
274 | }
275 |
276 | /**
277 | * Manually forked from SUIT CSS Base: https://github.com/suitcss/base
278 | * A thin layer on top of normalize.css that provides a starting point more
279 | * suitable for web applications.
280 | */
281 |
282 | /**
283 | * Removes the default spacing and border for appropriate elements.
284 | */
285 |
286 | blockquote,
287 | dl,
288 | dd,
289 | h1,
290 | h2,
291 | h3,
292 | h4,
293 | h5,
294 | h6,
295 | hr,
296 | figure,
297 | p,
298 | pre {
299 | margin: 0;
300 | }
301 |
302 | button {
303 | background-color: transparent;
304 | background-image: none;
305 | }
306 |
307 | fieldset {
308 | margin: 0;
309 | padding: 0;
310 | }
311 |
312 | ol,
313 | ul {
314 | list-style: none;
315 | margin: 0;
316 | padding: 0;
317 | }
318 |
319 | /**
320 | * Tailwind custom reset styles
321 | */
322 |
323 | /**
324 | * 1. Use the user's configured `sans` font-family (with Tailwind's default
325 | * sans-serif font stack as a fallback) as a sane default.
326 | * 2. Use Tailwind's default "normal" line-height so the user isn't forced
327 | * to override it to ensure consistency even when using the default theme.
328 | */
329 |
330 | html {
331 | font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 1 */
332 | line-height: 1.5; /* 2 */
333 | }
334 |
335 | /**
336 | * Inherit font-family and line-height from `html` so users can set them as
337 | * a class directly on the `html` element.
338 | */
339 |
340 | body {
341 | font-family: inherit;
342 | line-height: inherit;
343 | }
344 |
345 | /**
346 | * 1. Prevent padding and border from affecting element width.
347 | *
348 | * We used to set this in the html element and inherit from
349 | * the parent element for everything else. This caused issues
350 | * in shadow-dom-enhanced elements like
where the content
351 | * is wrapped by a div with box-sizing set to `content-box`.
352 | *
353 | * https://github.com/mozdevs/cssremedy/issues/4
354 | *
355 | *
356 | * 2. Allow adding a border to an element by just adding a border-width.
357 | *
358 | * By default, the way the browser specifies that an element should have no
359 | * border is by setting it's border-style to `none` in the user-agent
360 | * stylesheet.
361 | *
362 | * In order to easily add borders to elements by just setting the `border-width`
363 | * property, we change the default border-style for all elements to `solid`, and
364 | * use border-width to hide them instead. This way our `border` utilities only
365 | * need to set the `border-width` property instead of the entire `border`
366 | * shorthand, making our border utilities much more straightforward to compose.
367 | *
368 | * https://github.com/tailwindcss/tailwindcss/pull/116
369 | */
370 |
371 | *,
372 | ::before,
373 | ::after {
374 | box-sizing: border-box; /* 1 */
375 | border-width: 0; /* 2 */
376 | border-style: solid; /* 2 */
377 | border-color: currentColor; /* 2 */
378 | }
379 |
380 | /*
381 | * Ensure horizontal rules are visible by default
382 | */
383 |
384 | hr {
385 | border-top-width: 1px;
386 | }
387 |
388 | /**
389 | * Undo the `border-style: none` reset that Normalize applies to images so that
390 | * our `border-{width}` utilities have the expected effect.
391 | *
392 | * The Normalize reset is unnecessary for us since we default the border-width
393 | * to 0 on all elements.
394 | *
395 | * https://github.com/tailwindcss/tailwindcss/issues/362
396 | */
397 |
398 | img {
399 | border-style: solid;
400 | }
401 |
402 | textarea {
403 | resize: vertical;
404 | }
405 |
406 | input::-moz-placeholder, textarea::-moz-placeholder {
407 | opacity: 1;
408 | color: #9ca3af;
409 | }
410 |
411 | input:-ms-input-placeholder, textarea:-ms-input-placeholder {
412 | opacity: 1;
413 | color: #9ca3af;
414 | }
415 |
416 | input::placeholder,
417 | textarea::placeholder {
418 | opacity: 1;
419 | color: #9ca3af;
420 | }
421 |
422 | button {
423 | cursor: pointer;
424 | }
425 |
426 | table {
427 | border-collapse: collapse;
428 | }
429 |
430 | h1,
431 | h2,
432 | h3,
433 | h4,
434 | h5,
435 | h6 {
436 | font-size: inherit;
437 | font-weight: inherit;
438 | }
439 |
440 | /**
441 | * Reset links to optimize for opt-in styling instead of
442 | * opt-out.
443 | */
444 |
445 | a {
446 | color: inherit;
447 | text-decoration: inherit;
448 | }
449 |
450 | /**
451 | * Reset form element properties that are easy to forget to
452 | * style explicitly so you don't inadvertently introduce
453 | * styles that deviate from your design system. These styles
454 | * supplement a partial reset that is already applied by
455 | * normalize.css.
456 | */
457 |
458 | button,
459 | input,
460 | optgroup,
461 | select,
462 | textarea {
463 | padding: 0;
464 | line-height: inherit;
465 | color: inherit;
466 | }
467 |
468 | /**
469 | * Use the configured 'mono' font family for elements that
470 | * are expected to be rendered with a monospace font, falling
471 | * back to the system monospace stack if there is no configured
472 | * 'mono' font family.
473 | */
474 |
475 | pre,
476 | code,
477 | kbd,
478 | samp {
479 | font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
480 | }
481 |
482 | /**
483 | * 1. Make replaced elements `display: block` by default as that's
484 | * the behavior you want almost all of the time. Inspired by
485 | * CSS Remedy, with `svg` added as well.
486 | *
487 | * https://github.com/mozdevs/cssremedy/issues/14
488 | *
489 | * 2. Add `vertical-align: middle` to align replaced elements more
490 | * sensibly by default when overriding `display` by adding a
491 | * utility like `inline`.
492 | *
493 | * This can trigger a poorly considered linting error in some
494 | * tools but is included by design.
495 | *
496 | * https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210
497 | */
498 |
499 | img,
500 | svg,
501 | video,
502 | canvas,
503 | audio,
504 | iframe,
505 | embed,
506 | object {
507 | display: block; /* 1 */
508 | vertical-align: middle; /* 2 */
509 | }
510 |
511 | /**
512 | * Constrain images and videos to the parent width and preserve
513 | * their intrinsic aspect ratio.
514 | *
515 | * https://github.com/mozdevs/cssremedy/issues/14
516 | */
517 |
518 | img,
519 | video {
520 | max-width: 100%;
521 | height: auto;
522 | }
523 |
524 | /**
525 | * Ensure the default browser behavior of the `hidden` attribute.
526 | */
527 |
528 | [hidden] {
529 | display: none;
530 | }
531 |
532 | *, ::before, ::after {
533 | --tw-border-opacity: 1;
534 | border-color: rgba(229, 231, 235, var(--tw-border-opacity));
535 | }
536 |
537 |
538 | [type='text'],
539 | [type='email'],
540 | [type='password'],
541 | [type='search'],
542 | [type='time'],
543 | textarea,
544 | select
545 | {
546 | -webkit-appearance: none;
547 | -moz-appearance: none;
548 | appearance: none;
549 | background-color: #fff;
550 | border-color: #6b7280;
551 | border-width: 1px;
552 | border-radius: 0px;
553 | padding-top: 0.5rem;
554 | padding-right: 0.75rem;
555 | padding-bottom: 0.5rem;
556 | padding-left: 0.75rem;
557 | font-size: 1rem;
558 | line-height: 1.5rem;
559 | }
560 |
561 | [type='text']:focus, [type='email']:focus, [type='password']:focus, [type='search']:focus, [type='time']:focus, textarea:focus, select:focus {
562 | outline: 2px solid transparent;
563 | outline-offset: 2px;
564 | --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
565 | --tw-ring-offset-width: 0px;
566 | --tw-ring-offset-color: #fff;
567 | --tw-ring-color: #2563eb;
568 | --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
569 | --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
570 | box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
571 | border-color: #2563eb;
572 | }
573 |
574 | input::-moz-placeholder, textarea::-moz-placeholder {
575 | color: #6b7280;
576 | opacity: 1;
577 | }
578 |
579 | input:-ms-input-placeholder, textarea:-ms-input-placeholder {
580 | color: #6b7280;
581 | opacity: 1;
582 | }
583 |
584 | input::placeholder, textarea::placeholder {
585 | color: #6b7280;
586 | opacity: 1;
587 | }
588 |
589 | select {
590 | background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");
591 | background-position: right 0.5rem center;
592 | background-repeat: no-repeat;
593 | background-size: 1.5em 1.5em;
594 | padding-right: 2.5rem;
595 | -webkit-print-color-adjust: exact;
596 | color-adjust: exact;
597 | }
598 |
599 | /* Set up some default image behavior for nicer images */
600 |
601 | img {
602 | width: auto !important;
603 | border-width: 2px !important;
604 | border-color: transparent !important;
605 | --tw-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;
606 | box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important
607 | }
608 |
609 | img:hover {
610 | border-width: 2px;
611 | --tw-border-opacity: 1;
612 | border-color: rgba(243, 244, 246, var(--tw-border-opacity))
613 | }
614 |
615 | /* Overrides for Tailwind Typography prose class */
616 |
617 | .dark .prose a {
618 | --tw-text-opacity: 1;
619 | color: rgba(156, 163, 175, var(--tw-text-opacity));
620 | }
621 |
622 | .dark .prose a:hover {
623 | --tw-text-opacity: 1;
624 | color: rgba(107, 114, 128, var(--tw-text-opacity));
625 | }
626 |
627 | .dark .prose h1, .dark .prose h2, .dark .prose h3, .dark .prose h4, .dark .prose h5, .dark .prose h6 .prose hr, .dark .prose strong {
628 | --tw-text-opacity: 1;
629 | color: rgba(156, 163, 175, var(--tw-text-opacity));
630 | }
631 |
632 | .prose h2, .prose h3, .prose h4, .prose h5, .prose h6 {
633 | scroll-margin-top: 3.5em;
634 | }
635 |
636 | .prose pre code {
637 | overflow-x: auto !important
638 | }
639 |
640 | .prose .footer-nav a {
641 | text-decoration: none !important
642 | }
643 |
644 | /* Define blockquotes and some standard callout blocks */
645 |
646 | blockquote {
647 | border-radius: 0.5rem;
648 | border-left-width: 8px;
649 | --tw-border-opacity: 1;
650 | border-color: rgba(229, 231, 235, var(--tw-border-opacity));
651 | }
652 |
653 | .dark blockquote {
654 | --tw-border-opacity: 1;
655 | border-color: rgba(55, 65, 81, var(--tw-border-opacity));
656 | }
657 |
658 | blockquote {
659 | --tw-bg-opacity: 1;
660 | background-color: rgba(243, 244, 246, var(--tw-bg-opacity));
661 | }
662 |
663 | .dark blockquote {
664 | --tw-bg-opacity: 1;
665 | background-color: rgba(107, 114, 128, var(--tw-bg-opacity));
666 | }
667 |
668 | blockquote {
669 | padding: 1rem;
670 | }
671 |
672 | /* Overrides for nav/Table of Contents block */
673 |
674 | nav ul {
675 | margin-left: 0px;
676 | --tw-text-opacity: 1;
677 | color: rgba(107, 114, 128, var(--tw-text-opacity));
678 | }
679 |
680 | nav ul ul {
681 | margin-left: 1.5rem;
682 | --tw-text-opacity: 1;
683 | color: rgba(107, 114, 128, var(--tw-text-opacity));
684 | }
685 |
686 | nav ul li a {
687 | margin-bottom: 0.25rem;
688 | display: block;
689 | width: 100%;
690 | padding-top: 0.5rem;
691 | padding-right: 1rem;
692 | padding-bottom: 0.25rem;
693 | padding-left: 0.5rem;
694 | --tw-text-opacity: 1;
695 | color: rgba(107, 114, 128, var(--tw-text-opacity));
696 | }
697 |
698 | .dark nav ul li a {
699 | --tw-text-opacity: 1;
700 | color: rgba(107, 114, 128, var(--tw-text-opacity));
701 | }
702 |
703 | nav ul li a:hover {
704 | --tw-text-opacity: 1;
705 | color: rgba(17, 24, 39, var(--tw-text-opacity));
706 | }
707 |
708 | .dark nav ul li a:hover {
709 | --tw-text-opacity: 1;
710 | color: rgba(156, 163, 175, var(--tw-text-opacity));
711 | }
712 |
713 | nav ul li a.active {
714 | font-weight: 600;
715 | }
716 |
717 | .dark .prose .footer-nav a:hover {
718 | --tw-text-opacity: 1 !important;
719 | color: rgba(156, 163, 175, var(--tw-text-opacity)) !important;
720 | }
721 |
722 | /* Utilities and misc */
723 |
724 | .adjust p img, .adjust img, .adjust p iframe, .adjust iframe {
725 | margin-right: auto !important;
726 | margin-left: auto !important;
727 | padding: 0.5rem !important;
728 | --tw-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;
729 | box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important
730 | }
731 |
732 | .adjust p img:hover, .adjust img:hover {
733 | --tw-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
734 | box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
735 | }
736 |
737 | .adjust img.button {
738 | width: auto !important;
739 | --tw-shadow: 0 0 #0000 !important;
740 | box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important
741 | }
742 |
743 | .text-align-center {
744 | display: flex;
745 | justify-content: center;
746 | }
747 |
748 | .dark input {
749 | --tw-text-opacity: 1;
750 | color: rgba(156, 163, 175, var(--tw-text-opacity));
751 | }
752 |
753 | .prose {
754 | color: #374151;
755 | max-width: 100%;
756 | }
757 |
758 | .prose [class~="lead"] {
759 | color: #4b5563;
760 | font-size: 1.25em;
761 | line-height: 1.6;
762 | margin-top: 1.2em;
763 | margin-bottom: 1.2em;
764 | }
765 |
766 | .prose a {
767 | color: #1D4ED8;
768 | text-decoration: underline;
769 | font-weight: 500;
770 | }
771 |
772 | .prose a:hover {
773 | color: #1E3A8A;
774 | }
775 |
776 | .prose strong {
777 | color: #111827;
778 | font-weight: 600;
779 | }
780 |
781 | .prose ol {
782 | counter-reset: list-counter;
783 | margin-top: 1.25em;
784 | margin-bottom: 1.25em;
785 | }
786 |
787 | .prose ol > li {
788 | position: relative;
789 | counter-increment: list-counter;
790 | padding-left: 1.75em;
791 | }
792 |
793 | .prose ol > li::before {
794 | content: counter(list-counter) ".";
795 | position: absolute;
796 | font-weight: 400;
797 | color: #6b7280;
798 | left: 0;
799 | }
800 |
801 | .prose ul > li {
802 | position: relative;
803 | padding-left: 1.75em;
804 | }
805 |
806 | .prose ul > li::before {
807 | content: "";
808 | position: absolute;
809 | background-color: #d1d5db;
810 | border-radius: 50%;
811 | width: 0.375em;
812 | height: 0.375em;
813 | top: calc(0.875em - 0.1875em);
814 | left: 0.25em;
815 | }
816 |
817 | .prose hr {
818 | border-color: #e5e7eb;
819 | border-top-width: 1px;
820 | margin-top: 3em;
821 | margin-bottom: 3em;
822 | }
823 |
824 | .prose blockquote {
825 | font-weight: 500;
826 | font-style: italic;
827 | color: #111827;
828 | border-left-width: 0.25rem;
829 | border-left-color: #e5e7eb;
830 | quotes: "\201C""\201D""\2018""\2019";
831 | margin-top: 1.6em;
832 | margin-bottom: 1.6em;
833 | padding-left: 1em;
834 | }
835 |
836 | .prose blockquote p:first-of-type::before {
837 | content: open-quote;
838 | }
839 |
840 | .prose blockquote p:last-of-type::after {
841 | content: close-quote;
842 | }
843 |
844 | .prose h1 {
845 | color: #111827;
846 | font-weight: 800;
847 | font-size: 2.25em;
848 | margin-top: 0;
849 | margin-bottom: 0.8888889em;
850 | line-height: 1.1111111;
851 | }
852 |
853 | .prose h2 {
854 | color: #111827;
855 | font-weight: 700;
856 | font-size: 1.5em;
857 | margin-top: 2em;
858 | margin-bottom: 1em;
859 | line-height: 1.3333333;
860 | }
861 |
862 | .prose h3 {
863 | color: #111827;
864 | font-weight: 600;
865 | font-size: 1.25em;
866 | margin-top: 1.6em;
867 | margin-bottom: 0.6em;
868 | line-height: 1.6;
869 | }
870 |
871 | .prose h4 {
872 | color: #111827;
873 | font-weight: 600;
874 | margin-top: 1.5em;
875 | margin-bottom: 0.5em;
876 | line-height: 1.5;
877 | }
878 |
879 | .prose figure figcaption {
880 | color: #6b7280;
881 | font-size: 0.875em;
882 | line-height: 1.4285714;
883 | margin-top: 0.8571429em;
884 | }
885 |
886 | .prose code {
887 | color: #111827;
888 | font-weight: 600;
889 | font-size: 0.875em;
890 | }
891 |
892 | .prose code::before {
893 | content: "`";
894 | }
895 |
896 | .prose code::after {
897 | content: "`";
898 | }
899 |
900 | .prose a code {
901 | color: #111827;
902 | }
903 |
904 | .prose pre {
905 | color: #e5e7eb;
906 | background-color: #1f2937;
907 | overflow-x: auto;
908 | font-size: 0.875em;
909 | line-height: 1.7142857;
910 | margin-top: 1.7142857em;
911 | margin-bottom: 1.7142857em;
912 | border-radius: 0.375rem;
913 | padding-top: 0.8571429em;
914 | padding-right: 1.1428571em;
915 | padding-bottom: 0.8571429em;
916 | padding-left: 1.1428571em;
917 | }
918 |
919 | .prose pre code {
920 | background-color: transparent;
921 | border-width: 0;
922 | border-radius: 0;
923 | padding: 0;
924 | font-weight: 400;
925 | color: inherit;
926 | font-size: inherit;
927 | font-family: inherit;
928 | line-height: inherit;
929 | }
930 |
931 | .prose pre code::before {
932 | content: "";
933 | }
934 |
935 | .prose pre code::after {
936 | content: "";
937 | }
938 |
939 | .prose table {
940 | width: 100%;
941 | table-layout: auto;
942 | text-align: left;
943 | margin-top: 2em;
944 | margin-bottom: 2em;
945 | font-size: 0.875em;
946 | line-height: 1.7142857;
947 | }
948 |
949 | .prose thead {
950 | color: #111827;
951 | font-weight: 600;
952 | border-bottom-width: 1px;
953 | border-bottom-color: #d1d5db;
954 | }
955 |
956 | .prose thead th {
957 | vertical-align: bottom;
958 | padding-right: 0.5714286em;
959 | padding-bottom: 0.5714286em;
960 | padding-left: 0.5714286em;
961 | }
962 |
963 | .prose tbody tr {
964 | border-bottom-width: 1px;
965 | border-bottom-color: #e5e7eb;
966 | }
967 |
968 | .prose tbody tr:last-child {
969 | border-bottom-width: 0;
970 | }
971 |
972 | .prose tbody td {
973 | vertical-align: top;
974 | padding-top: 0.5714286em;
975 | padding-right: 0.5714286em;
976 | padding-bottom: 0.5714286em;
977 | padding-left: 0.5714286em;
978 | }
979 |
980 | .prose {
981 | font-size: 1rem;
982 | line-height: 1.75;
983 | }
984 |
985 | .prose p {
986 | margin-top: 1.25em;
987 | margin-bottom: 1.25em;
988 | }
989 |
990 | .prose img {
991 | margin-top: 2em;
992 | margin-bottom: 2em;
993 | }
994 |
995 | .prose video {
996 | margin-top: 2em;
997 | margin-bottom: 2em;
998 | }
999 |
1000 | .prose figure {
1001 | margin-top: 2em;
1002 | margin-bottom: 2em;
1003 | }
1004 |
1005 | .prose figure > * {
1006 | margin-top: 0;
1007 | margin-bottom: 0;
1008 | }
1009 |
1010 | .prose h2 code {
1011 | font-size: 0.875em;
1012 | }
1013 |
1014 | .prose h3 code {
1015 | font-size: 0.9em;
1016 | }
1017 |
1018 | .prose ul {
1019 | margin-top: 1.25em;
1020 | margin-bottom: 1.25em;
1021 | }
1022 |
1023 | .prose li {
1024 | margin-top: 0.5em;
1025 | margin-bottom: 0.5em;
1026 | }
1027 |
1028 | .prose > ul > li p {
1029 | margin-top: 0.75em;
1030 | margin-bottom: 0.75em;
1031 | }
1032 |
1033 | .prose > ul > li > *:first-child {
1034 | margin-top: 1.25em;
1035 | }
1036 |
1037 | .prose > ul > li > *:last-child {
1038 | margin-bottom: 1.25em;
1039 | }
1040 |
1041 | .prose > ol > li > *:first-child {
1042 | margin-top: 1.25em;
1043 | }
1044 |
1045 | .prose > ol > li > *:last-child {
1046 | margin-bottom: 1.25em;
1047 | }
1048 |
1049 | .prose ul ul, .prose ul ol, .prose ol ul, .prose ol ol {
1050 | margin-top: 0.75em;
1051 | margin-bottom: 0.75em;
1052 | }
1053 |
1054 | .prose hr + * {
1055 | margin-top: 0;
1056 | }
1057 |
1058 | .prose h2 + * {
1059 | margin-top: 0;
1060 | }
1061 |
1062 | .prose h3 + * {
1063 | margin-top: 0;
1064 | }
1065 |
1066 | .prose h4 + * {
1067 | margin-top: 0;
1068 | }
1069 |
1070 | .prose thead th:first-child {
1071 | padding-left: 0;
1072 | }
1073 |
1074 | .prose thead th:last-child {
1075 | padding-right: 0;
1076 | }
1077 |
1078 | .prose tbody td:first-child {
1079 | padding-left: 0;
1080 | }
1081 |
1082 | .prose tbody td:last-child {
1083 | padding-right: 0;
1084 | }
1085 |
1086 | .prose > :first-child {
1087 | margin-top: 0;
1088 | }
1089 |
1090 | .prose > :last-child {
1091 | margin-bottom: 0;
1092 | }
1093 |
1094 | .prose ul.footer-nav ::before {
1095 | display: none;
1096 | text-decoration: none;
1097 | }
1098 |
1099 | .prose-sm {
1100 | font-size: 0.875rem;
1101 | line-height: 1.7142857;
1102 | }
1103 |
1104 | .prose-sm p {
1105 | margin-top: 1.1428571em;
1106 | margin-bottom: 1.1428571em;
1107 | }
1108 |
1109 | .prose-sm [class~="lead"] {
1110 | font-size: 1.2857143em;
1111 | line-height: 1.5555556;
1112 | margin-top: 0.8888889em;
1113 | margin-bottom: 0.8888889em;
1114 | }
1115 |
1116 | .prose-sm blockquote {
1117 | margin-top: 1.3333333em;
1118 | margin-bottom: 1.3333333em;
1119 | padding-left: 1.1111111em;
1120 | }
1121 |
1122 | .prose-sm h1 {
1123 | font-size: 2.1428571em;
1124 | margin-top: 0;
1125 | margin-bottom: 0.8em;
1126 | line-height: 1.2;
1127 | }
1128 |
1129 | .prose-sm h2 {
1130 | font-size: 1.4285714em;
1131 | margin-top: 1.6em;
1132 | margin-bottom: 0.8em;
1133 | line-height: 1.4;
1134 | }
1135 |
1136 | .prose-sm h3 {
1137 | font-size: 1.2857143em;
1138 | margin-top: 1.5555556em;
1139 | margin-bottom: 0.4444444em;
1140 | line-height: 1.5555556;
1141 | }
1142 |
1143 | .prose-sm h4 {
1144 | margin-top: 1.4285714em;
1145 | margin-bottom: 0.5714286em;
1146 | line-height: 1.4285714;
1147 | }
1148 |
1149 | .prose-sm img {
1150 | margin-top: 1.7142857em;
1151 | margin-bottom: 1.7142857em;
1152 | }
1153 |
1154 | .prose-sm video {
1155 | margin-top: 1.7142857em;
1156 | margin-bottom: 1.7142857em;
1157 | }
1158 |
1159 | .prose-sm figure {
1160 | margin-top: 1.7142857em;
1161 | margin-bottom: 1.7142857em;
1162 | }
1163 |
1164 | .prose-sm figure > * {
1165 | margin-top: 0;
1166 | margin-bottom: 0;
1167 | }
1168 |
1169 | .prose-sm figure figcaption {
1170 | font-size: 0.8571429em;
1171 | line-height: 1.3333333;
1172 | margin-top: 0.6666667em;
1173 | }
1174 |
1175 | .prose-sm code {
1176 | font-size: 0.8571429em;
1177 | }
1178 |
1179 | .prose-sm h2 code {
1180 | font-size: 0.9em;
1181 | }
1182 |
1183 | .prose-sm h3 code {
1184 | font-size: 0.8888889em;
1185 | }
1186 |
1187 | .prose-sm pre {
1188 | font-size: 0.8571429em;
1189 | line-height: 1.6666667;
1190 | margin-top: 1.6666667em;
1191 | margin-bottom: 1.6666667em;
1192 | border-radius: 0.25rem;
1193 | padding-top: 0.6666667em;
1194 | padding-right: 1em;
1195 | padding-bottom: 0.6666667em;
1196 | padding-left: 1em;
1197 | }
1198 |
1199 | .prose-sm ol {
1200 | margin-top: 1.1428571em;
1201 | margin-bottom: 1.1428571em;
1202 | }
1203 |
1204 | .prose-sm ul {
1205 | margin-top: 1.1428571em;
1206 | margin-bottom: 1.1428571em;
1207 | }
1208 |
1209 | .prose-sm li {
1210 | margin-top: 0.2857143em;
1211 | margin-bottom: 0.2857143em;
1212 | }
1213 |
1214 | .prose-sm ol > li {
1215 | padding-left: 1.5714286em;
1216 | }
1217 |
1218 | .prose-sm ol > li::before {
1219 | left: 0;
1220 | }
1221 |
1222 | .prose-sm ul > li {
1223 | padding-left: 1.5714286em;
1224 | }
1225 |
1226 | .prose-sm ul > li::before {
1227 | height: 0.3571429em;
1228 | width: 0.3571429em;
1229 | top: calc(0.8571429em - 0.1785714em);
1230 | left: 0.2142857em;
1231 | }
1232 |
1233 | .prose-sm > ul > li p {
1234 | margin-top: 0.5714286em;
1235 | margin-bottom: 0.5714286em;
1236 | }
1237 |
1238 | .prose-sm > ul > li > *:first-child {
1239 | margin-top: 1.1428571em;
1240 | }
1241 |
1242 | .prose-sm > ul > li > *:last-child {
1243 | margin-bottom: 1.1428571em;
1244 | }
1245 |
1246 | .prose-sm > ol > li > *:first-child {
1247 | margin-top: 1.1428571em;
1248 | }
1249 |
1250 | .prose-sm > ol > li > *:last-child {
1251 | margin-bottom: 1.1428571em;
1252 | }
1253 |
1254 | .prose-sm ul ul, .prose-sm ul ol, .prose-sm ol ul, .prose-sm ol ol {
1255 | margin-top: 0.5714286em;
1256 | margin-bottom: 0.5714286em;
1257 | }
1258 |
1259 | .prose-sm hr {
1260 | margin-top: 2.8571429em;
1261 | margin-bottom: 2.8571429em;
1262 | }
1263 |
1264 | .prose-sm hr + * {
1265 | margin-top: 0;
1266 | }
1267 |
1268 | .prose-sm h2 + * {
1269 | margin-top: 0;
1270 | }
1271 |
1272 | .prose-sm h3 + * {
1273 | margin-top: 0;
1274 | }
1275 |
1276 | .prose-sm h4 + * {
1277 | margin-top: 0;
1278 | }
1279 |
1280 | .prose-sm table {
1281 | font-size: 0.8571429em;
1282 | line-height: 1.5;
1283 | }
1284 |
1285 | .prose-sm thead th {
1286 | padding-right: 1em;
1287 | padding-bottom: 0.6666667em;
1288 | padding-left: 1em;
1289 | }
1290 |
1291 | .prose-sm thead th:first-child {
1292 | padding-left: 0;
1293 | }
1294 |
1295 | .prose-sm thead th:last-child {
1296 | padding-right: 0;
1297 | }
1298 |
1299 | .prose-sm tbody td {
1300 | padding-top: 0.6666667em;
1301 | padding-right: 1em;
1302 | padding-bottom: 0.6666667em;
1303 | padding-left: 1em;
1304 | }
1305 |
1306 | .prose-sm tbody td:first-child {
1307 | padding-left: 0;
1308 | }
1309 |
1310 | .prose-sm tbody td:last-child {
1311 | padding-right: 0;
1312 | }
1313 |
1314 | .prose-sm > :first-child {
1315 | margin-top: 0;
1316 | }
1317 |
1318 | .prose-sm > :last-child {
1319 | margin-bottom: 0;
1320 | }
1321 |
1322 | .visible {
1323 | visibility: visible !important;
1324 | }
1325 |
1326 | .fixed {
1327 | position: fixed !important;
1328 | }
1329 |
1330 | .absolute {
1331 | position: absolute !important;
1332 | }
1333 |
1334 | .relative {
1335 | position: relative !important;
1336 | }
1337 |
1338 | .sticky {
1339 | position: sticky !important;
1340 | }
1341 |
1342 | .inset-y-0 {
1343 | top: 0px !important;
1344 | bottom: 0px !important;
1345 | }
1346 |
1347 | .top-0 {
1348 | top: 0px !important;
1349 | }
1350 |
1351 | .right-0 {
1352 | right: 0px !important;
1353 | }
1354 |
1355 | .left-0 {
1356 | left: 0px !important;
1357 | }
1358 |
1359 | .z-10 {
1360 | z-index: 10 !important;
1361 | }
1362 |
1363 | .z-20 {
1364 | z-index: 20 !important;
1365 | }
1366 |
1367 | .z-50 {
1368 | z-index: 50 !important;
1369 | }
1370 |
1371 | .float-right {
1372 | float: right !important;
1373 | }
1374 |
1375 | .clear-right {
1376 | clear: right !important;
1377 | }
1378 |
1379 | .m-0 {
1380 | margin: 0px !important;
1381 | }
1382 |
1383 | .mx-auto {
1384 | margin-left: auto !important;
1385 | margin-right: auto !important;
1386 | }
1387 |
1388 | .mt-1 {
1389 | margin-top: 0.25rem !important;
1390 | }
1391 |
1392 | .mt-4 {
1393 | margin-top: 1rem !important;
1394 | }
1395 |
1396 | .mt-8 {
1397 | margin-top: 2rem !important;
1398 | }
1399 |
1400 | .mt-12 {
1401 | margin-top: 3rem !important;
1402 | }
1403 |
1404 | .mt-20 {
1405 | margin-top: 5rem !important;
1406 | }
1407 |
1408 | .-mt-0 {
1409 | margin-top: 0px !important;
1410 | }
1411 |
1412 | .mr-1 {
1413 | margin-right: 0.25rem !important;
1414 | }
1415 |
1416 | .mr-2 {
1417 | margin-right: 0.5rem !important;
1418 | }
1419 |
1420 | .mr-3 {
1421 | margin-right: 0.75rem !important;
1422 | }
1423 |
1424 | .-mr-4 {
1425 | margin-right: -1rem !important;
1426 | }
1427 |
1428 | .mb-2 {
1429 | margin-bottom: 0.5rem !important;
1430 | }
1431 |
1432 | .mb-4 {
1433 | margin-bottom: 1rem !important;
1434 | }
1435 |
1436 | .mb-6 {
1437 | margin-bottom: 1.5rem !important;
1438 | }
1439 |
1440 | .mb-8 {
1441 | margin-bottom: 2rem !important;
1442 | }
1443 |
1444 | .ml-0 {
1445 | margin-left: 0px !important;
1446 | }
1447 |
1448 | .ml-2 {
1449 | margin-left: 0.5rem !important;
1450 | }
1451 |
1452 | .block {
1453 | display: block !important;
1454 | }
1455 |
1456 | .inline-block {
1457 | display: inline-block !important;
1458 | }
1459 |
1460 | .flex {
1461 | display: flex !important;
1462 | }
1463 |
1464 | .table {
1465 | display: table !important;
1466 | }
1467 |
1468 | .hidden {
1469 | display: none !important;
1470 | }
1471 |
1472 | .h-6 {
1473 | height: 1.5rem !important;
1474 | }
1475 |
1476 | .h-12 {
1477 | height: 3rem !important;
1478 | }
1479 |
1480 | .h-16 {
1481 | height: 4rem !important;
1482 | }
1483 |
1484 | .h-screen {
1485 | height: 100vh !important;
1486 | }
1487 |
1488 | .w-6 {
1489 | width: 1.5rem !important;
1490 | }
1491 |
1492 | .w-60 {
1493 | width: 15rem !important;
1494 | }
1495 |
1496 | .w-64 {
1497 | width: 16rem !important;
1498 | }
1499 |
1500 | .w-auto {
1501 | width: auto !important;
1502 | }
1503 |
1504 | .w-full {
1505 | width: 100% !important;
1506 | }
1507 |
1508 | .max-w-5xl {
1509 | max-width: 64rem !important;
1510 | }
1511 |
1512 | .flex-none {
1513 | flex: none !important;
1514 | }
1515 |
1516 | .flex-grow {
1517 | flex-grow: 1 !important;
1518 | }
1519 |
1520 | .transform {
1521 | --tw-translate-x: 0 !important;
1522 | --tw-translate-y: 0 !important;
1523 | --tw-rotate: 0 !important;
1524 | --tw-skew-x: 0 !important;
1525 | --tw-skew-y: 0 !important;
1526 | --tw-scale-x: 1 !important;
1527 | --tw-scale-y: 1 !important;
1528 | transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important;
1529 | }
1530 |
1531 | @-webkit-keyframes spin {
1532 | to {
1533 | transform: rotate(360deg);
1534 | }
1535 | }
1536 |
1537 | @keyframes spin {
1538 | to {
1539 | transform: rotate(360deg);
1540 | }
1541 | }
1542 |
1543 | @-webkit-keyframes ping {
1544 | 75%, 100% {
1545 | transform: scale(2);
1546 | opacity: 0;
1547 | }
1548 | }
1549 |
1550 | @keyframes ping {
1551 | 75%, 100% {
1552 | transform: scale(2);
1553 | opacity: 0;
1554 | }
1555 | }
1556 |
1557 | @-webkit-keyframes pulse {
1558 | 50% {
1559 | opacity: .5;
1560 | }
1561 | }
1562 |
1563 | @keyframes pulse {
1564 | 50% {
1565 | opacity: .5;
1566 | }
1567 | }
1568 |
1569 | @-webkit-keyframes bounce {
1570 | 0%, 100% {
1571 | transform: translateY(-25%);
1572 | -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);
1573 | animation-timing-function: cubic-bezier(0.8,0,1,1);
1574 | }
1575 |
1576 | 50% {
1577 | transform: none;
1578 | -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);
1579 | animation-timing-function: cubic-bezier(0,0,0.2,1);
1580 | }
1581 | }
1582 |
1583 | @keyframes bounce {
1584 | 0%, 100% {
1585 | transform: translateY(-25%);
1586 | -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);
1587 | animation-timing-function: cubic-bezier(0.8,0,1,1);
1588 | }
1589 |
1590 | 50% {
1591 | transform: none;
1592 | -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);
1593 | animation-timing-function: cubic-bezier(0,0,0.2,1);
1594 | }
1595 | }
1596 |
1597 | .cursor-pointer {
1598 | cursor: pointer !important;
1599 | }
1600 |
1601 | .list-none {
1602 | list-style-type: none !important;
1603 | }
1604 |
1605 | .appearance-none {
1606 | -webkit-appearance: none !important;
1607 | -moz-appearance: none !important;
1608 | appearance: none !important;
1609 | }
1610 |
1611 | .flex-row-reverse {
1612 | flex-direction: row-reverse !important;
1613 | }
1614 |
1615 | .flex-col {
1616 | flex-direction: column !important;
1617 | }
1618 |
1619 | .flex-wrap {
1620 | flex-wrap: wrap !important;
1621 | }
1622 |
1623 | .items-center {
1624 | align-items: center !important;
1625 | }
1626 |
1627 | .justify-end {
1628 | justify-content: flex-end !important;
1629 | }
1630 |
1631 | .justify-center {
1632 | justify-content: center !important;
1633 | }
1634 |
1635 | .justify-between {
1636 | justify-content: space-between !important;
1637 | }
1638 |
1639 | .space-y-4 > :not([hidden]) ~ :not([hidden]) {
1640 | --tw-space-y-reverse: 0 !important;
1641 | margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))) !important;
1642 | margin-bottom: calc(1rem * var(--tw-space-y-reverse)) !important;
1643 | }
1644 |
1645 | .divide-y > :not([hidden]) ~ :not([hidden]) {
1646 | --tw-divide-y-reverse: 0 !important;
1647 | border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))) !important;
1648 | border-bottom-width: calc(1px * var(--tw-divide-y-reverse)) !important;
1649 | }
1650 |
1651 | .divide-gray-300 > :not([hidden]) ~ :not([hidden]) {
1652 | --tw-divide-opacity: 1 !important;
1653 | border-color: rgba(209, 213, 219, var(--tw-divide-opacity)) !important;
1654 | }
1655 |
1656 | .self-center {
1657 | align-self: center !important;
1658 | }
1659 |
1660 | .overflow-y-auto {
1661 | overflow-y: auto !important;
1662 | }
1663 |
1664 | .overflow-x-hidden {
1665 | overflow-x: hidden !important;
1666 | }
1667 |
1668 | .rounded {
1669 | border-radius: 0.25rem !important;
1670 | }
1671 |
1672 | .border {
1673 | border-width: 1px !important;
1674 | }
1675 |
1676 | .border-t {
1677 | border-top-width: 1px !important;
1678 | }
1679 |
1680 | .border-r {
1681 | border-right-width: 1px !important;
1682 | }
1683 |
1684 | .border-b {
1685 | border-bottom-width: 1px !important;
1686 | }
1687 |
1688 | .border-l {
1689 | border-left-width: 1px !important;
1690 | }
1691 |
1692 | .border-gray-100 {
1693 | --tw-border-opacity: 1 !important;
1694 | border-color: rgba(243, 244, 246, var(--tw-border-opacity)) !important;
1695 | }
1696 |
1697 | .border-gray-200 {
1698 | --tw-border-opacity: 1 !important;
1699 | border-color: rgba(229, 231, 235, var(--tw-border-opacity)) !important;
1700 | }
1701 |
1702 | .border-gray-800 {
1703 | --tw-border-opacity: 1 !important;
1704 | border-color: rgba(31, 41, 55, var(--tw-border-opacity)) !important;
1705 | }
1706 |
1707 | .dark .dark\:border-gray-700 {
1708 | --tw-border-opacity: 1 !important;
1709 | border-color: rgba(55, 65, 81, var(--tw-border-opacity)) !important;
1710 | }
1711 |
1712 | .dark .dark\:border-gray-800 {
1713 | --tw-border-opacity: 1 !important;
1714 | border-color: rgba(31, 41, 55, var(--tw-border-opacity)) !important;
1715 | }
1716 |
1717 | .bg-white {
1718 | --tw-bg-opacity: 1 !important;
1719 | background-color: rgba(255, 255, 255, var(--tw-bg-opacity)) !important;
1720 | }
1721 |
1722 | .bg-gray-50 {
1723 | --tw-bg-opacity: 1 !important;
1724 | background-color: rgba(249, 250, 251, var(--tw-bg-opacity)) !important;
1725 | }
1726 |
1727 | .bg-gray-100 {
1728 | --tw-bg-opacity: 1 !important;
1729 | background-color: rgba(243, 244, 246, var(--tw-bg-opacity)) !important;
1730 | }
1731 |
1732 | .bg-green-600 {
1733 | --tw-bg-opacity: 1 !important;
1734 | background-color: rgba(5, 150, 105, var(--tw-bg-opacity)) !important;
1735 | }
1736 |
1737 | .hover\:bg-gray-200:hover {
1738 | --tw-bg-opacity: 1 !important;
1739 | background-color: rgba(229, 231, 235, var(--tw-bg-opacity)) !important;
1740 | }
1741 |
1742 | .hover\:bg-blue-600:hover {
1743 | --tw-bg-opacity: 1 !important;
1744 | background-color: rgba(37, 99, 235, var(--tw-bg-opacity)) !important;
1745 | }
1746 |
1747 | .dark .dark\:bg-gray-200 {
1748 | --tw-bg-opacity: 1 !important;
1749 | background-color: rgba(229, 231, 235, var(--tw-bg-opacity)) !important;
1750 | }
1751 |
1752 | .dark .dark\:bg-gray-500 {
1753 | --tw-bg-opacity: 1 !important;
1754 | background-color: rgba(107, 114, 128, var(--tw-bg-opacity)) !important;
1755 | }
1756 |
1757 | .dark .dark\:bg-gray-700 {
1758 | --tw-bg-opacity: 1 !important;
1759 | background-color: rgba(55, 65, 81, var(--tw-bg-opacity)) !important;
1760 | }
1761 |
1762 | .dark .dark\:bg-gray-800 {
1763 | --tw-bg-opacity: 1 !important;
1764 | background-color: rgba(31, 41, 55, var(--tw-bg-opacity)) !important;
1765 | }
1766 |
1767 | .dark .dark\:bg-gray-900 {
1768 | --tw-bg-opacity: 1 !important;
1769 | background-color: rgba(17, 24, 39, var(--tw-bg-opacity)) !important;
1770 | }
1771 |
1772 | .p-0 {
1773 | padding: 0px !important;
1774 | }
1775 |
1776 | .p-2 {
1777 | padding: 0.5rem !important;
1778 | }
1779 |
1780 | .p-4 {
1781 | padding: 1rem !important;
1782 | }
1783 |
1784 | .p-6 {
1785 | padding: 1.5rem !important;
1786 | }
1787 |
1788 | .p-8 {
1789 | padding: 2rem !important;
1790 | }
1791 |
1792 | .px-0 {
1793 | padding-left: 0px !important;
1794 | padding-right: 0px !important;
1795 | }
1796 |
1797 | .px-2 {
1798 | padding-left: 0.5rem !important;
1799 | padding-right: 0.5rem !important;
1800 | }
1801 |
1802 | .px-3 {
1803 | padding-left: 0.75rem !important;
1804 | padding-right: 0.75rem !important;
1805 | }
1806 |
1807 | .px-6 {
1808 | padding-left: 1.5rem !important;
1809 | padding-right: 1.5rem !important;
1810 | }
1811 |
1812 | .py-2 {
1813 | padding-top: 0.5rem !important;
1814 | padding-bottom: 0.5rem !important;
1815 | }
1816 |
1817 | .pt-0 {
1818 | padding-top: 0px !important;
1819 | }
1820 |
1821 | .pt-1 {
1822 | padding-top: 0.25rem !important;
1823 | }
1824 |
1825 | .pt-4 {
1826 | padding-top: 1rem !important;
1827 | }
1828 |
1829 | .pt-16 {
1830 | padding-top: 4rem !important;
1831 | }
1832 |
1833 | .pt-32 {
1834 | padding-top: 8rem !important;
1835 | }
1836 |
1837 | .pr-0 {
1838 | padding-right: 0px !important;
1839 | }
1840 |
1841 | .pr-4 {
1842 | padding-right: 1rem !important;
1843 | }
1844 |
1845 | .pb-1 {
1846 | padding-bottom: 0.25rem !important;
1847 | }
1848 |
1849 | .pl-0 {
1850 | padding-left: 0px !important;
1851 | }
1852 |
1853 | .pl-3 {
1854 | padding-left: 0.75rem !important;
1855 | }
1856 |
1857 | .pl-4 {
1858 | padding-left: 1rem !important;
1859 | }
1860 |
1861 | .text-xs {
1862 | font-size: 0.75rem !important;
1863 | line-height: 1rem !important;
1864 | }
1865 |
1866 | .text-sm {
1867 | font-size: 0.875rem !important;
1868 | line-height: 1.25rem !important;
1869 | }
1870 |
1871 | .text-lg {
1872 | font-size: 1.125rem !important;
1873 | line-height: 1.75rem !important;
1874 | }
1875 |
1876 | .text-xl {
1877 | font-size: 1.25rem !important;
1878 | line-height: 1.75rem !important;
1879 | }
1880 |
1881 | .font-normal {
1882 | font-weight: 400 !important;
1883 | }
1884 |
1885 | .font-semibold {
1886 | font-weight: 600 !important;
1887 | }
1888 |
1889 | .font-bold {
1890 | font-weight: 700 !important;
1891 | }
1892 |
1893 | .uppercase {
1894 | text-transform: uppercase !important;
1895 | }
1896 |
1897 | .leading-tight {
1898 | line-height: 1.25 !important;
1899 | }
1900 |
1901 | .tracking-wide {
1902 | letter-spacing: 0.025em !important;
1903 | }
1904 |
1905 | .text-current {
1906 | color: currentColor !important;
1907 | }
1908 |
1909 | .text-white {
1910 | --tw-text-opacity: 1 !important;
1911 | color: rgba(255, 255, 255, var(--tw-text-opacity)) !important;
1912 | }
1913 |
1914 | .text-gray-100 {
1915 | --tw-text-opacity: 1 !important;
1916 | color: rgba(243, 244, 246, var(--tw-text-opacity)) !important;
1917 | }
1918 |
1919 | .text-gray-400 {
1920 | --tw-text-opacity: 1 !important;
1921 | color: rgba(156, 163, 175, var(--tw-text-opacity)) !important;
1922 | }
1923 |
1924 | .text-gray-500 {
1925 | --tw-text-opacity: 1 !important;
1926 | color: rgba(107, 114, 128, var(--tw-text-opacity)) !important;
1927 | }
1928 |
1929 | .text-gray-600 {
1930 | --tw-text-opacity: 1 !important;
1931 | color: rgba(75, 85, 99, var(--tw-text-opacity)) !important;
1932 | }
1933 |
1934 | .hover\:text-gray-600:hover {
1935 | --tw-text-opacity: 1 !important;
1936 | color: rgba(75, 85, 99, var(--tw-text-opacity)) !important;
1937 | }
1938 |
1939 | .hover\:text-gray-800:hover {
1940 | --tw-text-opacity: 1 !important;
1941 | color: rgba(31, 41, 55, var(--tw-text-opacity)) !important;
1942 | }
1943 |
1944 | .hover\:text-yellow-400:hover {
1945 | --tw-text-opacity: 1 !important;
1946 | color: rgba(251, 191, 36, var(--tw-text-opacity)) !important;
1947 | }
1948 |
1949 | .dark .dark\:text-gray-400 {
1950 | --tw-text-opacity: 1 !important;
1951 | color: rgba(156, 163, 175, var(--tw-text-opacity)) !important;
1952 | }
1953 |
1954 | .dark .dark\:text-gray-500 {
1955 | --tw-text-opacity: 1 !important;
1956 | color: rgba(107, 114, 128, var(--tw-text-opacity)) !important;
1957 | }
1958 |
1959 | .dark .dark\:text-gray-600 {
1960 | --tw-text-opacity: 1 !important;
1961 | color: rgba(75, 85, 99, var(--tw-text-opacity)) !important;
1962 | }
1963 |
1964 | .dark .dark\:text-yellow-400 {
1965 | --tw-text-opacity: 1 !important;
1966 | color: rgba(251, 191, 36, var(--tw-text-opacity)) !important;
1967 | }
1968 |
1969 | .no-underline {
1970 | text-decoration: none !important;
1971 | }
1972 |
1973 | .placeholder-gray-300::-moz-placeholder {
1974 | --tw-placeholder-opacity: 1 !important;
1975 | color: rgba(209, 213, 219, var(--tw-placeholder-opacity)) !important;
1976 | }
1977 |
1978 | .placeholder-gray-300:-ms-input-placeholder {
1979 | --tw-placeholder-opacity: 1 !important;
1980 | color: rgba(209, 213, 219, var(--tw-placeholder-opacity)) !important;
1981 | }
1982 |
1983 | .placeholder-gray-300::placeholder {
1984 | --tw-placeholder-opacity: 1 !important;
1985 | color: rgba(209, 213, 219, var(--tw-placeholder-opacity)) !important;
1986 | }
1987 |
1988 | *, ::before, ::after {
1989 | --tw-shadow: 0 0 #0000;
1990 | }
1991 |
1992 | .shadow-md {
1993 | --tw-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06) !important;
1994 | box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important;
1995 | }
1996 |
1997 | .shadow-lg {
1998 | --tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05) !important;
1999 | box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important;
2000 | }
2001 |
2002 | *, ::before, ::after {
2003 | --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
2004 | --tw-ring-offset-width: 0px;
2005 | --tw-ring-offset-color: #fff;
2006 | --tw-ring-color: rgba(59, 130, 246, 0.5);
2007 | --tw-ring-offset-shadow: 0 0 #0000;
2008 | --tw-ring-shadow: 0 0 #0000;
2009 | }
2010 |
2011 | .focus\:ring-4:focus {
2012 | --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color) !important;
2013 | --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color) !important;
2014 | box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000) !important;
2015 | }
2016 |
2017 | .focus\:ring-blue-200:focus {
2018 | --tw-ring-opacity: 1 !important;
2019 | --tw-ring-color: rgba(191, 219, 254, var(--tw-ring-opacity)) !important;
2020 | }
2021 |
2022 | .dark .dark\:focus\:ring-gray-700:focus {
2023 | --tw-ring-opacity: 1 !important;
2024 | --tw-ring-color: rgba(55, 65, 81, var(--tw-ring-opacity)) !important;
2025 | }
2026 |
2027 | .ring-opacity-50 {
2028 | --tw-ring-opacity: 0.5 !important;
2029 | }
2030 |
2031 | .transition-colors {
2032 | transition-property: background-color, border-color, color, fill, stroke !important;
2033 | transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important;
2034 | transition-duration: 150ms !important;
2035 | }
2036 |
2037 | .duration-200 {
2038 | transition-duration: 200ms !important;
2039 | }
2040 |
2041 | @media (min-width: 640px) {
2042 | .sm\:prose {
2043 | color: #374151;
2044 | max-width: 100%;
2045 | }
2046 |
2047 | .sm\:prose [class~="lead"] {
2048 | color: #4b5563;
2049 | font-size: 1.25em;
2050 | line-height: 1.6;
2051 | margin-top: 1.2em;
2052 | margin-bottom: 1.2em;
2053 | }
2054 |
2055 | .sm\:prose a {
2056 | color: #1D4ED8;
2057 | text-decoration: underline;
2058 | font-weight: 500;
2059 | }
2060 |
2061 | .sm\:prose a:hover {
2062 | color: #1E3A8A;
2063 | }
2064 |
2065 | .sm\:prose strong {
2066 | color: #111827;
2067 | font-weight: 600;
2068 | }
2069 |
2070 | .sm\:prose ol {
2071 | counter-reset: list-counter;
2072 | margin-top: 1.25em;
2073 | margin-bottom: 1.25em;
2074 | }
2075 |
2076 | .sm\:prose ol > li {
2077 | position: relative;
2078 | counter-increment: list-counter;
2079 | padding-left: 1.75em;
2080 | }
2081 |
2082 | .sm\:prose ol > li::before {
2083 | content: counter(list-counter) ".";
2084 | position: absolute;
2085 | font-weight: 400;
2086 | color: #6b7280;
2087 | left: 0;
2088 | }
2089 |
2090 | .sm\:prose ul > li {
2091 | position: relative;
2092 | padding-left: 1.75em;
2093 | }
2094 |
2095 | .sm\:prose ul > li::before {
2096 | content: "";
2097 | position: absolute;
2098 | background-color: #d1d5db;
2099 | border-radius: 50%;
2100 | width: 0.375em;
2101 | height: 0.375em;
2102 | top: calc(0.875em - 0.1875em);
2103 | left: 0.25em;
2104 | }
2105 |
2106 | .sm\:prose hr {
2107 | border-color: #e5e7eb;
2108 | border-top-width: 1px;
2109 | margin-top: 3em;
2110 | margin-bottom: 3em;
2111 | }
2112 |
2113 | .sm\:prose blockquote {
2114 | font-weight: 500;
2115 | font-style: italic;
2116 | color: #111827;
2117 | border-left-width: 0.25rem;
2118 | border-left-color: #e5e7eb;
2119 | quotes: "\201C""\201D""\2018""\2019";
2120 | margin-top: 1.6em;
2121 | margin-bottom: 1.6em;
2122 | padding-left: 1em;
2123 | }
2124 |
2125 | .sm\:prose blockquote p:first-of-type::before {
2126 | content: open-quote;
2127 | }
2128 |
2129 | .sm\:prose blockquote p:last-of-type::after {
2130 | content: close-quote;
2131 | }
2132 |
2133 | .sm\:prose h1 {
2134 | color: #111827;
2135 | font-weight: 800;
2136 | font-size: 2.25em;
2137 | margin-top: 0;
2138 | margin-bottom: 0.8888889em;
2139 | line-height: 1.1111111;
2140 | }
2141 |
2142 | .sm\:prose h2 {
2143 | color: #111827;
2144 | font-weight: 700;
2145 | font-size: 1.5em;
2146 | margin-top: 2em;
2147 | margin-bottom: 1em;
2148 | line-height: 1.3333333;
2149 | }
2150 |
2151 | .sm\:prose h3 {
2152 | color: #111827;
2153 | font-weight: 600;
2154 | font-size: 1.25em;
2155 | margin-top: 1.6em;
2156 | margin-bottom: 0.6em;
2157 | line-height: 1.6;
2158 | }
2159 |
2160 | .sm\:prose h4 {
2161 | color: #111827;
2162 | font-weight: 600;
2163 | margin-top: 1.5em;
2164 | margin-bottom: 0.5em;
2165 | line-height: 1.5;
2166 | }
2167 |
2168 | .sm\:prose figure figcaption {
2169 | color: #6b7280;
2170 | font-size: 0.875em;
2171 | line-height: 1.4285714;
2172 | margin-top: 0.8571429em;
2173 | }
2174 |
2175 | .sm\:prose code {
2176 | color: #111827;
2177 | font-weight: 600;
2178 | font-size: 0.875em;
2179 | }
2180 |
2181 | .sm\:prose code::before {
2182 | content: "`";
2183 | }
2184 |
2185 | .sm\:prose code::after {
2186 | content: "`";
2187 | }
2188 |
2189 | .sm\:prose a code {
2190 | color: #111827;
2191 | }
2192 |
2193 | .sm\:prose pre {
2194 | color: #e5e7eb;
2195 | background-color: #1f2937;
2196 | overflow-x: auto;
2197 | font-size: 0.875em;
2198 | line-height: 1.7142857;
2199 | margin-top: 1.7142857em;
2200 | margin-bottom: 1.7142857em;
2201 | border-radius: 0.375rem;
2202 | padding-top: 0.8571429em;
2203 | padding-right: 1.1428571em;
2204 | padding-bottom: 0.8571429em;
2205 | padding-left: 1.1428571em;
2206 | }
2207 |
2208 | .sm\:prose pre code {
2209 | background-color: transparent;
2210 | border-width: 0;
2211 | border-radius: 0;
2212 | padding: 0;
2213 | font-weight: 400;
2214 | color: inherit;
2215 | font-size: inherit;
2216 | font-family: inherit;
2217 | line-height: inherit;
2218 | }
2219 |
2220 | .sm\:prose pre code::before {
2221 | content: "";
2222 | }
2223 |
2224 | .sm\:prose pre code::after {
2225 | content: "";
2226 | }
2227 |
2228 | .sm\:prose table {
2229 | width: 100%;
2230 | table-layout: auto;
2231 | text-align: left;
2232 | margin-top: 2em;
2233 | margin-bottom: 2em;
2234 | font-size: 0.875em;
2235 | line-height: 1.7142857;
2236 | }
2237 |
2238 | .sm\:prose thead {
2239 | color: #111827;
2240 | font-weight: 600;
2241 | border-bottom-width: 1px;
2242 | border-bottom-color: #d1d5db;
2243 | }
2244 |
2245 | .sm\:prose thead th {
2246 | vertical-align: bottom;
2247 | padding-right: 0.5714286em;
2248 | padding-bottom: 0.5714286em;
2249 | padding-left: 0.5714286em;
2250 | }
2251 |
2252 | .sm\:prose tbody tr {
2253 | border-bottom-width: 1px;
2254 | border-bottom-color: #e5e7eb;
2255 | }
2256 |
2257 | .sm\:prose tbody tr:last-child {
2258 | border-bottom-width: 0;
2259 | }
2260 |
2261 | .sm\:prose tbody td {
2262 | vertical-align: top;
2263 | padding-top: 0.5714286em;
2264 | padding-right: 0.5714286em;
2265 | padding-bottom: 0.5714286em;
2266 | padding-left: 0.5714286em;
2267 | }
2268 |
2269 | .sm\:prose {
2270 | font-size: 1rem;
2271 | line-height: 1.75;
2272 | }
2273 |
2274 | .sm\:prose p {
2275 | margin-top: 1.25em;
2276 | margin-bottom: 1.25em;
2277 | }
2278 |
2279 | .sm\:prose img {
2280 | margin-top: 2em;
2281 | margin-bottom: 2em;
2282 | }
2283 |
2284 | .sm\:prose video {
2285 | margin-top: 2em;
2286 | margin-bottom: 2em;
2287 | }
2288 |
2289 | .sm\:prose figure {
2290 | margin-top: 2em;
2291 | margin-bottom: 2em;
2292 | }
2293 |
2294 | .sm\:prose figure > * {
2295 | margin-top: 0;
2296 | margin-bottom: 0;
2297 | }
2298 |
2299 | .sm\:prose h2 code {
2300 | font-size: 0.875em;
2301 | }
2302 |
2303 | .sm\:prose h3 code {
2304 | font-size: 0.9em;
2305 | }
2306 |
2307 | .sm\:prose ul {
2308 | margin-top: 1.25em;
2309 | margin-bottom: 1.25em;
2310 | }
2311 |
2312 | .sm\:prose li {
2313 | margin-top: 0.5em;
2314 | margin-bottom: 0.5em;
2315 | }
2316 |
2317 | .sm\:prose > ul > li p {
2318 | margin-top: 0.75em;
2319 | margin-bottom: 0.75em;
2320 | }
2321 |
2322 | .sm\:prose > ul > li > *:first-child {
2323 | margin-top: 1.25em;
2324 | }
2325 |
2326 | .sm\:prose > ul > li > *:last-child {
2327 | margin-bottom: 1.25em;
2328 | }
2329 |
2330 | .sm\:prose > ol > li > *:first-child {
2331 | margin-top: 1.25em;
2332 | }
2333 |
2334 | .sm\:prose > ol > li > *:last-child {
2335 | margin-bottom: 1.25em;
2336 | }
2337 |
2338 | .sm\:prose ul ul, .sm\:prose ul ol, .sm\:prose ol ul, .sm\:prose ol ol {
2339 | margin-top: 0.75em;
2340 | margin-bottom: 0.75em;
2341 | }
2342 |
2343 | .sm\:prose hr + * {
2344 | margin-top: 0;
2345 | }
2346 |
2347 | .sm\:prose h2 + * {
2348 | margin-top: 0;
2349 | }
2350 |
2351 | .sm\:prose h3 + * {
2352 | margin-top: 0;
2353 | }
2354 |
2355 | .sm\:prose h4 + * {
2356 | margin-top: 0;
2357 | }
2358 |
2359 | .sm\:prose thead th:first-child {
2360 | padding-left: 0;
2361 | }
2362 |
2363 | .sm\:prose thead th:last-child {
2364 | padding-right: 0;
2365 | }
2366 |
2367 | .sm\:prose tbody td:first-child {
2368 | padding-left: 0;
2369 | }
2370 |
2371 | .sm\:prose tbody td:last-child {
2372 | padding-right: 0;
2373 | }
2374 |
2375 | .sm\:prose > :first-child {
2376 | margin-top: 0;
2377 | }
2378 |
2379 | .sm\:prose > :last-child {
2380 | margin-bottom: 0;
2381 | }
2382 |
2383 | .sm\:text-xs {
2384 | font-size: 0.75rem !important;
2385 | line-height: 1rem !important;
2386 | }
2387 | }
2388 |
2389 | @media (min-width: 768px) {
2390 | .md\:right-0 {
2391 | right: 0px !important;
2392 | }
2393 |
2394 | .md\:mx-auto {
2395 | margin-left: auto !important;
2396 | margin-right: auto !important;
2397 | }
2398 |
2399 | .md\:mr-2 {
2400 | margin-right: 0.5rem !important;
2401 | }
2402 |
2403 | .md\:ml-2 {
2404 | margin-left: 0.5rem !important;
2405 | }
2406 |
2407 | .md\:block {
2408 | display: block !important;
2409 | }
2410 |
2411 | .md\:flex {
2412 | display: flex !important;
2413 | }
2414 |
2415 | .md\:hidden {
2416 | display: none !important;
2417 | }
2418 |
2419 | .md\:h-20 {
2420 | height: 5rem !important;
2421 | }
2422 |
2423 | .md\:w-64 {
2424 | width: 16rem !important;
2425 | }
2426 |
2427 | .md\:w-1\/2 {
2428 | width: 50% !important;
2429 | }
2430 |
2431 | .md\:w-full {
2432 | width: 100% !important;
2433 | }
2434 |
2435 | .md\:max-w-lg {
2436 | max-width: 32rem !important;
2437 | }
2438 |
2439 | .md\:flex-wrap {
2440 | flex-wrap: wrap !important;
2441 | }
2442 |
2443 | .md\:justify-between {
2444 | justify-content: space-between !important;
2445 | }
2446 |
2447 | .md\:border-r {
2448 | border-right-width: 1px !important;
2449 | }
2450 |
2451 | .md\:px-6 {
2452 | padding-left: 1.5rem !important;
2453 | padding-right: 1.5rem !important;
2454 | }
2455 |
2456 | .md\:pt-20 {
2457 | padding-top: 5rem !important;
2458 | }
2459 |
2460 | .md\:pl-64 {
2461 | padding-left: 16rem !important;
2462 | }
2463 |
2464 | .md\:text-sm {
2465 | font-size: 0.875rem !important;
2466 | line-height: 1.25rem !important;
2467 | }
2468 | }
2469 |
2470 | @media (min-width: 1024px) {
2471 | .lg\:prose-lg {
2472 | font-size: 1.125rem;
2473 | line-height: 1.7777778;
2474 | }
2475 |
2476 | .lg\:prose-lg p {
2477 | margin-top: 1.3333333em;
2478 | margin-bottom: 1.3333333em;
2479 | }
2480 |
2481 | .lg\:prose-lg [class~="lead"] {
2482 | font-size: 1.2222222em;
2483 | line-height: 1.4545455;
2484 | margin-top: 1.0909091em;
2485 | margin-bottom: 1.0909091em;
2486 | }
2487 |
2488 | .lg\:prose-lg blockquote {
2489 | margin-top: 1.6666667em;
2490 | margin-bottom: 1.6666667em;
2491 | padding-left: 1em;
2492 | }
2493 |
2494 | .lg\:prose-lg h1 {
2495 | font-size: 2.6666667em;
2496 | margin-top: 0;
2497 | margin-bottom: 0.8333333em;
2498 | line-height: 1;
2499 | }
2500 |
2501 | .lg\:prose-lg h2 {
2502 | font-size: 1.6666667em;
2503 | margin-top: 1.8666667em;
2504 | margin-bottom: 1.0666667em;
2505 | line-height: 1.3333333;
2506 | }
2507 |
2508 | .lg\:prose-lg h3 {
2509 | font-size: 1.3333333em;
2510 | margin-top: 1.6666667em;
2511 | margin-bottom: 0.6666667em;
2512 | line-height: 1.5;
2513 | }
2514 |
2515 | .lg\:prose-lg h4 {
2516 | margin-top: 1.7777778em;
2517 | margin-bottom: 0.4444444em;
2518 | line-height: 1.5555556;
2519 | }
2520 |
2521 | .lg\:prose-lg img {
2522 | margin-top: 1.7777778em;
2523 | margin-bottom: 1.7777778em;
2524 | }
2525 |
2526 | .lg\:prose-lg video {
2527 | margin-top: 1.7777778em;
2528 | margin-bottom: 1.7777778em;
2529 | }
2530 |
2531 | .lg\:prose-lg figure {
2532 | margin-top: 1.7777778em;
2533 | margin-bottom: 1.7777778em;
2534 | }
2535 |
2536 | .lg\:prose-lg figure > * {
2537 | margin-top: 0;
2538 | margin-bottom: 0;
2539 | }
2540 |
2541 | .lg\:prose-lg figure figcaption {
2542 | font-size: 0.8888889em;
2543 | line-height: 1.5;
2544 | margin-top: 1em;
2545 | }
2546 |
2547 | .lg\:prose-lg code {
2548 | font-size: 0.8888889em;
2549 | }
2550 |
2551 | .lg\:prose-lg h2 code {
2552 | font-size: 0.8666667em;
2553 | }
2554 |
2555 | .lg\:prose-lg h3 code {
2556 | font-size: 0.875em;
2557 | }
2558 |
2559 | .lg\:prose-lg pre {
2560 | font-size: 0.8888889em;
2561 | line-height: 1.75;
2562 | margin-top: 2em;
2563 | margin-bottom: 2em;
2564 | border-radius: 0.375rem;
2565 | padding-top: 1em;
2566 | padding-right: 1.5em;
2567 | padding-bottom: 1em;
2568 | padding-left: 1.5em;
2569 | }
2570 |
2571 | .lg\:prose-lg ol {
2572 | margin-top: 1.3333333em;
2573 | margin-bottom: 1.3333333em;
2574 | }
2575 |
2576 | .lg\:prose-lg ul {
2577 | margin-top: 1.3333333em;
2578 | margin-bottom: 1.3333333em;
2579 | }
2580 |
2581 | .lg\:prose-lg li {
2582 | margin-top: 0.6666667em;
2583 | margin-bottom: 0.6666667em;
2584 | }
2585 |
2586 | .lg\:prose-lg ol > li {
2587 | padding-left: 1.6666667em;
2588 | }
2589 |
2590 | .lg\:prose-lg ol > li::before {
2591 | left: 0;
2592 | }
2593 |
2594 | .lg\:prose-lg ul > li {
2595 | padding-left: 1.6666667em;
2596 | }
2597 |
2598 | .lg\:prose-lg ul > li::before {
2599 | width: 0.3333333em;
2600 | height: 0.3333333em;
2601 | top: calc(0.8888889em - 0.1666667em);
2602 | left: 0.2222222em;
2603 | }
2604 |
2605 | .lg\:prose-lg > ul > li p {
2606 | margin-top: 0.8888889em;
2607 | margin-bottom: 0.8888889em;
2608 | }
2609 |
2610 | .lg\:prose-lg > ul > li > *:first-child {
2611 | margin-top: 1.3333333em;
2612 | }
2613 |
2614 | .lg\:prose-lg > ul > li > *:last-child {
2615 | margin-bottom: 1.3333333em;
2616 | }
2617 |
2618 | .lg\:prose-lg > ol > li > *:first-child {
2619 | margin-top: 1.3333333em;
2620 | }
2621 |
2622 | .lg\:prose-lg > ol > li > *:last-child {
2623 | margin-bottom: 1.3333333em;
2624 | }
2625 |
2626 | .lg\:prose-lg ul ul, .lg\:prose-lg ul ol, .lg\:prose-lg ol ul, .lg\:prose-lg ol ol {
2627 | margin-top: 0.8888889em;
2628 | margin-bottom: 0.8888889em;
2629 | }
2630 |
2631 | .lg\:prose-lg hr {
2632 | margin-top: 3.1111111em;
2633 | margin-bottom: 3.1111111em;
2634 | }
2635 |
2636 | .lg\:prose-lg hr + * {
2637 | margin-top: 0;
2638 | }
2639 |
2640 | .lg\:prose-lg h2 + * {
2641 | margin-top: 0;
2642 | }
2643 |
2644 | .lg\:prose-lg h3 + * {
2645 | margin-top: 0;
2646 | }
2647 |
2648 | .lg\:prose-lg h4 + * {
2649 | margin-top: 0;
2650 | }
2651 |
2652 | .lg\:prose-lg table {
2653 | font-size: 0.8888889em;
2654 | line-height: 1.5;
2655 | }
2656 |
2657 | .lg\:prose-lg thead th {
2658 | padding-right: 0.75em;
2659 | padding-bottom: 0.75em;
2660 | padding-left: 0.75em;
2661 | }
2662 |
2663 | .lg\:prose-lg thead th:first-child {
2664 | padding-left: 0;
2665 | }
2666 |
2667 | .lg\:prose-lg thead th:last-child {
2668 | padding-right: 0;
2669 | }
2670 |
2671 | .lg\:prose-lg tbody td {
2672 | padding-top: 0.75em;
2673 | padding-right: 0.75em;
2674 | padding-bottom: 0.75em;
2675 | padding-left: 0.75em;
2676 | }
2677 |
2678 | .lg\:prose-lg tbody td:first-child {
2679 | padding-left: 0;
2680 | }
2681 |
2682 | .lg\:prose-lg tbody td:last-child {
2683 | padding-right: 0;
2684 | }
2685 |
2686 | .lg\:prose-lg > :first-child {
2687 | margin-top: 0;
2688 | }
2689 |
2690 | .lg\:prose-lg > :last-child {
2691 | margin-bottom: 0;
2692 | }
2693 |
2694 | .lg\:w-72 {
2695 | width: 18rem !important;
2696 | }
2697 |
2698 | .lg\:px-8 {
2699 | padding-left: 2rem !important;
2700 | padding-right: 2rem !important;
2701 | }
2702 |
2703 | .lg\:pl-72 {
2704 | padding-left: 18rem !important;
2705 | }
2706 |
2707 | .lg\:text-sm {
2708 | font-size: 0.875rem !important;
2709 | line-height: 1.25rem !important;
2710 | }
2711 | }
2712 |
2713 | @media (min-width: 1280px) {
2714 | .xl\:prose-xl {
2715 | font-size: 1.25rem;
2716 | line-height: 1.8;
2717 | }
2718 |
2719 | .xl\:prose-xl p {
2720 | margin-top: 1.2em;
2721 | margin-bottom: 1.2em;
2722 | }
2723 |
2724 | .xl\:prose-xl [class~="lead"] {
2725 | font-size: 1.2em;
2726 | line-height: 1.5;
2727 | margin-top: 1em;
2728 | margin-bottom: 1em;
2729 | }
2730 |
2731 | .xl\:prose-xl blockquote {
2732 | margin-top: 1.6em;
2733 | margin-bottom: 1.6em;
2734 | padding-left: 1.0666667em;
2735 | }
2736 |
2737 | .xl\:prose-xl h1 {
2738 | font-size: 2.8em;
2739 | margin-top: 0;
2740 | margin-bottom: 0.8571429em;
2741 | line-height: 1;
2742 | }
2743 |
2744 | .xl\:prose-xl h2 {
2745 | font-size: 1.8em;
2746 | margin-top: 1.5555556em;
2747 | margin-bottom: 0.8888889em;
2748 | line-height: 1.1111111;
2749 | }
2750 |
2751 | .xl\:prose-xl h3 {
2752 | font-size: 1.5em;
2753 | margin-top: 1.6em;
2754 | margin-bottom: 0.6666667em;
2755 | line-height: 1.3333333;
2756 | }
2757 |
2758 | .xl\:prose-xl h4 {
2759 | margin-top: 1.8em;
2760 | margin-bottom: 0.6em;
2761 | line-height: 1.6;
2762 | }
2763 |
2764 | .xl\:prose-xl img {
2765 | margin-top: 2em;
2766 | margin-bottom: 2em;
2767 | }
2768 |
2769 | .xl\:prose-xl video {
2770 | margin-top: 2em;
2771 | margin-bottom: 2em;
2772 | }
2773 |
2774 | .xl\:prose-xl figure {
2775 | margin-top: 2em;
2776 | margin-bottom: 2em;
2777 | }
2778 |
2779 | .xl\:prose-xl figure > * {
2780 | margin-top: 0;
2781 | margin-bottom: 0;
2782 | }
2783 |
2784 | .xl\:prose-xl figure figcaption {
2785 | font-size: 0.9em;
2786 | line-height: 1.5555556;
2787 | margin-top: 1em;
2788 | }
2789 |
2790 | .xl\:prose-xl code {
2791 | font-size: 0.9em;
2792 | }
2793 |
2794 | .xl\:prose-xl h2 code {
2795 | font-size: 0.8611111em;
2796 | }
2797 |
2798 | .xl\:prose-xl h3 code {
2799 | font-size: 0.9em;
2800 | }
2801 |
2802 | .xl\:prose-xl pre {
2803 | font-size: 0.9em;
2804 | line-height: 1.7777778;
2805 | margin-top: 2em;
2806 | margin-bottom: 2em;
2807 | border-radius: 0.5rem;
2808 | padding-top: 1.1111111em;
2809 | padding-right: 1.3333333em;
2810 | padding-bottom: 1.1111111em;
2811 | padding-left: 1.3333333em;
2812 | }
2813 |
2814 | .xl\:prose-xl ol {
2815 | margin-top: 1.2em;
2816 | margin-bottom: 1.2em;
2817 | }
2818 |
2819 | .xl\:prose-xl ul {
2820 | margin-top: 1.2em;
2821 | margin-bottom: 1.2em;
2822 | }
2823 |
2824 | .xl\:prose-xl li {
2825 | margin-top: 0.6em;
2826 | margin-bottom: 0.6em;
2827 | }
2828 |
2829 | .xl\:prose-xl ol > li {
2830 | padding-left: 1.8em;
2831 | }
2832 |
2833 | .xl\:prose-xl ol > li::before {
2834 | left: 0;
2835 | }
2836 |
2837 | .xl\:prose-xl ul > li {
2838 | padding-left: 1.8em;
2839 | }
2840 |
2841 | .xl\:prose-xl ul > li::before {
2842 | width: 0.35em;
2843 | height: 0.35em;
2844 | top: calc(0.9em - 0.175em);
2845 | left: 0.25em;
2846 | }
2847 |
2848 | .xl\:prose-xl > ul > li p {
2849 | margin-top: 0.8em;
2850 | margin-bottom: 0.8em;
2851 | }
2852 |
2853 | .xl\:prose-xl > ul > li > *:first-child {
2854 | margin-top: 1.2em;
2855 | }
2856 |
2857 | .xl\:prose-xl > ul > li > *:last-child {
2858 | margin-bottom: 1.2em;
2859 | }
2860 |
2861 | .xl\:prose-xl > ol > li > *:first-child {
2862 | margin-top: 1.2em;
2863 | }
2864 |
2865 | .xl\:prose-xl > ol > li > *:last-child {
2866 | margin-bottom: 1.2em;
2867 | }
2868 |
2869 | .xl\:prose-xl ul ul, .xl\:prose-xl ul ol, .xl\:prose-xl ol ul, .xl\:prose-xl ol ol {
2870 | margin-top: 0.8em;
2871 | margin-bottom: 0.8em;
2872 | }
2873 |
2874 | .xl\:prose-xl hr {
2875 | margin-top: 2.8em;
2876 | margin-bottom: 2.8em;
2877 | }
2878 |
2879 | .xl\:prose-xl hr + * {
2880 | margin-top: 0;
2881 | }
2882 |
2883 | .xl\:prose-xl h2 + * {
2884 | margin-top: 0;
2885 | }
2886 |
2887 | .xl\:prose-xl h3 + * {
2888 | margin-top: 0;
2889 | }
2890 |
2891 | .xl\:prose-xl h4 + * {
2892 | margin-top: 0;
2893 | }
2894 |
2895 | .xl\:prose-xl table {
2896 | font-size: 0.9em;
2897 | line-height: 1.5555556;
2898 | }
2899 |
2900 | .xl\:prose-xl thead th {
2901 | padding-right: 0.6666667em;
2902 | padding-bottom: 0.8888889em;
2903 | padding-left: 0.6666667em;
2904 | }
2905 |
2906 | .xl\:prose-xl thead th:first-child {
2907 | padding-left: 0;
2908 | }
2909 |
2910 | .xl\:prose-xl thead th:last-child {
2911 | padding-right: 0;
2912 | }
2913 |
2914 | .xl\:prose-xl tbody td {
2915 | padding-top: 0.8888889em;
2916 | padding-right: 0.6666667em;
2917 | padding-bottom: 0.8888889em;
2918 | padding-left: 0.6666667em;
2919 | }
2920 |
2921 | .xl\:prose-xl tbody td:first-child {
2922 | padding-left: 0;
2923 | }
2924 |
2925 | .xl\:prose-xl tbody td:last-child {
2926 | padding-right: 0;
2927 | }
2928 |
2929 | .xl\:prose-xl > :first-child {
2930 | margin-top: 0;
2931 | }
2932 |
2933 | .xl\:prose-xl > :last-child {
2934 | margin-bottom: 0;
2935 | }
2936 |
2937 | .xl\:px-12 {
2938 | padding-left: 3rem !important;
2939 | padding-right: 3rem !important;
2940 | }
2941 | }
2942 |
2943 | @media (min-width: 1536px) {
2944 | }
--------------------------------------------------------------------------------
/admin/config.yml:
--------------------------------------------------------------------------------
1 | backend:
2 | name: git-gateway
3 | branch: main # Branch to update (optional; defaults to main)
4 |
5 | # Uncomment below to enable drafts
6 | # publish_mode: editorial_workflow
7 |
8 | media_folder: "static/img" # Media files will be stored in the repo under images/uploads
9 |
10 | # # Cloudinary
11 | # media_library:
12 | # name: cloudinary
13 | # config:
14 | # cloud_name: broeker
15 | # api_key: 159818251742281
16 |
17 | collections:
18 | # Our blog posts
19 | # - name: "blog" # Used in routes, e.g., /admin/collections/blog
20 | # label: "Post" # Used in the UI
21 | # folder: "posts" # The path to the folder where the documents are stored
22 | # create: true # Allow users to create new documents in this collection
23 | # slug: "{{slug}}" # Filename template, e.g., YYYY-MM-DD-title.md
24 | # fields: # The fields for each document, usually in front matter
25 | # - { label: "Title", name: "title", widget: "string" }
26 | # - { label: "Publish Date", name: "date", widget: "datetime" }
27 | # - { label: "Author", name: "author", widget: "string", default: "Anonymous" }
28 | # - { label: "Summary", name: "summary", widget: "text" }
29 | # - { label: "Tags", name: "tags", widget: "list", default: ["post"] }
30 | # - { label: "Body", name: "body", widget: "markdown" }
31 | # Our pages e.g. About
32 | - name: "pages"
33 | label: "Page"
34 | folder: "content/pages"
35 | create: true # Change to true to allow editors to create new pages
36 | slug: "{{slug}}"
37 | fields:
38 | - { label: "Title", name: "title", widget: "string" }
39 | - { label: "Publish Date", name: "date", widget: "datetime" }
40 | - { label: "Permalink", name: "permalink", widget: "string" }
41 | - label: "Navigation" # https://www.11ty.dev/docs/plugins/navigation/
42 | name: "eleventyNavigation"
43 | widget: "object"
44 | fields:
45 | - { label: "Key", name: "key", widget: "string" }
46 | - { label: "Order", name: "order", widget: "number", default: 100 }
47 | - { label: "Parent", name: "parent", widget: "string", required: false, hint: "(Optional) Enter a matching parent key to set this a nested or child page" }
48 | - { label: "Title", name: "title", widget: "string", required: false, hint: "(Optional) Enter alternate text for navigation link" }
49 | - { label: "Body", name: "body", widget: "markdown" }
50 | - label: "Globals"
51 | name: "globals"
52 | files:
53 | - label: "Site Data"
54 | name: "site_data"
55 | delete: false
56 | file: "_data/site.json"
57 | fields:
58 | - {label: "Site name", name: "name", widget: "string"}
59 | - {label: "Site subtitle", name: "subtitle", widget: "string", required: false}
60 | - {label: "Meta description", name: "description", widget: "string"}
61 | - {label: "Site footer", name: "footer", widget: "string", required: false}
62 | - {label: "Site Url", name: "url", widget: "string"}
63 | - {label: "Github Url", name: "githubUrl", widget: "string"}
64 | - {label: "Github branch", name: "githubBranch", widget: "string"}
65 | - {label: "Navigation style", name: "navigationStyle", widget: "string"}
66 | - {label: "Site emoji", name: "emoji", widget: "string", required: false}
67 | - {label: "Enable search", name: "enableSearch", widget: "boolean"}
68 | - {label: "Enable darkmode", name: "enableDarkMode", widget: "boolean"}
69 | - {label: "Enable edit button", name: "enableEditButton", widget: "boolean"}
70 | - {label: "Enable datestamp", name: "enableDatestamp", widget: "boolean"}
71 | - {label: "Enable Github link", name: "enableGithubLink", widget: "boolean"}
72 | - {label: "Enable contact form", name: "enableContact", widget: "boolean"}
73 | - {label: "Enable Netlify CMS", name: "enableNetlifyCMS", widget: "boolean", default: false}
74 | - {label: "Enable comments", name: "enableComments", widget: "boolean", default: false}
75 | - {label: "Enable encryption", name: "enableEncryption", widget: "boolean", default: false}
76 | - {label: "Enable page navigation", name: "enablePageNavigation", widget: "boolean", default: false}
77 |
--------------------------------------------------------------------------------
/admin/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Netlify CMS
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/admin/preview-templates/index.js:
--------------------------------------------------------------------------------
1 | import Page from "/admin/preview-templates/page.js";
2 | // import Post from "/admin/preview-templates/post.js";
3 |
4 | // Register the Post component as the preview for entries in the blog collection
5 | CMS.registerPreviewTemplate("pages", Page);
6 | // CMS.registerPreviewTemplate("blog", Post);
7 |
8 | CMS.registerPreviewStyle("/style.css");
9 |
10 | // Register any CSS file on the home page as a preview style
11 | // fetch("/")
12 | // .then(response => response.text())
13 | // .then(html => {
14 | // const f = document.createElement("html");
15 | // f.innerHTML = html;
16 | // Array.from(f.getElementsByTagName("link")).forEach(tag => {
17 | // if (tag.rel == "stylesheet" && !tag.media) {
18 | // CMS.registerPreviewStyle(tag.href);
19 | // }
20 | // });
21 | // });
22 |
--------------------------------------------------------------------------------
/admin/preview-templates/page.js:
--------------------------------------------------------------------------------
1 | import htm from "https://unpkg.com/htm?module";
2 |
3 | const html = htm.bind(h);
4 |
5 | // Preview component for a Page
6 | const Page = createClass({
7 | render() {
8 | const entry = this.props.entry;
9 |
10 | return html`
11 |
12 | ${entry.getIn(["data", "title"], null)}
13 |
14 | ${this.props.widgetFor("body")}
15 |
16 |
17 | `;
18 | }
19 | });
20 |
21 | export default Page;
22 |
--------------------------------------------------------------------------------
/admin/preview-templates/post.js:
--------------------------------------------------------------------------------
1 | import htm from "https://unpkg.com/htm?module";
2 | import format from "https://unpkg.com/date-fns@2.7.0/esm/format/index.js?module";
3 |
4 | const html = htm.bind(h);
5 |
6 | // Preview component for a Post
7 | const Post = createClass({
8 | render() {
9 | const entry = this.props.entry;
10 |
11 | return html`
12 |
13 |
14 | ${entry.getIn(["data", "title"], null)}
15 | Updated {{ date | readableDate }}
16 | ${entry.getIn(["data", "summary"], "")}
17 |
18 | ${this.props.widgetFor("body")}
19 |
20 |
21 | ${
22 | entry.getIn(["data", "tags"], []).map(
23 | tag =>
24 | html`
25 | ${tag}
26 | `
27 | )
28 | }
29 |
30 |
31 |
32 | `;
33 | }
34 | });
35 |
36 | export default Post;
37 |
--------------------------------------------------------------------------------
/content/images/hello.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/broeker/spacebook/e06e20b05b191e068657da8458c6220c678da573/content/images/hello.jpg
--------------------------------------------------------------------------------
/content/pages/contact.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: layouts/contact.njk
3 | title: Send a message
4 | section: contact
5 | date: Last Modified
6 | permalink: /contact/index.html
7 | ---
8 | You can use [Netlify Forms](https://www.netlify.com/docs/form-handling/) to create contact forms like this one, or any other custom forms you may wish to create. All submissions are sent directly to your Netlify dashboard (with optional notifications.) All forms utilize Netlify's native spam filter will display a CAPTCHA for any flagged submissions.
9 |
--------------------------------------------------------------------------------
/content/pages/home.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Hello, world.
3 | date: Last Modified
4 | permalink: /
5 | eleventyNavigation:
6 | key: Hello
7 | order: 0
8 | title: Hello, world.
9 | ---
10 | You have successfully launched your spacebook. If you are new here, you may want to [read the docs](https://spacebook.app/) for tips and tricks on setting up your project.
11 |
12 | 
13 |
14 | ->*Onward...*<-
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/content/pages/pages.json:
--------------------------------------------------------------------------------
1 | {
2 | "layout": "layouts/page.njk"
3 | }
4 |
--------------------------------------------------------------------------------
/filters/searchFilter.js:
--------------------------------------------------------------------------------
1 | const elasticlunr = require("elasticlunr");
2 | const emojiRegex = require('emoji-regex/RGI_Emoji.js')
3 |
4 | module.exports = function (collection) {
5 | // what fields we'd like our index to consist of
6 | var index = elasticlunr(function () {
7 | this.addField("title");
8 | this.addField("content");
9 | this.setRef("id");
10 | });
11 |
12 | // loop through each page and add it to the index
13 | collection.forEach((page) => {
14 | index.addDoc({
15 | id: page.url,
16 | title: page.template.frontMatter.data.title,
17 | content: squash(page.templateContent),
18 | });
19 | });
20 |
21 | function squash(text) {
22 | const regex = emojiRegex();
23 | var content = new String(text);
24 |
25 | // all lower case, please
26 | var content = content.toLowerCase();
27 |
28 | // remove all html elements and new lines
29 | var re = /(.*?<.*?>)/gi;
30 | var plain = unescape(content.replace(re, ''));
31 |
32 | // remove duplicated words
33 | var words = plain.split(' ');
34 | var deduped = [...(new Set(words))];
35 | var dedupedStr = deduped.join(' ')
36 |
37 | // remove short and less meaningful words
38 | var result = dedupedStr.replace(/\b(\.|\,|\<;|the|a|an|and|am|you|I|to|if|of|off|me|my|on|in|it|is|at|as|we|do|be|has|but|was|so|no|not|or|up|for)\b/gi, '');
39 | //remove newlines, and punctuation
40 | result = result.replace(/\.|\,|\?||-|—|\n/g, '');
41 | //remove repeated spaces
42 | result = result.replace(/[ ]{2,}/g, ' ');
43 | // remove most emoji
44 | result = result.replace(/([#0-9]\u20E3)|[\xA9\xAE\u203C\u2047-\u2049\u2122\u2139\u3030\u303D\u3297\u3299][\uFE00-\uFEFF]?|[\u2190-\u21FF][\uFE00-\uFEFF]?|[\u2300-\u23FF][\uFE00-\uFEFF]?|[\u2460-\u24FF][\uFE00-\uFEFF]?|[\u25A0-\u25FF][\uFE00-\uFEFF]?|[\u2600-\u27BF][\uFE00-\uFEFF]?|[\u2900-\u297F][\uFE00-\uFEFF]?|[\u2B00-\u2BF0][\uFE00-\uFEFF]?|(?:\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDEFF])[\uFE00-\uFEFF]?/g, '');
45 |
46 | let match;
47 | while (match = regex.exec(result)) {
48 | const emoji = match[0];
49 | result = result.replace(emoji,' ')
50 | }
51 |
52 | return result;
53 | }
54 |
55 | return index.toJSON();
56 | };
--------------------------------------------------------------------------------
/loader.js:
--------------------------------------------------------------------------------
1 | if (localStorage.getItem('password')) {
2 | insertPlainHTML(atob(localStorage.getItem('password')))
3 | } else {
4 | document.getElementById('staticrypt-form').addEventListener('submit', function(e) {
5 | e.preventDefault();
6 | insertPlainHTML(document.getElementById('staticrypt-password').value);
7 | });
8 | }
--------------------------------------------------------------------------------
/netlify.toml:
--------------------------------------------------------------------------------
1 | [build]
2 | publish = "_site"
3 | command = "npm run build"
4 | #command = "npm run build && set -e && find ./_site -type f -name '*.html' -exec staticrypt -f password_template.html {} $PASSWORD -o {} \\;"
5 | functions = "functions"
6 |
7 | # REDIRECT and HEADERS examples
8 |
9 | # Redirect rule example
10 | # For more information see:- https://www.netlify.com/docs/netlify-toml-reference/
11 |
12 | #[[redirects]]
13 | # from = "/*"
14 | # to = "/blog/:splat"
15 |
16 | # The default HTTP status code is 301, but you can define a different one e.g.
17 | # status = 302
18 |
19 | # Headers rule example
20 | # For more information see:- https://www.netlify.com/docs/netlify-toml-reference/
21 |
22 | #[[headers]]
23 | # Define which paths this specific [[headers]] block will cover.
24 | # for = "/*"
25 |
26 | #[headers.values]
27 | # X-Frame-Options = "DENY"
28 | # X-XSS-Protection = "1; mode=block"
29 | # Content-Security-Policy = "frame-ancestors https://www.facebook.com"
30 |
31 | # Redirects and headers are GLOBAL for all builds – they do not get scoped to
32 | # contexts no matter where you define them in the file.
33 | # For context-specific rules, use _headers or _redirects files, which are
34 | # applied on a PER-DEPLOY basis.
35 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "spacebook",
3 | "version": "1.0.0",
4 | "description": "A simple site generator based on Eleventy, Tailwind 2.0, and Alpine.js",
5 | "scripts": {
6 | "start": "eleventy --serve & postcss styles/tailwind.css --o _tmp/style.css --watch",
7 | "build": "ELEVENTY_PRODUCTION=true eleventy && NODE_ENV=production postcss styles/tailwind.css --o _site/style.css && ./node_modules/.bin/cleancss -o _site/style.css _site/style.css",
8 | "watch": "npx eleventy --watch",
9 | "debug": "DEBUG=* npx eleventy"
10 | },
11 | "repository": {
12 | "type": "git",
13 | "url": "git+https://github.com/broeker/spacebook.git"
14 | },
15 | "author": "Tim Broeker (https://www.electriccitizen.com/)",
16 | "license": "MIT",
17 | "bugs": {
18 | "url": "https://github.com/broeker/spacebook/issues"
19 | },
20 | "homepage": "https://github.com/broeker/spacebook",
21 | "devDependencies": {
22 | "@11ty/eleventy": "^0.11.1",
23 | "alpinejs": "^2.7.3",
24 | "eleventy-plugin-lazyimages": "^2.1.0",
25 | "eslint": "^7.9.0",
26 | "lazysizes": "^5.2.2",
27 | "luxon": "^1.25.0",
28 | "markdown-it": "^10.0.0",
29 | "markdown-it-anchor": "^5.3.0",
30 | "markdown-it-image-lazysizes": "^1.0.0",
31 | "postcss-cli": "^8.3.0",
32 | "prettier": "^2.1.2",
33 | "tailwindcss": "^2.0.2"
34 | },
35 | "dependencies": {
36 | "@11ty/eleventy-img": "^0.5.0",
37 | "@11ty/eleventy-navigation": "^0.1.6",
38 | "@tailwindcss/forms": "^0.2.1",
39 | "@tailwindcss/typography": "^0.3.1",
40 | "autoprefixer": "^10.1.0",
41 | "clean-css": "^4.2.1",
42 | "clean-css-cli": "^4.3.0",
43 | "elasticlunr": "^0.9.5",
44 | "eleventy-plugin-embed-everything": "^1.9.4",
45 | "eleventy-plugin-nesting-toc": "^1.2.0",
46 | "eleventy-plugin-svg-contents": "^0.7.0",
47 | "eleventy-plugin-toc": "^1.1.0",
48 | "emoji-regex": "^9.2.0",
49 | "html-minifier": "^4.0.0",
50 | "markdown-it-attrs": "^3.0.3",
51 | "markdown-it-center-text": "^1.0.4",
52 | "markdown-it-container": "^3.0.0",
53 | "markdown-it-emoji": "^2.0.0",
54 | "markdown-it-footnote": "^3.0.2",
55 | "markdown-it-for-inline": "^0.1.1",
56 | "markdown-it-linkify-images": "^2.0.0",
57 | "markdown-it-table-of-contents": "^0.5.0",
58 | "markdown-it-task-lists": "^2.1.1",
59 | "postcss": "^8.2.2",
60 | "qs": "^6.9.4",
61 | "remove": "^0.1.5",
62 | "staticrypt": "^1.3.2",
63 | "uglify-es": "^3.3.9",
64 | "url-pattern": "^1.0.3"
65 | },
66 | "main": ".eleventy.js"
67 | }
68 |
--------------------------------------------------------------------------------
/password_template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Private Page
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
136 |
142 |
143 |
144 |
145 |
146 |
147 | {crypto_tag}
148 |
149 |
227 |
228 |
252 |
258 |
259 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: [
3 | require(`tailwindcss`)(`./styles/tailwind.config.js`),
4 | require(`autoprefixer`),
5 | ],
6 | };
7 |
--------------------------------------------------------------------------------
/robots.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Robots
3 | permalink: /robots.txt
4 | layout: layouts/robots.njk
5 | ---
6 |
--------------------------------------------------------------------------------
/search-index.json.njk:
--------------------------------------------------------------------------------
1 | ---
2 | permalink: /search-index.json
3 | ---
4 | {{ collections.results | search | dump | safe }}
5 |
6 |
7 |
--------------------------------------------------------------------------------
/styles/tailwind.config.js:
--------------------------------------------------------------------------------
1 | const autoprefixer = require('autoprefixer');
2 |
3 | module.exports = {
4 | important: true,
5 | future: {
6 | removeDeprecatedGapUtilities: true,
7 | purgeLayersByDefault: true,
8 | },
9 | purge: {
10 | enabled: true,
11 | content: ["_site/**/*.html"],
12 | options: {
13 | safelist: [],
14 | },
15 | },
16 | darkMode: 'class',
17 | theme: {
18 | container: {
19 | center: true,
20 | },
21 | extend: {
22 | typography: {
23 | DEFAULT: {
24 | css: {
25 | maxWidth: '100%',
26 | a: {
27 | color: '#1D4ED8',
28 | '&:hover': {
29 | color: '#1E3A8A',
30 | },
31 | },
32 | '.prose a.edit, .tag a': {
33 | color: '#333',
34 | 'text-decoration': 'none',
35 | },
36 | 'ul.footer-nav': {
37 | '::before': {
38 | display: 'none',
39 | 'text-decoration': 'none',
40 | }
41 | },
42 | 'ul.contains-task-list': {
43 | '::before': {
44 | display: 'none',
45 | }
46 | },
47 | 'ul.spacelog': {
48 | '::before': {
49 | display: 'none',
50 | }
51 | },
52 | },
53 | },
54 | }
55 | },
56 | },
57 | variants: {},
58 | plugins: [
59 | require('@tailwindcss/typography'),
60 | require('@tailwindcss/forms'),
61 | ],
62 | }
--------------------------------------------------------------------------------
/styles/tailwind.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | @layer base {
6 |
7 | /* Set up some default image behavior for nicer images */
8 | img {
9 | @apply w-auto shadow-md border-2 border-transparent !important
10 | }
11 | img:hover {
12 | @apply border-2 border-gray-100
13 | }
14 | /* Overrides for Tailwind Typography prose class */
15 | .prose a {
16 | @apply dark:text-gray-400
17 | }
18 | .prose a:hover {
19 | @apply dark:text-gray-500
20 | }
21 | .prose h1, .prose h2, .prose h3, .prose h4, .prose h5, .prose h6 .prose hr, .prose strong {
22 | @apply dark:text-gray-400
23 | }
24 | .prose h2, .prose h3, .prose h4, .prose h5, .prose h6 {
25 | scroll-margin-top: 3.5em;
26 | }
27 | .prose pre code {
28 | @apply overflow-x-auto !important
29 | }
30 | .prose .footer-nav a {
31 | @apply no-underline !important
32 | }
33 | .prose ul.contains-task-list,
34 | .prose ul.spacelog {
35 | @apply list-none -ml-6 !important;
36 | }
37 | .prose ul.contains-task-list .task-list-item,
38 | .prose ul.spacelog {
39 | ::before {
40 | @apply hidden !important;
41 | }
42 | }
43 |
44 | /* Define blockquotes and some standard callout blocks */
45 | blockquote {
46 | @apply rounded-lg p-4 bg-gray-100 dark:bg-gray-500 border-gray-200 border-l-8 dark:border-gray-700;
47 | }
48 | .callout {
49 | @apply px-8 py-4 mb-4 rounded-lg bg-yellow-50;
50 | }
51 | .callout, .callout strong, .callout em {
52 | @apply dark:bg-gray-400 dark:text-gray-900;
53 | }
54 | .callout-blue {
55 | @apply px-8 py-4 mb-4 rounded-lg bg-blue-50;
56 | }
57 | .callout-blue, .callout-blue strong, .callout-blue em {
58 | @apply dark:text-gray-200 dark:bg-blue-900;
59 | }
60 | .callout-pink {
61 | @apply px-8 py-4 mb-4 rounded-lg bg-pink-50;
62 | }
63 | .callout-pink, .callout-pink strong, .callout-pink em {
64 | @apply dark:text-gray-200 dark:bg-pink-900;
65 | }
66 | .callout-green {
67 | @apply px-8 py-4 mb-4 rounded-lg bg-green-50;
68 | }
69 | .callout-green, .callout-green strong, .callout-green em {
70 | @apply dark:text-gray-200 dark:bg-green-900;
71 | }
72 | .warning {
73 | @apply px-8 py-4 mb-4 rounded-lg bg-red-800 text-gray-50;
74 | }
75 | .warning, .warning strong, .warning em {
76 | @apply text-gray-50 dark:bg-red-900 dark:text-gray-200;
77 | }
78 |
79 | /* Overrides for nav/Table of Contents block */
80 | nav ul {
81 | @apply ml-0 text-gray-500;
82 | }
83 | nav ul ul {
84 | @apply ml-6 text-gray-500;
85 | }
86 | nav ul li a {
87 | @apply mb-1 pt-2 pr-4 pb-1 pl-2 w-full block text-gray-500 dark:text-gray-500;
88 | }
89 | nav ul li a:hover {
90 | @apply text-gray-900 dark:text-gray-400;
91 | }
92 | nav ul li a.active {
93 | @apply font-semibold;
94 | }
95 | nav.toc ol li {
96 | @apply pt-2 !important
97 | }
98 | nav.toc ol li li {
99 | @apply pt-2 ml-4
100 | }
101 | nav.toc ol li a {
102 | @apply text-gray-500
103 | }
104 | nav.toc ol li a:hover {
105 | @apply text-gray-900
106 | }
107 | .prose .footer-nav a:hover {
108 | @apply dark:text-gray-400 !important
109 | }
110 |
111 | /* Utilities and misc */
112 | .adjust p img, .adjust img, .adjust p iframe, .adjust iframe, .twitter-tweet {
113 | @apply shadow-md ml-auto mr-auto p-2 !important
114 | }
115 | .adjust p img:hover, .adjust img:hover {
116 | @apply shadow-xl
117 | }
118 | .adjust img.button {
119 | @apply w-auto shadow-none !important
120 | }
121 | .text-align-center {
122 | @apply flex justify-center;
123 | }
124 | .icon-spacer {
125 | width: "24px";
126 | }
127 | input {
128 | @apply dark:text-gray-400
129 | }
130 | }
--------------------------------------------------------------------------------
/uploads/uws2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/broeker/spacebook/e06e20b05b191e068657da8458c6220c678da573/uploads/uws2.png
--------------------------------------------------------------------------------