Set up Hugo, add new website/content #8

Merged
raucao merged 25 commits from feature/hugo into master 2022-07-11 11:07:01 +00:00
6 changed files with 874 additions and 4 deletions
Showing only changes of commit 9e1c2bd397 - Show all commits

No files matched your search

+1 -1
View File
@@ -7,4 +7,4 @@ menu:
weight: 3
---
Projects content
{{< partial "projects" >}}
+70
View File
@@ -0,0 +1,70 @@
- name: Kosmos Chat
description: >-
Kosmos Chat is a group chat application, based
exclusively on open protocols, standards, and data
formats. All of its components can be either
self-hosted or connected to hosted services. No user
data is ever locked into hosted silos.
status: >-
An alpha version of the client app is in use by developers, and a public
beta version is planned for 2022.
links:
- section: Links
items:
- title: Overview & planned features (partially outdated)
url: https://wiki.kosmos.org/Kosmos_Chat
- title: Web client (alpha version)
url: https://hyperchannel.kosmos.org
- section: Source code
items:
- title: Hyperchannel (Web client)
url: https://github.com/67P/hyperchannel
- title: Sockethub (Protocol proxy)
url: https://github.com/sockethub/sockethub/
- name: Kosmos Accounts & Services
description: >-
Kosmos Accounts give people access to our [hosted
services]({{< ref "/services" >}}). An account
dashboard and control panel offers account management
functionality and additional integrations.
status: >-
Accounts are in beta and already in use by some
developers and other users. Registration is
currently by invitation only.
links:
- section: Links
items:
- title: Account dashboard (beta version)
url: https://accounts.kosmos.org
- title: Services
url: "/services"
- section: Source code
items:
- title: Akkounts (account dashboard/control panel)
url: https://gitea.kosmos.org/kosmos/akkounts
- title: Chef cookbooks (infrastructure automation)
url: https://gitea.kosmos.org/kosmos/chef
- name: Kredits
description: >-
Kredits are a system for tracking opensource project
contributions, enabling and facilitating the fair
and transparent use of project funds, as well as
improving project management and governance.
status: >-
We have been experimenting with the system in
pre-production for a while, and have run multiple
trials for development grant payouts. Currently
working on production migration/launch.
links:
- section: Links
items:
- title: Overview & technical details
url: https://wiki.kosmos.org/Kredits
- title: Contribution Dashboard
url: https://kredits.kosmos.org
- section: Source code
items:
- title: List of software and repositories
url: https://wiki.kosmos.org/Kredits#Software
+755 -1
View File
@@ -1 +1,755 @@
/*! tailwindcss v3.0.24 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Open Sans,sans-serif}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}h2{margin-bottom:2rem;font-size:1.125rem;line-height:1.75rem;font-weight:700}*,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.mx-auto{margin-left:auto;margin-right:auto}.-mt-12{margin-top:-3rem}.mb-8{margin-bottom:2rem}.mt-2{margin-top:.5rem}.-mt-0\.5{margin-top:-.125rem}.mr-1{margin-right:.25rem}.-mt-0{margin-top:0}.ml-16{margin-left:4rem}.mb-4{margin-bottom:1rem}.mb-2{margin-bottom:.5rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-32{height:8rem}.h-20{height:5rem}.h-6{height:1.5rem}.w-full{width:100%}.w-auto{width:auto}.max-w-5xl{max-width:64rem}.flex-shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x),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))}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-between{justify-content:space-between}.gap-6{gap:1.5rem}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2rem*var(--tw-space-x-reverse));margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)))}.border-b-2{border-bottom-width:2px}.border-b{border-bottom-width:1px}.border-teal-500{--tw-border-opacity:1;border-color:rgb(20 184 166/var(--tw-border-opacity))}.border-zinc-400{--tw-border-opacity:1;border-color:rgb(161 161 170/var(--tw-border-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-\[url\(\'\/img\/lagoon-close-02\.jpg\'\)\]{background-image:url(/img/lagoon-close-02.jpg)}.bg-cover{background-size:cover}.bg-\[center_top_30rem\]{background-position:center top 30rem}.py-8{padding-top:2rem;padding-bottom:2rem}.px-8{padding-left:2rem;padding-right:2rem}.text-left{text-align:left}.text-center{text-align:center}.align-top{vertical-align:top}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;liLine truncated
/*
! tailwindcss v3.0.24 | MIT License | https://tailwindcss.com
*/
/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/
*,
::before,
::after {
box-sizing: border-box;
/* 1 */
border-width: 0;
/* 2 */
border-style: solid;
/* 2 */
border-color: #e5e7eb;
/* 2 */
}
::before,
::after {
--tw-content: '';
}
/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
*/
html {
line-height: 1.5;
/* 1 */
-webkit-text-size-adjust: 100%;
/* 2 */
-moz-tab-size: 4;
/* 3 */
-o-tab-size: 4;
tab-size: 4;
/* 3 */
font-family: Open Sans, sans-serif;
/* 4 */
}
/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/
body {
margin: 0;
/* 1 */
line-height: inherit;
/* 2 */
}
/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/
hr {
height: 0;
/* 1 */
color: inherit;
/* 2 */
border-top-width: 1px;
/* 3 */
}
/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/
abbr:where([title]) {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
}
/*
Remove the default font size and weight for headings.
*/
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: inherit;
font-weight: inherit;
}
/*
Reset links to optimize for opt-in styling instead of opt-out.
*/
a {
color: inherit;
text-decoration: inherit;
}
/*
Add the correct font weight in Edge and Safari.
*/
b,
strong {
font-weight: bolder;
}
/*
1. Use the user's configured `mono` font family by default.
2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp,
pre {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
/* 1 */
font-size: 1em;
/* 2 */
}
/*
Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/*
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)
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)
3. Remove gaps between table borders by default.
*/
table {
text-indent: 0;
/* 1 */
border-color: inherit;
/* 2 */
border-collapse: collapse;
/* 3 */
}
/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit;
/* 1 */
font-size: 100%;
/* 1 */
line-height: inherit;
/* 1 */
color: inherit;
/* 1 */
margin: 0;
/* 2 */
padding: 0;
/* 3 */
}
/*
Remove the inheritance of text transform in Edge and Firefox.
*/
button,
select {
text-transform: none;
}
/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/
button,
[type='button'],
[type='reset'],
[type='submit'] {
-webkit-appearance: button;
/* 1 */
background-color: transparent;
/* 2 */
background-image: none;
/* 2 */
}
/*
Use the modern Firefox focus style for all focusable elements.
*/
:-moz-focusring {
outline: auto;
}
/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/
:-moz-ui-invalid {
box-shadow: none;
}
/*
Add the correct vertical alignment in Chrome and Firefox.
*/
progress {
vertical-align: baseline;
}
/*
Correct the cursor style of increment and decrement buttons in Safari.
*/
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
height: auto;
}
/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/
[type='search'] {
-webkit-appearance: textfield;
/* 1 */
outline-offset: -2px;
/* 2 */
}
/*
Remove the inner padding in Chrome and Safari on macOS.
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button;
/* 1 */
font: inherit;
/* 2 */
}
/*
Add the correct display in Chrome and Safari.
*/
summary {
display: list-item;
}
/*
Removes the default spacing and border for appropriate elements.
*/
blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
margin: 0;
}
fieldset {
margin: 0;
padding: 0;
}
legend {
padding: 0;
}
ol,
ul,
menu {
list-style: none;
margin: 0;
padding: 0;
}
/*
Prevent resizing textareas horizontally by default.
*/
textarea {
resize: vertical;
}
/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/
input::-moz-placeholder, textarea::-moz-placeholder {
opacity: 1;
/* 1 */
color: #9ca3af;
/* 2 */
}
input:-ms-input-placeholder, textarea:-ms-input-placeholder {
opacity: 1;
/* 1 */
color: #9ca3af;
/* 2 */
}
input::placeholder,
textarea::placeholder {
opacity: 1;
/* 1 */
color: #9ca3af;
/* 2 */
}
/*
Set the default cursor for buttons.
*/
button,
[role="button"] {
cursor: pointer;
}
/*
Make sure disabled buttons don't get the pointer cursor.
*/
:disabled {
cursor: default;
}
/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
This can trigger a poorly considered lint error in some tools but is included by design.
*/
img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
display: block;
/* 1 */
vertical-align: middle;
/* 2 */
}
/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/
img,
video {
max-width: 100%;
height: auto;
}
/*
Ensure the default browser behavior of the `hidden` attribute.
*/
[hidden] {
display: none;
}
h2 {
margin-bottom: 1.5rem;
font-size: 1.125rem;
line-height: 1.75rem;
font-weight: 700;
}
h2:not(:first-of-type) {
margin-top: 2rem;
}
h3 {
margin-top: 1.5rem;
}
p + p {
margin-top: 1.5rem;
}
*, ::before, ::after {
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
--tw-pan-x: ;
--tw-pan-y: ;
--tw-pinch-zoom: ;
--tw-scroll-snap-strictness: proximity;
--tw-ordinal: ;
--tw-slashed-zero: ;
--tw-numeric-figure: ;
--tw-numeric-spacing: ;
--tw-numeric-fraction: ;
--tw-ring-inset: ;
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-color: rgb(59 130 246 / 0.5);
--tw-ring-offset-shadow: 0 0 #0000;
--tw-ring-shadow: 0 0 #0000;
--tw-shadow: 0 0 #0000;
--tw-shadow-colored: 0 0 #0000;
--tw-blur: ;
--tw-brightness: ;
--tw-contrast: ;
--tw-grayscale: ;
--tw-hue-rotate: ;
--tw-invert: ;
--tw-saturate: ;
--tw-sepia: ;
--tw-drop-shadow: ;
--tw-backdrop-blur: ;
--tw-backdrop-brightness: ;
--tw-backdrop-contrast: ;
--tw-backdrop-grayscale: ;
--tw-backdrop-hue-rotate: ;
--tw-backdrop-invert: ;
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia: ;
}
.text-discreet {
--tw-text-opacity: 1;
color: rgb(113 113 122 / var(--tw-text-opacity));
}
.content {
padding-bottom: 5rem;
}
.content a {
border-bottom-width: 1px;
--tw-border-opacity: 1;
border-color: rgb(212 212 216 / var(--tw-border-opacity));
--tw-text-opacity: 1;
color: rgb(2 132 199 / var(--tw-text-opacity));
}
.content a:hover {
border-bottom-width: 1px;
--tw-border-opacity: 1;
border-color: rgb(161 161 170 / var(--tw-border-opacity));
--tw-text-opacity: 1;
color: rgb(3 105 161 / var(--tw-text-opacity));
}
.content a:visited {
--tw-text-opacity: 1;
color: rgb(79 70 229 / var(--tw-text-opacity));
}
.content a:active {
--tw-text-opacity: 1;
color: rgb(14 165 233 / var(--tw-text-opacity));
}
.mx-auto {
margin-left: auto;
margin-right: auto;
}
.-mt-12 {
margin-top: -3rem;
}
.mb-8 {
margin-bottom: 2rem;
}
.mt-2 {
margin-top: 0.5rem;
}
.mb-4 {
margin-bottom: 1rem;
}
.-mt-0\.5 {
margin-top: -0.125rem;
}
.mr-1 {
margin-right: 0.25rem;
}
.-mt-0 {
margin-top: -0px;
}
.ml-16 {
margin-left: 4rem;
}
.mb-2 {
margin-bottom: 0.5rem;
}
.block {
display: block;
}
.inline-block {
display: inline-block;
}
.flex {
display: flex;
}
.grid {
display: grid;
}
.hidden {
display: none;
}
.h-32 {
height: 8rem;
}
.h-20 {
height: 5rem;
}
.h-6 {
height: 1.5rem;
}
.w-full {
width: 100%;
}
.w-auto {
width: auto;
}
.max-w-5xl {
max-width: 64rem;
}
.flex-shrink-0 {
flex-shrink: 0;
}
.transform {
transform: translate(var(--tw-translate-x), 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));
}
.list-inside {
list-style-position: inside;
}
.list-disc {
list-style-type: disc;
}
.grid-cols-1 {
grid-template-columns: repeat(1, minmax(0, 1fr));
}
.items-center {
align-items: center;
}
.items-baseline {
align-items: baseline;
}
.justify-between {
justify-content: space-between;
}
.gap-6 {
gap: 1.5rem;
}
.space-x-8 > :not([hidden]) ~ :not([hidden]) {
--tw-space-x-reverse: 0;
margin-right: calc(2rem * var(--tw-space-x-reverse));
margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse)));
}
.border-b-2 {
border-bottom-width: 2px;
}
.border-teal-500 {
--tw-border-opacity: 1;
border-color: rgb(20 184 166 / var(--tw-border-opacity));
}
.bg-white {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}
.bg-\[url\(\'\/img\/lagoon-close-02\.jpg\'\)\] {
background-image: url('/img/lagoon-close-02.jpg');
}
.bg-cover {
background-size: cover;
}
.bg-\[center_top_30rem\] {
background-position: center top 30rem;
}
.py-8 {
padding-top: 2rem;
padding-bottom: 2rem;
}
.px-8 {
padding-left: 2rem;
padding-right: 2rem;
}
.text-left {
text-align: left;
}
.text-center {
text-align: center;
}
.align-top {
vertical-align: top;
}
.text-2xl {
font-size: 1.5rem;
line-height: 2rem;
}
.text-lg {
font-size: 1.125rem;
line-height: 1.75rem;
}
.text-sm {
font-size: 0.875rem;
line-height: 1.25rem;
}
.font-bold {
font-weight: 700;
}
.uppercase {
text-transform: uppercase;
}
.leading-relaxed {
line-height: 1.625;
}
.text-zinc-500 {
--tw-text-opacity: 1;
color: rgb(113 113 122 / var(--tw-text-opacity));
}
.\!text-black {
--tw-text-opacity: 1 !important;
color: rgb(0 0 0 / var(--tw-text-opacity)) !important;
}
@media (min-width: 640px) {
.sm\:grid-cols-2 {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (min-width: 768px) {
.md\:block {
display: block;
}
.md\:grid-cols-2 {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.md\:grid-cols-3 {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
@@ -0,0 +1,19 @@
{{ range site.Data.projects }}
<h2>{{ .name }}</h2>
<p>{{ .description | markdownify }}</p>
<p class="text-discreet">
<strong>Status:</strong> {{ .status | markdownify }}
</p>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
{{ range .links }}
<div>
<h3 class="mb-4 text-sm uppercase text-zinc-500">{{ .section }}</h3>
<ul class="list-disc list-inside leading-relaxed">
{{ range .items }}
<li><a href="{{ .url }}">{{ .title | markdownify }}</a></li>
{{ end }}
</ul>
</div>
{{ end }}
</div>
{{ end }}
@@ -4,7 +4,7 @@
{{ range .items }}
<li>
<h4 class="text-lg font-bold mb-2">
<a href="{{ .url }}" class="border-b border-zinc-400">{{ .name }}</a>
<a href="{{ .url }}" class="!text-black">{{ .name }}</a>
</h4>
<p>{{ .description }}</p>
</li>
+28 -1
View File
@@ -4,6 +4,33 @@
@layer base {
h2 {
@apply text-lg font-bold mb-8;
@apply text-lg font-bold mb-6;
}
h2:not(:first-of-type) {
@apply mt-8;
}
h3 {
@apply mt-6;
}
p + p {
@apply mt-6;
}
}
@layer components {
.text-discreet {
@apply text-zinc-500;
}
.content {
@apply pb-20;
}
.content a { @apply text-sky-600 border-b border-zinc-300; }
.content a:hover { @apply text-sky-700 border-b border-zinc-400; }
.content a:visited { @apply text-indigo-600 }
.content a:active { @apply text-sky-500; }
}