Change indenting to 1 tab (4 spaces)
It's more readable this way
This commit is contained in:
@ -1,10 +0,0 @@
|
|||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
end_of_line = lf
|
|
||||||
charset = utf-8
|
|
||||||
insert_final_newline = true
|
|
||||||
|
|
||||||
[*.{css,scss,html}]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
@ -52,9 +52,9 @@ source_url = "https://codeberg.org/daudix/duckquill"
|
|||||||
show_feed = true
|
show_feed = true
|
||||||
# Links used in the nav
|
# Links used in the nav
|
||||||
links = [
|
links = [
|
||||||
{url = "https://codeberg.org/daudix/duckquill", name = "Repo"},
|
|
||||||
{url = "$BASE_URL/demo", name = "Demo"},
|
|
||||||
{url = "$BASE_URL/blog", name = "Blog"},
|
{url = "$BASE_URL/blog", name = "Blog"},
|
||||||
|
{url = "$BASE_URL/demo", name = "Demo"},
|
||||||
|
{url = "https://codeberg.org/daudix/duckquill", name = "Repo"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[extra.footer]
|
[extra.footer]
|
||||||
|
@ -1,41 +1,41 @@
|
|||||||
.dialog-buttons {
|
.dialog-buttons {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: baseline;
|
align-items: baseline;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin-top: 6rem;
|
margin-top: 6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.inline-button {
|
.inline-button {
|
||||||
background-color: var(--fg-muted-1);
|
background-color: var(--fg-muted-1);
|
||||||
border-radius: var(--rounded-corner);
|
border-radius: var(--rounded-corner);
|
||||||
box-shadow: var(--edge-highlight);
|
box-shadow: var(--edge-highlight);
|
||||||
color: var(--fg-color);
|
color: var(--fg-color);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
padding: 0.5rem 1rem;
|
padding: 0.5rem 1rem;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
transition: var(--transition);
|
transition: var(--transition);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: var(--fg-muted-2);
|
background-color: var(--fg-muted-2);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:active {
|
&:active {
|
||||||
transform: scale(var(--active));
|
transform: scale(var(--active));
|
||||||
}
|
}
|
||||||
|
|
||||||
&.colored {
|
&.colored {
|
||||||
-webkit-backdrop-filter: unset;
|
-webkit-backdrop-filter: unset;
|
||||||
backdrop-filter: unset;
|
backdrop-filter: unset;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
color: var(--primary-color);
|
color: var(--primary-color);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: var(--primary-color-alpha);
|
background-color: var(--primary-color-alpha);
|
||||||
box-shadow: var(--edge-highlight);
|
box-shadow: var(--edge-highlight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,155 +1,155 @@
|
|||||||
section#comments {
|
section#comments {
|
||||||
#comments-wrapper {
|
#comments-wrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 2rem;
|
gap: 2rem;
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.comment {
|
.comment {
|
||||||
display: grid;
|
display: grid;
|
||||||
column-gap: 1rem;
|
column-gap: 1rem;
|
||||||
grid-template-areas:
|
grid-template-areas:
|
||||||
"avatar name "
|
"avatar name "
|
||||||
"avatar time "
|
"avatar time "
|
||||||
"avatar post "
|
"avatar post "
|
||||||
"...... interactions";
|
"...... interactions";
|
||||||
grid-template-columns: min-content;
|
grid-template-columns: min-content;
|
||||||
justify-items: start;
|
justify-items: start;
|
||||||
|
|
||||||
&.comment-reply {
|
&.comment-reply {
|
||||||
border-left: 0.25rem solid var(--fg-muted-2);
|
border-left: 0.25rem solid var(--fg-muted-2);
|
||||||
border-radius: 0.2rem;
|
border-radius: 0.2rem;
|
||||||
padding-left: 1rem;
|
padding-left: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.avatar-link {
|
.avatar-link {
|
||||||
grid-area: avatar;
|
grid-area: avatar;
|
||||||
height: 4rem;
|
height: 4rem;
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 4rem;
|
width: 4rem;
|
||||||
|
|
||||||
.avatar {
|
.avatar {
|
||||||
all: unset;
|
all: unset;
|
||||||
background-color: var(--fg-muted-1);
|
background-color: var(--fg-muted-1);
|
||||||
background-position: 50%;
|
background-position: 50%;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
border-radius: var(--rounded-corner);
|
border-radius: var(--rounded-corner);
|
||||||
box-shadow: var(--edge-highlight), var(--shadow);
|
box-shadow: var(--edge-highlight), var(--shadow);
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
transition: var(--transition);
|
transition: var(--transition);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
box-shadow: var(--edge-highlight), var(--shadow-raised);
|
box-shadow: var(--edge-highlight), var(--shadow-raised);
|
||||||
transform: rotate(10deg) scale(1.1);
|
transform: rotate(10deg) scale(1.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
&:active {
|
&:active {
|
||||||
box-shadow: var(--edge-highlight), var(--shadow);
|
box-shadow: var(--edge-highlight), var(--shadow);
|
||||||
transform: scale(var(--active));
|
transform: scale(var(--active));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.author {
|
.author {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
display: flex;
|
display: flex;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
gap: 0.25rem;
|
gap: 0.25rem;
|
||||||
grid-area: name;
|
grid-area: name;
|
||||||
|
|
||||||
.instance {
|
.instance {
|
||||||
background-color: var(--fg-muted-1);
|
background-color: var(--fg-muted-1);
|
||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
box-shadow: var(--edge-highlight);
|
box-shadow: var(--edge-highlight);
|
||||||
color: var(--fg-color);
|
color: var(--fg-color);
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
padding: 0.25rem 0.75rem;
|
padding: 0.25rem 0.75rem;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
transition: var(--transition);
|
transition: var(--transition);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: var(--fg-muted-2);
|
background-color: var(--fg-muted-2);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:active {
|
&:active {
|
||||||
transform: scale(var(--active));
|
transform: scale(var(--active));
|
||||||
}
|
}
|
||||||
|
|
||||||
&.op {
|
&.op {
|
||||||
-webkit-backdrop-filter: unset;
|
-webkit-backdrop-filter: unset;
|
||||||
backdrop-filter: unset;
|
backdrop-filter: unset;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
color: var(--primary-color);
|
color: var(--primary-color);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: var(--primary-color-alpha);
|
background-color: var(--primary-color-alpha);
|
||||||
box-shadow: var(--edge-highlight);
|
box-shadow: var(--edge-highlight);
|
||||||
}
|
}
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
content: "✔";
|
content: "✔";
|
||||||
margin-inline-end: 0.25rem;
|
margin-inline-end: 0.25rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.emoji {
|
.emoji {
|
||||||
all: unset;
|
all: unset;
|
||||||
display: inline;
|
display: inline;
|
||||||
height: 1.5em;
|
height: 1.5em;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
width: 1.5em;
|
width: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
time {
|
time {
|
||||||
color: var(--fg-muted-5);
|
color: var(--fg-muted-5);
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
grid-area: time;
|
grid-area: time;
|
||||||
}
|
}
|
||||||
|
|
||||||
main {
|
main {
|
||||||
grid-area: post;
|
grid-area: post;
|
||||||
|
|
||||||
p:last-child {
|
p:last-child {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
footer {
|
footer {
|
||||||
grid-area: interactions;
|
grid-area: interactions;
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
|
|
||||||
.faves {
|
.faves {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border-radius: var(--rounded-corner);
|
border-radius: var(--rounded-corner);
|
||||||
color: var(--red-fg);
|
color: var(--red-fg);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-variant-numeric: tabular-nums;
|
font-variant-numeric: tabular-nums;
|
||||||
padding: 0.5rem 1rem;
|
padding: 0.5rem 1rem;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
transition: var(--transition);
|
transition: var(--transition);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: var(--red-bg);
|
background-color: var(--red-bg);
|
||||||
box-shadow: var(--edge-highlight);
|
box-shadow: var(--edge-highlight);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:active {
|
&:active {
|
||||||
transform: scale(var(--active));
|
transform: scale(var(--active));
|
||||||
}
|
}
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
content: "❤️";
|
content: "❤️";
|
||||||
margin-inline-end: 0.25rem;
|
margin-inline-end: 0.25rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
226
sass/_crt.scss
226
sass/_crt.scss
@ -1,135 +1,129 @@
|
|||||||
.crt {
|
.crt {
|
||||||
margin: 1rem 0 1rem;
|
margin: 1rem 0 1rem;
|
||||||
border-radius: var(--rounded-corner);
|
border-radius: var(--rounded-corner);
|
||||||
background: radial-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.85)),
|
background: radial-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.85)), var(--primary-color);
|
||||||
var(--primary-color);
|
box-shadow: 0 0 0 1px var(--primary-color-alpha), 0 2px 6px 2px var(--primary-color-alpha), 0 4px 24px 4px var(--primary-color-alpha);
|
||||||
box-shadow: 0 0 0 1px var(--primary-color-alpha),
|
|
||||||
0 2px 6px 2px var(--primary-color-alpha),
|
|
||||||
0 4px 24px 4px var(--primary-color-alpha);
|
|
||||||
|
|
||||||
pre {
|
pre {
|
||||||
color: var(--primary-color);
|
color: var(--primary-color);
|
||||||
padding: 1rem 1rem;
|
padding: 1rem 1rem;
|
||||||
text-shadow: var(--primary-color-alpha) 0 0 4px,
|
text-shadow: var(--primary-color-alpha) 0 0 4px, var(--primary-color) 0 0 12px;
|
||||||
var(--primary-color) 0 0 12px;
|
// Unset some <pre> stuff
|
||||||
// Unset some <pre> stuff
|
background-color: unset;
|
||||||
background-color: unset;
|
box-shadow: unset;
|
||||||
box-shadow: unset;
|
margin: unset;
|
||||||
margin: unset;
|
animation: flicker 250ms alternate infinite;
|
||||||
animation: flicker 250ms alternate infinite;
|
|
||||||
|
|
||||||
@keyframes flicker {
|
@keyframes flicker {
|
||||||
from {
|
from {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
25% {
|
|
||||||
opacity: 0.95;
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
opacity: 0.85;
|
|
||||||
}
|
|
||||||
75% {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 0.9;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-reduced-motion) {
|
25% {
|
||||||
animation: none;
|
opacity: 0.95;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
50% {
|
||||||
|
opacity: 0.85;
|
||||||
|
}
|
||||||
|
|
||||||
|
75% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
opacity: 0.9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion) {
|
||||||
|
animation: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.scanlines {
|
.scanlines {
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
animation: scanlines 250ms linear infinite;
|
animation: scanlines 250ms linear infinite;
|
||||||
background: repeating-linear-gradient(
|
background: repeating-linear-gradient(to top, rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.25) 1px, transparent 3px, transparent 4px);
|
||||||
to top,
|
content: "";
|
||||||
rgba(0, 0, 0, 0.25),
|
display: block;
|
||||||
rgba(0, 0, 0, 0.25) 1px,
|
height: calc(100% + 0.5rem);
|
||||||
transparent 3px,
|
left: 0;
|
||||||
transparent 4px
|
pointer-events: none;
|
||||||
);
|
position: absolute;
|
||||||
content: "";
|
top: 0;
|
||||||
display: block;
|
width: 100%;
|
||||||
height: calc(100% + 0.5rem);
|
z-index: 1;
|
||||||
left: 0;
|
|
||||||
pointer-events: none;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
width: 100%;
|
|
||||||
z-index: 1;
|
|
||||||
|
|
||||||
@keyframes scanlines {
|
@keyframes scanlines {
|
||||||
from {
|
from {
|
||||||
transform: translateY(-0.5rem);
|
transform: translateY(-0.5rem);
|
||||||
}
|
}
|
||||||
to {
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-reduced-motion) {
|
to {
|
||||||
animation: none;
|
transform: translateY(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&::after {
|
@media (prefers-reduced-motion) {
|
||||||
animation: scanline 5s linear infinite;
|
animation: none;
|
||||||
background: linear-gradient(
|
}
|
||||||
to top,
|
}
|
||||||
transparent 0%,
|
|
||||||
var(--primary-color-alpha) 10%,
|
|
||||||
transparent 100%
|
|
||||||
);
|
|
||||||
bottom: 100%;
|
|
||||||
content: "";
|
|
||||||
display: block;
|
|
||||||
height: 8rem;
|
|
||||||
left: 0;
|
|
||||||
pointer-events: none;
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
@keyframes scanline {
|
&::after {
|
||||||
from {
|
animation: scanline 5s linear infinite;
|
||||||
bottom: 100%;
|
background: linear-gradient(to top, transparent 0%, var(--primary-color-alpha) 10%, transparent 100%);
|
||||||
}
|
bottom: 100%;
|
||||||
50% {
|
content: "";
|
||||||
bottom: 100%;
|
display: block;
|
||||||
}
|
height: 8rem;
|
||||||
to {
|
left: 0;
|
||||||
bottom: -8rem;
|
pointer-events: none;
|
||||||
}
|
position: absolute;
|
||||||
}
|
width: 100%;
|
||||||
|
|
||||||
@media (prefers-reduced-motion) {
|
@keyframes scanline {
|
||||||
animation: none;
|
from {
|
||||||
}
|
bottom: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
bottom: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
bottom: -8rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion) {
|
||||||
|
animation: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.cursor {
|
.cursor {
|
||||||
animation: cursor-blink 1s infinite;
|
animation: cursor-blink 1s infinite;
|
||||||
|
|
||||||
@keyframes cursor-blink {
|
@keyframes cursor-blink {
|
||||||
from {
|
from {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
50% {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
75% {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (prefers-reduced-motion) {
|
50% {
|
||||||
animation: none;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
75% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion) {
|
||||||
|
animation: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
#site-footer {
|
#site-footer {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding: 3rem 0 3rem;
|
padding: 3rem 0 3rem;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
margin-top: 4rem;
|
margin-top: 4rem;
|
||||||
|
|
||||||
details {
|
details {
|
||||||
all: unset;
|
all: unset;
|
||||||
color: var(--fg-muted-5);
|
color: var(--fg-muted-5);
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#johnvertisement {
|
#johnvertisement {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
display: block;
|
display: block;
|
||||||
width: min(728px, 100vw);
|
width: min(728px, 100vw);
|
||||||
height: min(90px, 12.367vw);
|
height: min(90px, 12.367vw);
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
.link-page::after {
|
.link-page::after {
|
||||||
content: " →";
|
content: " →";
|
||||||
}
|
}
|
||||||
|
|
||||||
.link-site::after {
|
.link-site::after {
|
||||||
content: " ↗";
|
content: " ↗";
|
||||||
}
|
}
|
||||||
|
396
sass/_main.scss
396
sass/_main.scss
@ -1,15 +1,15 @@
|
|||||||
* {
|
* {
|
||||||
-moz-box-sizing: border-box;
|
-moz-box-sizing: border-box;
|
||||||
-webkit-box-sizing: border-box;
|
-webkit-box-sizing: border-box;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
html {
|
html {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
scroll-behavior: smooth;
|
scroll-behavior: smooth;
|
||||||
// scrollbar-color: var(--primary-color) transparent;
|
// scrollbar-color: var(--primary-color) transparent;
|
||||||
accent-color: var(--primary-color);
|
accent-color: var(--primary-color);
|
||||||
overflow-wrap: break-word;
|
overflow-wrap: break-word;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Smaller font size on mobile
|
// Smaller font size on mobile
|
||||||
@ -21,51 +21,51 @@ html {
|
|||||||
|
|
||||||
html,
|
html,
|
||||||
body {
|
body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: var(--font-system);
|
font-family: var(--font-system);
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
color: var(--fg-color);
|
color: var(--fg-color);
|
||||||
background: var(--bg-color);
|
background: var(--bg-color);
|
||||||
// Put footer at the bottom for short pages, such as the 404
|
// Put footer at the bottom for short pages, such as the 404
|
||||||
display: grid;
|
display: grid;
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
grid-template-rows: auto minmax(auto, 1fr) auto; // Header, stuff, footer
|
grid-template-rows: auto minmax(auto, 1fr) auto; // Header, stuff, footer
|
||||||
}
|
}
|
||||||
|
|
||||||
// Style text selection to use primary color
|
// Style text selection to use primary color
|
||||||
::selection {
|
::selection {
|
||||||
color: var(--fg-color);
|
color: var(--fg-color);
|
||||||
background-color: var(--primary-color);
|
background-color: var(--primary-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make focused anchor not get covered by nav,
|
// Make focused anchor not get covered by nav,
|
||||||
// and flash it with primary color when jumping to it
|
// and flash it with primary color when jumping to it
|
||||||
:target:not(#main) {
|
:target:not(#main) {
|
||||||
scroll-margin-top: 15vh;
|
scroll-margin-top: 15vh;
|
||||||
animation: var(--transition-long) 1s highlight-in-out;
|
animation: var(--transition-long) 1s highlight-in-out;
|
||||||
color: var(--primary-color);
|
color: var(--primary-color);
|
||||||
text-shadow: var(--primary-color-alpha) 0 0 4px, var(--primary-color) 0 0 12px;
|
text-shadow: var(--primary-color-alpha) 0 0 4px, var(--primary-color) 0 0 12px;
|
||||||
|
|
||||||
@keyframes highlight-in-out {
|
@keyframes highlight-in-out {
|
||||||
50% {
|
50% {
|
||||||
letter-spacing: 0.125rem;
|
letter-spacing: 0.125rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (prefers-reduced-motion) {
|
@media (prefers-reduced-motion) {
|
||||||
animation: none;
|
animation: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// LAYOUT
|
// LAYOUT
|
||||||
.container {
|
.container {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
width: min(var(--content-width), 90%);
|
width: min(var(--content-width), 90%);
|
||||||
}
|
}
|
||||||
|
|
||||||
h1,
|
h1,
|
||||||
@ -74,259 +74,259 @@ h3,
|
|||||||
h4,
|
h4,
|
||||||
h5,
|
h5,
|
||||||
h6 {
|
h6 {
|
||||||
font-family: var(--font-serif);
|
font-family: var(--font-serif);
|
||||||
font-weight: lighter;
|
font-weight: lighter;
|
||||||
line-height: 1.25;
|
line-height: 1.25;
|
||||||
margin: 3rem 0 1rem;
|
margin: 3rem 0 1rem;
|
||||||
|
|
||||||
.zola-anchor {
|
.zola-anchor {
|
||||||
display: none;
|
display: none;
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover .zola-anchor {
|
&:hover .zola-anchor {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 3rem;
|
font-size: 3rem;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
letter-spacing: -0.15rem;
|
letter-spacing: -0.15rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
font-size: 2.4rem;
|
font-size: 2.4rem;
|
||||||
letter-spacing: -0.15rem;
|
letter-spacing: -0.15rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
letter-spacing: -0.1rem;
|
letter-spacing: -0.1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
font-size: 1.25rem;
|
font-size: 1.25rem;
|
||||||
letter-spacing: -0.05rem;
|
letter-spacing: -0.05rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
h5 {
|
h5 {
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
letter-spacing: -0.05rem;
|
letter-spacing: -0.05rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
h6 {
|
h6 {
|
||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: var(--primary-color);
|
color: var(--primary-color);
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
text-decoration: underline wavy;
|
text-decoration: underline wavy;
|
||||||
-webkit-text-decoration: underline wavy;
|
-webkit-text-decoration: underline wavy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
small {
|
small {
|
||||||
color: var(--fg-muted-5);
|
color: var(--fg-muted-5);
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
dl {
|
dl {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
|
||||||
dt {
|
dt {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
dd {
|
dd {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hr {
|
hr {
|
||||||
border: 0;
|
border: 0;
|
||||||
border-top: 1px solid var(--fg-muted-2);
|
border-top: 1px solid var(--fg-muted-2);
|
||||||
margin: 2rem auto;
|
margin: 2rem auto;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blog-list hr:last-of-type {
|
.blog-list hr:last-of-type {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
blockquote {
|
blockquote {
|
||||||
border-left: 0.25rem solid var(--primary-color);
|
border-left: 0.25rem solid var(--primary-color);
|
||||||
border-radius: 0.2rem;
|
border-radius: 0.2rem;
|
||||||
color: var(--fg-muted-5);
|
color: var(--fg-muted-5);
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0 0.75rem;
|
padding: 0 0.75rem;
|
||||||
|
|
||||||
& & {
|
& & {
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abbr {
|
abbr {
|
||||||
cursor: help;
|
cursor: help;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
-webkit-text-decoration: underline;
|
-webkit-text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
aside {
|
aside {
|
||||||
background-color: var(--primary-color-alpha);
|
background-color: var(--primary-color-alpha);
|
||||||
border-radius: var(--rounded-corner);
|
border-radius: var(--rounded-corner);
|
||||||
box-shadow: var(--edge-highlight);
|
box-shadow: var(--edge-highlight);
|
||||||
float: right;
|
float: right;
|
||||||
margin-inline-start: 1rem;
|
margin-inline-start: 1rem;
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
width: 30%;
|
width: 30%;
|
||||||
|
|
||||||
@media only screen and (max-width: 720px) {
|
@media only screen and (max-width: 720px) {
|
||||||
& {
|
& {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
float: none;
|
float: none;
|
||||||
margin-inline-start: 0;
|
margin-inline-start: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// CODE
|
// CODE
|
||||||
pre,
|
pre,
|
||||||
code,
|
code,
|
||||||
kbd {
|
kbd {
|
||||||
font-family: var(--font-monospace);
|
font-family: var(--font-monospace);
|
||||||
}
|
}
|
||||||
|
|
||||||
code:not(pre code) {
|
code:not(pre code) {
|
||||||
background-color: var(--fg-muted-2);
|
background-color: var(--fg-muted-2);
|
||||||
border-radius: var(--rounded-corner-small);
|
border-radius: var(--rounded-corner-small);
|
||||||
box-shadow: var(--edge-highlight);
|
box-shadow: var(--edge-highlight);
|
||||||
color: var(--red-fg);
|
color: var(--red-fg);
|
||||||
padding: 0.125rem 0.375rem;
|
padding: 0.125rem 0.375rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
pre {
|
pre {
|
||||||
border-radius: var(--rounded-corner);
|
border-radius: var(--rounded-corner);
|
||||||
box-shadow: var(--edge-highlight), var(--shadow);
|
box-shadow: var(--edge-highlight), var(--shadow);
|
||||||
line-height: normal; // Unset line height
|
line-height: normal; // Unset line height
|
||||||
margin: 1rem 0 1rem;
|
margin: 1rem 0 1rem;
|
||||||
max-width: 100vw;
|
max-width: 100vw;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
|
|
||||||
table td {
|
table td {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
// The line number cells
|
// The line number cells
|
||||||
table td:nth-of-type(1) {
|
table td:nth-of-type(1) {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
mark {
|
mark {
|
||||||
background-color: var(--fg-muted-1);
|
background-color: var(--fg-muted-1);
|
||||||
border-radius: 0; // Unset code block border radius
|
border-radius: 0; // Unset code block border radius
|
||||||
color: var(--fg-color); // Unset mark color from primary color to text color
|
color: var(--fg-color); // Unset mark color from primary color to text color
|
||||||
display: block;
|
display: block;
|
||||||
padding: 0; // Unset mark padding
|
padding: 0; // Unset mark padding
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
}
|
}
|
||||||
|
|
||||||
// The line numbers already provide some kind of left/right padding
|
// The line numbers already provide some kind of left/right padding
|
||||||
&[data-linenos] {
|
&[data-linenos] {
|
||||||
padding: 1rem 0;
|
padding: 1rem 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kbd {
|
kbd {
|
||||||
background-color: var(--fg-muted-2);
|
background-color: var(--fg-muted-2);
|
||||||
border-radius: var(--rounded-corner-small);
|
border-radius: var(--rounded-corner-small);
|
||||||
box-shadow: inset 0 -2px 0 var(--fg-muted-2), 0 -1px 0 var(--fg-muted-3);
|
box-shadow: inset 0 -2px 0 var(--fg-muted-2), 0 -1px 0 var(--fg-muted-3);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
line-height: normal;
|
line-height: normal;
|
||||||
padding: 0.125rem 0.375rem;
|
padding: 0.125rem 0.375rem;
|
||||||
transition: var(--transition);
|
transition: var(--transition);
|
||||||
|
|
||||||
// Small nice thingy, keys can be pressed!
|
// Small nice thingy, keys can be pressed!
|
||||||
&:active {
|
&:active {
|
||||||
background-color: var(--fg-muted-3);
|
background-color: var(--fg-muted-3);
|
||||||
box-shadow: inset 0 1px 0 var(--fg-muted-2);
|
box-shadow: inset 0 1px 0 var(--fg-muted-2);
|
||||||
transform: translateY(2px);
|
transform: translateY(2px);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mark {
|
mark {
|
||||||
background-color: var(--primary-color-alpha);
|
background-color: var(--primary-color-alpha);
|
||||||
border-radius: var(--rounded-corner-small);
|
border-radius: var(--rounded-corner-small);
|
||||||
box-shadow: var(--edge-highlight);
|
box-shadow: var(--edge-highlight);
|
||||||
color: var(--primary-color);
|
color: var(--primary-color);
|
||||||
padding: 0.125rem 0.375rem;
|
padding: 0.125rem 0.375rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
figcaption {
|
figcaption {
|
||||||
display: block;
|
display: block;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: var(--fg-muted-4);
|
color: var(--fg-muted-4);
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
details {
|
details {
|
||||||
background-color: var(--fg-muted-1);
|
background-color: var(--fg-muted-1);
|
||||||
border-radius: var(--rounded-corner);
|
border-radius: var(--rounded-corner);
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
|
|
||||||
& > summary {
|
&>summary {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TABLES
|
// TABLES
|
||||||
table {
|
table {
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
border-radius: var(--rounded-corner);
|
border-radius: var(--rounded-corner);
|
||||||
box-shadow: var(--edge-highlight);
|
box-shadow: var(--edge-highlight);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
table-layout: fixed;
|
table-layout: fixed;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
th {
|
th {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
th,
|
th,
|
||||||
td {
|
td {
|
||||||
padding: 0.5rem 1rem;
|
padding: 0.5rem 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
tr {
|
tr {
|
||||||
&:nth-child(even) {
|
&:nth-child(even) {
|
||||||
background-color: var(--fg-muted-1);
|
background-color: var(--fg-muted-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
th {
|
th {
|
||||||
background-color: var(--fg-muted-2);
|
background-color: var(--fg-muted-2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
td,
|
td,
|
||||||
th {
|
th {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
@ -1,36 +1,35 @@
|
|||||||
img,
|
img,
|
||||||
video {
|
video {
|
||||||
border-radius: var(--rounded-corner);
|
border-radius: var(--rounded-corner);
|
||||||
box-shadow: var(--shadow);
|
box-shadow: var(--shadow);
|
||||||
display: block;
|
display: block;
|
||||||
margin: 1rem auto;
|
margin: 1rem auto;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
|
|
||||||
&.full {
|
&.full {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.pixels {
|
&.pixels {
|
||||||
image-rendering: pixelated;
|
image-rendering: pixelated;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.transparent {
|
&.transparent {
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
transition: var(--transition-longer);
|
transition: var(--transition-longer);
|
||||||
|
|
||||||
&:not(.no-hover) {
|
&:not(.no-hover) {
|
||||||
cursor: zoom-in;
|
cursor: zoom-in;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:not(.no-hover):hover {
|
&:not(.no-hover):hover {
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
box-shadow: var(--shadow-raised);
|
box-shadow: var(--shadow-raised);
|
||||||
transform: scale(1.1);
|
transform: scale(1.1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
166
sass/_nav.scss
166
sass/_nav.scss
@ -1,100 +1,100 @@
|
|||||||
#site-nav {
|
#site-nav {
|
||||||
-webkit-backdrop-filter: var(--blur);
|
-webkit-backdrop-filter: var(--blur);
|
||||||
backdrop-filter: var(--blur);
|
backdrop-filter: var(--blur);
|
||||||
background-color: var(--nav-bg);
|
background-color: var(--nav-bg);
|
||||||
border-radius: 26px;
|
border-radius: 26px;
|
||||||
box-shadow: var(--edge-highlight), 0px 12px 24px -16px rgba(0, 0, 0, 0.5);
|
box-shadow: var(--edge-highlight), 0px 12px 24px -16px rgba(0, 0, 0, 0.5);
|
||||||
margin: 1rem auto;
|
margin: 1rem auto;
|
||||||
max-width: min(calc(var(--content-width) + 10rem), 90%);
|
max-width: min(calc(var(--content-width) + 10rem), 90%);
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 1rem;
|
top: 1rem;
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
|
|
||||||
nav {
|
nav {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 0.5rem;
|
padding: 0.5rem;
|
||||||
|
|
||||||
ul {
|
ul {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
gap: 0.25rem;
|
gap: 0.25rem;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
li {
|
li {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
color: var(--fg-muted-4);
|
color: var(--fg-muted-4);
|
||||||
padding: 0.325rem 0.75rem;
|
padding: 0.325rem 0.75rem;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
transition: var(--transition);
|
transition: var(--transition);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: var(--fg-muted-1);
|
background-color: var(--fg-muted-1);
|
||||||
box-shadow: var(--edge-highlight);
|
box-shadow: var(--edge-highlight);
|
||||||
color: var(--primary-color);
|
color: var(--primary-color);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:active {
|
&:active {
|
||||||
transform: scale(var(--active));
|
transform: scale(var(--active));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#main-content {
|
#main-content {
|
||||||
background: var(--bg-color);
|
background: var(--bg-color);
|
||||||
position: absolute;
|
position: absolute;
|
||||||
transform: translateY(-200%);
|
transform: translateY(-200%);
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
transform: translateY(0);
|
transform: translateY(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#home {
|
#home {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-right: 0.625rem;
|
margin-right: 0.625rem;
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
background-color: var(--fg-muted-2);
|
background-color: var(--fg-muted-2);
|
||||||
content: "";
|
content: "";
|
||||||
height: 110%;
|
height: 110%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: -0.5rem;
|
right: -0.5rem;
|
||||||
top: 0;
|
top: 0;
|
||||||
width: 1px;
|
width: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
color: var(--fg-muted-5);
|
color: var(--fg-muted-5);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: var(--primary-color);
|
color: var(--primary-color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#feed a {
|
#feed a {
|
||||||
padding: 0.325rem 0.625rem;
|
padding: 0.325rem 0.625rem;
|
||||||
|
|
||||||
svg {
|
svg {
|
||||||
vertical-align: -0.125em;
|
vertical-align: -0.125em;
|
||||||
}
|
}
|
||||||
|
|
||||||
span {
|
span {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#not-found {
|
#not-found {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding-top: 1rem;
|
padding-top: 1rem;
|
||||||
padding-right: 35%;
|
padding-right: 35%;
|
||||||
padding-left: 35%;
|
padding-left: 35%;
|
||||||
padding-bottom: 1rem;
|
padding-bottom: 1rem;
|
||||||
}
|
}
|
||||||
|
@ -1,34 +1,34 @@
|
|||||||
#post-nav {
|
#post-nav {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
.post-nav-item {
|
.post-nav-item {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
|
||||||
&:hover .post-title {
|
&:hover .post-title {
|
||||||
color: var(--primary-color);
|
color: var(--primary-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
&:nth-child(2n + 1) {
|
&:nth-child(2n + 1) {
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
padding-right: 1rem;
|
padding-right: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:nth-child(2n) {
|
&:nth-child(2n) {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
padding-left: 1rem;
|
padding-left: 1rem;
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-arrow {
|
.nav-arrow {
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
color: var(--fg-muted-5);
|
color: var(--fg-muted-5);
|
||||||
margin-bottom: 0.5rem;
|
margin-bottom: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.post-title {
|
.post-title {
|
||||||
color: var(--fg-color);
|
color: var(--fg-color);
|
||||||
transition: var(--transition);
|
transition: var(--transition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
#qrcode {
|
#qrcode {
|
||||||
background-color: white;
|
background-color: white;
|
||||||
float: right;
|
float: right;
|
||||||
height: 155px;
|
height: 155px;
|
||||||
margin: 3rem 0 0 1rem;
|
margin: 3rem 0 0 1rem;
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
width: 155px;
|
width: 155px;
|
||||||
|
|
||||||
@media only screen and (max-width: 720px) {
|
@media only screen and (max-width: 720px) {
|
||||||
& {
|
& {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,35 +1,35 @@
|
|||||||
.statement-container {
|
.statement-container {
|
||||||
margin: 1rem 0 1rem;
|
margin: 1rem 0 1rem;
|
||||||
padding: 1rem 1rem 0.5rem 1rem;
|
padding: 1rem 1rem 0.5rem 1rem;
|
||||||
border-radius: var(--rounded-corner);
|
border-radius: var(--rounded-corner);
|
||||||
box-shadow: var(--edge-highlight);
|
box-shadow: var(--edge-highlight);
|
||||||
|
|
||||||
* {
|
* {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
p,
|
p,
|
||||||
ul,
|
ul,
|
||||||
ol {
|
ol {
|
||||||
margin: 0.5rem 0 0.5rem;
|
margin: 0.5rem 0 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.big {
|
.big {
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.archive {
|
&.archive {
|
||||||
background-color: var(--purple-bg);
|
background-color: var(--purple-bg);
|
||||||
color: var(--purple-fg);
|
color: var(--purple-fg);
|
||||||
}
|
}
|
||||||
|
|
||||||
&.disclaimer {
|
&.disclaimer {
|
||||||
background-color: var(--red-bg);
|
background-color: var(--red-bg);
|
||||||
color: var(--red-fg);
|
color: var(--red-fg);
|
||||||
}
|
}
|
||||||
|
|
||||||
&.trigger {
|
&.trigger {
|
||||||
background-color: var(--yellow-bg);
|
background-color: var(--yellow-bg);
|
||||||
color: var(--yellow-fg);
|
color: var(--yellow-fg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,35 +1,35 @@
|
|||||||
.tags {
|
.tags {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
|
||||||
li {
|
li {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 0 0.25rem 0.5rem 0;
|
margin: 0 0.25rem 0.5rem 0;
|
||||||
transition: var(--transition);
|
transition: var(--transition);
|
||||||
|
|
||||||
&:active {
|
&:active {
|
||||||
transform: scale(var(--active));
|
transform: scale(var(--active));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tag {
|
.tag {
|
||||||
background-color: var(--fg-muted-1);
|
background-color: var(--fg-muted-1);
|
||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
box-shadow: var(--edge-highlight);
|
box-shadow: var(--edge-highlight);
|
||||||
color: var(--fg-color);
|
color: var(--fg-color);
|
||||||
padding: 0.25rem 0.75rem;
|
padding: 0.25rem 0.75rem;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
transition: var(--transition);
|
transition: var(--transition);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: var(--primary-color);
|
color: var(--primary-color);
|
||||||
background-color: var(--primary-color-alpha);
|
background-color: var(--primary-color-alpha);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
content: "#";
|
content: "#";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,71 +1,62 @@
|
|||||||
:root {
|
:root {
|
||||||
// COLORS
|
// COLORS
|
||||||
--bg-color: var(--bg-color-l);
|
--bg-color: var(--bg-color-l);
|
||||||
--fg-color: rgba(0, 0, 0, 0.8);
|
--fg-color: rgba(0, 0, 0, 0.8);
|
||||||
--fg-muted-1: rgba(0, 0, 0, 0.05);
|
--fg-muted-1: rgba(0, 0, 0, 0.05);
|
||||||
--fg-muted-2: rgba(0, 0, 0, 0.1);
|
--fg-muted-2: rgba(0, 0, 0, 0.1);
|
||||||
--fg-muted-3: rgba(0, 0, 0, 0.2);
|
--fg-muted-3: rgba(0, 0, 0, 0.2);
|
||||||
--fg-muted-4: rgba(0, 0, 0, 0.5);
|
--fg-muted-4: rgba(0, 0, 0, 0.5);
|
||||||
--fg-muted-5: rgba(0, 0, 0, 0.6);
|
--fg-muted-5: rgba(0, 0, 0, 0.6);
|
||||||
--nav-bg: rgba(242, 242, 242, 0.7);
|
--nav-bg: rgba(242, 242, 242, 0.7);
|
||||||
--orange-bg: rgba(255, 120, 0, 0.1);
|
--orange-bg: rgba(255, 120, 0, 0.1);
|
||||||
--orange-fg: rgb(255, 120, 0);
|
--orange-fg: rgb(255, 120, 0);
|
||||||
--purple-bg: rgba(145, 65, 172, 0.1);
|
--purple-bg: rgba(145, 65, 172, 0.1);
|
||||||
--purple-fg: rgb(145, 65, 172);
|
--purple-fg: rgb(145, 65, 172);
|
||||||
--red-bg: rgba(224, 27, 36, 0.1);
|
--red-bg: rgba(224, 27, 36, 0.1);
|
||||||
--red-fg: rgb(224, 27, 36);
|
--red-fg: rgb(224, 27, 36);
|
||||||
--yellow-bg: rgba(156, 110, 3, 0.1);
|
--yellow-bg: rgba(156, 110, 3, 0.1);
|
||||||
--yellow-fg: rgb(156, 110, 3);
|
--yellow-fg: rgb(156, 110, 3);
|
||||||
|
|
||||||
// VARIABLES
|
// VARIABLES
|
||||||
--active: 0.9;
|
--active: 0.9;
|
||||||
--bg-color-d: linear-gradient(rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9)),
|
--bg-color-d: linear-gradient(rgba(0, 0, 0, 0.9), rgba(0, 0, 0, 0.9)), var(--primary-color);
|
||||||
var(--primary-color);
|
--bg-color-l: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), var(--primary-color);
|
||||||
--bg-color-l: linear-gradient(
|
--blur: saturate(180%) blur(10px);
|
||||||
rgba(255, 255, 255, 0.8),
|
--content-width: 720px;
|
||||||
rgba(255, 255, 255, 0.8)
|
--edge-highlight: inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
||||||
),
|
--font-monospace: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", monospace;
|
||||||
var(--primary-color);
|
--font-serif: Rockwell, "Rockwell Nova", "Roboto Slab", "DejaVu Serif", "Sitka Small", serif;
|
||||||
--blur: saturate(180%) blur(10px);
|
--font-system: system-ui, sans-serif;
|
||||||
--content-width: 720px;
|
--rounded-corner-small: 8px;
|
||||||
--edge-highlight: inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
--rounded-corner: 12px;
|
||||||
--font-monospace: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo,
|
--shadow-raised: 0 0 0 1px rgba(0, 0, 0, 0.06), 0 2px 6px 2px rgba(0, 0, 0, 0.14), 0 4px 12px 4px rgba(0, 0, 0, 0.06);
|
||||||
Consolas, "DejaVu Sans Mono", monospace;
|
--shadow: 0 0 0 1px rgba(0, 0, 0, 0.03), 0 1px 3px 1px rgba(0, 0, 0, 0.07), 0 2px 6px 2px rgba(0, 0, 0, 0.03);
|
||||||
--font-serif: Rockwell, "Rockwell Nova", "Roboto Slab", "DejaVu Serif",
|
--transition-bezier: 350ms cubic-bezier(0.17, 0.89, 0.32, 1.28);
|
||||||
"Sitka Small", serif;
|
--transition-long: 800ms;
|
||||||
--font-system: system-ui, sans-serif;
|
--transition-longer: 400ms;
|
||||||
--rounded-corner-small: 8px;
|
--transition: 200ms;
|
||||||
--rounded-corner: 12px;
|
|
||||||
--shadow-raised: 0 0 0 1px rgba(0, 0, 0, 0.06),
|
|
||||||
0 2px 6px 2px rgba(0, 0, 0, 0.14), 0 4px 12px 4px rgba(0, 0, 0, 0.06);
|
|
||||||
--shadow: 0 0 0 1px rgba(0, 0, 0, 0.03), 0 1px 3px 1px rgba(0, 0, 0, 0.07),
|
|
||||||
0 2px 6px 2px rgba(0, 0, 0, 0.03);
|
|
||||||
--transition-bezier: 350ms cubic-bezier(0.17, 0.89, 0.32, 1.28);
|
|
||||||
--transition-long: 800ms;
|
|
||||||
--transition-longer: 400ms;
|
|
||||||
--transition: 200ms;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
:root {
|
:root {
|
||||||
color-scheme: dark;
|
color-scheme: dark;
|
||||||
|
|
||||||
// COLORS
|
// COLORS
|
||||||
--bg-color: var(--bg-color-d);
|
--bg-color: var(--bg-color-d);
|
||||||
--fg-color: rgb(255, 255, 255);
|
--fg-color: rgb(255, 255, 255);
|
||||||
--fg-muted-1: rgba(255, 255, 255, 0.05);
|
--fg-muted-1: rgba(255, 255, 255, 0.05);
|
||||||
--fg-muted-2: rgba(255, 255, 255, 0.1);
|
--fg-muted-2: rgba(255, 255, 255, 0.1);
|
||||||
--fg-muted-3: rgba(255, 255, 255, 0.2);
|
--fg-muted-3: rgba(255, 255, 255, 0.2);
|
||||||
--fg-muted-4: rgba(255, 255, 255, 0.5);
|
--fg-muted-4: rgba(255, 255, 255, 0.5);
|
||||||
--fg-muted-5: rgba(255, 255, 255, 0.6);
|
--fg-muted-5: rgba(255, 255, 255, 0.6);
|
||||||
--nav-bg: rgba(25, 25, 25, 0.7);
|
--nav-bg: rgba(25, 25, 25, 0.7);
|
||||||
--orange-bg: rgba(255, 190, 111, 0.1);
|
--orange-bg: rgba(255, 190, 111, 0.1);
|
||||||
--orange-fg: rgb(255, 190, 111);
|
--orange-fg: rgb(255, 190, 111);
|
||||||
--purple-bg: rgba(220, 138, 221, 0.1);
|
--purple-bg: rgba(220, 138, 221, 0.1);
|
||||||
--purple-fg: rgb(220, 138, 221);
|
--purple-fg: rgb(220, 138, 221);
|
||||||
--red-bg: rgba(226, 97, 81, 0.1);
|
--red-bg: rgba(226, 97, 81, 0.1);
|
||||||
--red-fg: rgb(246, 97, 81);
|
--red-fg: rgb(246, 97, 81);
|
||||||
--yellow-bg: rgba(248, 228, 92, 0.1);
|
--yellow-bg: rgba(248, 228, 92, 0.1);
|
||||||
--yellow-fg: rgb(248, 228, 92);
|
--yellow-fg: rgb(248, 228, 92);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<picture>
|
<picture>
|
||||||
<source srcset="{{ get_url(path='404.png') }}" media="(prefers-reduced-motion: reduce)"></source>
|
<source srcset="{{ get_url(path='404.png') }}" media="(prefers-reduced-motion: reduce)"></source>
|
||||||
<img id="not-found" class="pixels transparent no-hover" srcset="{{ get_url(path='404.gif') }}">
|
<img id="not-found" class="pixels transparent no-hover" srcset="{{ get_url(path='404.gif') }}">
|
||||||
</picture>
|
</picture>
|
||||||
|
|
||||||
<h1>Page Not Found</h1>
|
<h1>Page Not Found</h1>
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<p>The requested page could not be found. If you feel this is not normal, then you can create an issue on the issue tracker.</p>
|
<p>The requested page could not be found. If you feel this is not normal, then you can create an issue on the issue tracker.</p>
|
||||||
|
|
||||||
<p class="dialog-buttons">
|
<p class="dialog-buttons">
|
||||||
<a onclick="window.history.go(-1)" class="inline-button">Go Back</a>
|
<a onclick="window.history.go(-1)" class="inline-button">Go Back</a>
|
||||||
<a href="{{ config.extra.issues_url }}">File an Issue</a>
|
<a href="{{ config.extra.issues_url }}">File an Issue</a>
|
||||||
</p>
|
</p>
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
<html lang="en">
|
<html lang="en">
|
||||||
{% include "partials/head.html" ignore missing -%}
|
{% include "partials/head.html" ignore missing -%}
|
||||||
<body>
|
<body>
|
||||||
{% include "partials/nav.html" ignore missing -%}
|
{% include "partials/nav.html" ignore missing -%}
|
||||||
<div id="main" class="container">
|
<div id="main" class="container">
|
||||||
{% block custom %}{%- endblock -%}
|
{% block custom %}{%- endblock -%}
|
||||||
{% block content %}{%- endblock -%}
|
{% block content %}{%- endblock -%}
|
||||||
</div>
|
</div>
|
||||||
{% include "partials/footer.html" ignore missing -%}
|
{% include "partials/footer.html" ignore missing -%}
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -4,98 +4,96 @@
|
|||||||
<h1>{{ page.title }}</h1>
|
<h1>{{ page.title }}</h1>
|
||||||
|
|
||||||
{%- if page.date %}
|
{%- if page.date %}
|
||||||
<small>
|
<small>
|
||||||
<time datetime='{{ page.date | date(format='%+') }}' pubdate>
|
<time datetime="{{ page.date | date(format=' %+') }}" pubdate>
|
||||||
{{- page.date | date(format=config.extra.date_format) -}}
|
{{- page.date | date(format=config.extra.date_format) -}}
|
||||||
</time>
|
</time>
|
||||||
{%- if page.authors %}
|
{%- if page.authors %}
|
||||||
<span>•</span>
|
<span>•</span>
|
||||||
<span>Author: {{ page.authors[0] }}</span>
|
<span>Author: {{ page.authors[0] }}</span>
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
{%- if page.taxonomies %}
|
{%- if page.taxonomies %}
|
||||||
{%- for name, taxon in page.taxonomies %}
|
{%- for name, taxon in page.taxonomies %}
|
||||||
<span>•</span>
|
<span>•</span>
|
||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
{%-for item in taxon %}
|
{%-for item in taxon %}
|
||||||
<li>
|
<li>
|
||||||
<a class="tag" href="{{ get_taxonomy_url(kind=name, name=item) }}">{{ item }}</a>
|
<a class="tag" href="{{ get_taxonomy_url(kind=name, name=item) }}">{{ item }}</a>
|
||||||
</li>
|
</li>
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
</small>
|
</small>
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
|
||||||
{% if page.extra.archive %}
|
{% if page.extra.archive %}
|
||||||
<div class="statement-container archive">
|
<div class="statement-container archive">
|
||||||
<strong class="big">⚠ Archived</strong>
|
<strong class="big">⚠ Archived</strong>
|
||||||
{{ page.extra.archive | markdown | safe }}
|
{{ page.extra.archive | markdown | safe }}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if page.extra.trigger %}
|
{% if page.extra.trigger %}
|
||||||
<div class="statement-container trigger">
|
<div class="statement-container trigger">
|
||||||
<strong class="big">⚠ Trigger Warning</strong>
|
<strong class="big">⚠ Trigger Warning</strong>
|
||||||
{{ page.extra.trigger | markdown | safe }}
|
{{ page.extra.trigger | markdown | safe }}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if page.extra.disclaimer %}
|
{% if page.extra.disclaimer %}
|
||||||
<div class="statement-container disclaimer">
|
<div class="statement-container disclaimer">
|
||||||
<strong class="big">⚠ Disclaimer(s)</strong>
|
<strong class="big">⚠ Disclaimer(s)</strong>
|
||||||
{{ page.extra.disclaimer | markdown | safe }}
|
{{ page.extra.disclaimer | markdown | safe }}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if page.extra.toc %}
|
{% if page.extra.toc %}
|
||||||
<h2>
|
<h2>Table of Contents</h2>
|
||||||
Table of Contents
|
<ul>
|
||||||
</h2>
|
{% for h1 in page.toc %}
|
||||||
<ul>
|
<li>
|
||||||
{% for h1 in page.toc %}
|
<a href="{{ h1.permalink | safe }}">{{ h1.title }}</a>
|
||||||
<li>
|
{% if h1.children %}
|
||||||
<a href="{{ h1.permalink | safe }}">{{ h1.title }}</a>
|
<ul>
|
||||||
{% if h1.children %}
|
{% for h2 in h1.children %}
|
||||||
<ul>
|
<li>
|
||||||
{% for h2 in h1.children %}
|
<a href="{{ h2.permalink | safe }}">{{ h2.title }}</a>
|
||||||
<li>
|
</li>
|
||||||
<a href="{{ h2.permalink | safe }}">{{ h2.title }}</a>
|
{% endfor %}
|
||||||
</li>
|
</ul>
|
||||||
{% endfor %}
|
{% endif %}
|
||||||
</ul>
|
</li>
|
||||||
{% endif %}
|
{% endfor %}
|
||||||
</li>
|
</ul>
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{{ page.content | safe }}
|
{{ page.content | safe }}
|
||||||
|
|
||||||
{% if page.extra.comments.id %}
|
{% if page.extra.comments.id %}
|
||||||
{% include "partials/comments.html" %}
|
{% include "partials/comments.html" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if page.lower or page.higher %}
|
{% if page.lower or page.higher %}
|
||||||
<hr>
|
<hr>
|
||||||
<nav id="post-nav">
|
<nav id="post-nav">
|
||||||
{% if page.higher %}
|
{% if page.higher %}
|
||||||
<a class="post-nav-item post-nav-prev" href="{{ page.higher.permalink }}">
|
<a class="post-nav-item post-nav-prev" href="{{ page.higher.permalink }}">
|
||||||
<div class="nav-arrow">← Previous</div>
|
<div class="nav-arrow">← Previous</div>
|
||||||
<span class="post-title">{{ page.higher.title }}</span>
|
<span class="post-title">{{ page.higher.title }}</span>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if page.lower %}
|
{% if page.lower %}
|
||||||
<a class="post-nav-item post-nav-next" href="{{ page.lower.permalink }}">
|
<a class="post-nav-item post-nav-next" href="{{ page.lower.permalink }}">
|
||||||
<div class="nav-arrow">Next →</div>
|
<div class="nav-arrow">Next →</div>
|
||||||
<span class="post-title">{{ page.lower.title }}</span>
|
<span class="post-title">{{ page.lower.title }}</span>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</nav>
|
</nav>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<p class="dialog-buttons">
|
<p class="dialog-buttons">
|
||||||
<a class="inline-button" href="#top">Go to top</a>
|
<a class="inline-button" href="#top">Go to top</a>
|
||||||
<a class="inline-button colored" href="{{ config.extra.issues_url }}">File an issue</a>
|
<a class="inline-button colored" href="{{ config.extra.issues_url }}">File an issue</a>
|
||||||
</p>
|
</p>
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
|
@ -6,45 +6,39 @@
|
|||||||
<p>{{ section.description }}</p>
|
<p>{{ section.description }}</p>
|
||||||
|
|
||||||
<small>
|
<small>
|
||||||
<a class="link-page" href="{{ get_url(path='tags') }}">Filter by tag</a>
|
<a class="link-page" href="{{ get_url(path='tags') }}">Filter by tag</a>
|
||||||
<br />
|
<br />
|
||||||
From newest to oldest ↓
|
From newest to oldest ↓
|
||||||
</small>
|
</small>
|
||||||
|
|
||||||
<div class="blog-list">
|
<div class="blog-list">
|
||||||
{% for page in section.pages %}
|
{% for page in section.pages %}
|
||||||
<article>
|
<article>
|
||||||
<h3>
|
<h3><a class="link-page" href="{{ page.permalink | safe }}">{{ page.title }}</a></h3>
|
||||||
<a class="link-page" href="{{ page.permalink | safe }}">{{ page.title }}</a>
|
{%- if page.description %}
|
||||||
</h3>
|
<p>{{ page.description }}</p>
|
||||||
{%- if page.description %}
|
{%- endif %}
|
||||||
<p>{{ page.description }}</p>
|
{%- if page.date %}
|
||||||
{%- endif %}
|
<small>
|
||||||
{%- if page.date %}
|
<time datetime="{{ page.date | date(format='%+') }}" pubdate>{{- page.date | date(format=config.extra.date_format) -}}</time>
|
||||||
<small>
|
{%- if page.authors %}
|
||||||
<time datetime="{{ page.date | date(format='%+') }}" pubdate>
|
<span>•</span>
|
||||||
{{- page.date | date(format=config.extra.date_format) -}}
|
<span>Author: {{ page.authors[0] }}</span>
|
||||||
</time>
|
{%- endif %}
|
||||||
{%- if page.authors %}
|
{%- if page.taxonomies %}
|
||||||
<span>•</span>
|
{%- for name, taxon in page.taxonomies %}
|
||||||
<span>Author: {{ page.authors[0] }}</span>
|
<span>•</span>
|
||||||
{%- endif %}
|
<ul class="tags">
|
||||||
{%- if page.taxonomies %}
|
{%-for item in taxon %}
|
||||||
{%- for name, taxon in page.taxonomies %}
|
<li><a class="tag" href="{{ get_taxonomy_url(kind=name, name=item) }}">{{ item }}</a></li>
|
||||||
<span>•</span>
|
{%- endfor %}
|
||||||
<ul class="tags">
|
</ul>
|
||||||
{%-for item in taxon %}
|
{%- endfor %}
|
||||||
<li>
|
{%- endif %}
|
||||||
<a class="tag" href="{{ get_taxonomy_url(kind=name, name=item) }}">{{ item }}</a>
|
</small>
|
||||||
</li>
|
{%- endif %}
|
||||||
{%- endfor %}
|
</article>
|
||||||
</ul>
|
<hr>
|
||||||
{%- endfor %}
|
{% endfor %}
|
||||||
{%- endif %}
|
|
||||||
</small>
|
|
||||||
{%- endif %}
|
|
||||||
</article>
|
|
||||||
<hr>
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
</div>
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
|
@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% if page.extra.archive %}
|
{% if page.extra.archive %}
|
||||||
<div class="statement-container archive">
|
<div class="statement-container archive">
|
||||||
<strong class="big">⚠ Archived</strong>
|
<strong class="big">⚠ Archived</strong>
|
||||||
{{ page.extra.archive | markdown | safe }}
|
{{ page.extra.archive | markdown | safe }}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ page.content | safe }}
|
{{ page.content | safe }}
|
||||||
{% endblock content %}
|
{% endblock content %}
|
@ -1,251 +1,252 @@
|
|||||||
<!-- Taken from the https://carlschwan.eu/2020/12/29/adding-comments-to-your-static-blog-with-mastodon/ -->
|
<!-- Taken from the https://carlschwan.eu/2020/12/29/adding-comments-to-your-static-blog-with-mastodon/ -->
|
||||||
|
|
||||||
{% if page.extra.comments.host %}
|
{% if page.extra.comments.host %}
|
||||||
{% set host = page.extra.comments.host %}
|
{% set host = page.extra.comments.host %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% set host = config.extra.comments.host %}
|
{% set host = config.extra.comments.host %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if page.extra.comments.user %}
|
{% if page.extra.comments.user %}
|
||||||
{% set username = page.extra.comments.user %}
|
{% set username = page.extra.comments.user %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% set username = config.extra.comments.user %}
|
{% set username = config.extra.comments.user %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% set id = page.extra.comments.id %}
|
{% set id = page.extra.comments.id %}
|
||||||
|
|
||||||
<section id="comments">
|
<section id="comments">
|
||||||
<img id="qrcode" class="no-hover pixels" alt="QR code to a Mastodon post"
|
<img id="qrcode" class="no-hover pixels" alt="QR code to a Mastodon post"
|
||||||
src="https://api.qrserver.com/v1/create-qr-code/?data=https://{{ host }}/@{{ username }}/{{ id }}">
|
src="https://api.qrserver.com/v1/create-qr-code/?data=https://{{ host }}/@{{ username }}/{{ id }}">
|
||||||
<h2>Comments</h2>
|
<h2>Comments</h2>
|
||||||
<p>
|
<p>
|
||||||
You can respond to this <a href="https://{{ host }}/@{{ username }}/{{ id }}">post</a> with an account on the
|
You can respond to this <a href="https://{{ host }}/@{{ username }}/{{ id }}">post</a> with an account on the
|
||||||
Fediverse (e.g Mastodon, Akkoma, Sharkey or any Mastodon API compatible server).
|
Fediverse (e.g Mastodon, Akkoma, Sharkey or any Mastodon API compatible server).
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<small>
|
<small>
|
||||||
Since Fediverse is decentralized, you can use your existing Mastodon API compatible account if you don't have an
|
Since Fediverse is decentralized, you can use your existing Mastodon API compatible account if you don't
|
||||||
account on this server. Known non-private replies are displayed below.
|
have an
|
||||||
</small>
|
account on this server. Known non-private replies are displayed below.
|
||||||
</p>
|
</small>
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<a id="load-comments" class="inline-button" onclick="loadComments()">Load comments…</a>
|
<a id="load-comments" class="inline-button" onclick="loadComments()">Load comments…</a>
|
||||||
</p>
|
</p>
|
||||||
<div id="comments-wrapper">
|
<div id="comments-wrapper">
|
||||||
<noscript>
|
<noscript>
|
||||||
<p>
|
<p>
|
||||||
Loading comments relies on JavaScript. Try enabling JavaScript and
|
Loading comments relies on JavaScript. Try enabling JavaScript and
|
||||||
reloading, or visit
|
reloading, or visit
|
||||||
<a href="https://{{ host }}/@{{ username }}/{{ id }}">
|
<a href="https://{{ host }}/@{{ username }}/{{ id }}">
|
||||||
the original post
|
the original post
|
||||||
</a>
|
</a>
|
||||||
on Mastodon.
|
on Mastodon.
|
||||||
</p>
|
</p>
|
||||||
</noscript>
|
</noscript>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function escapeHtml(unsafe) {
|
function escapeHtml(unsafe) {
|
||||||
return unsafe
|
return unsafe
|
||||||
.replace(/&/g, "&")
|
.replace(/&/g, "&")
|
||||||
.replace(/</g, "<")
|
.replace(/</g, "<")
|
||||||
.replace(/>/g, ">")
|
.replace(/>/g, ">")
|
||||||
.replace(/"/g, """)
|
.replace(/"/g, """)
|
||||||
.replace(/'/g, "'");
|
.replace(/'/g, "'");
|
||||||
}
|
}
|
||||||
function emojify(input, emojis) {
|
function emojify(input, emojis) {
|
||||||
let output = input;
|
let output = input;
|
||||||
|
|
||||||
emojis.forEach((emoji) => {
|
emojis.forEach((emoji) => {
|
||||||
let picture = document.createElement("picture");
|
let picture = document.createElement("picture");
|
||||||
|
|
||||||
let source = document.createElement("source");
|
let source = document.createElement("source");
|
||||||
source.setAttribute("srcset", escapeHtml(emoji.url));
|
source.setAttribute("srcset", escapeHtml(emoji.url));
|
||||||
source.setAttribute("media", "(prefers-reduced-motion: no-preference)");
|
source.setAttribute("media", "(prefers-reduced-motion: no-preference)");
|
||||||
|
|
||||||
let img = document.createElement("img");
|
let img = document.createElement("img");
|
||||||
img.className = "emoji";
|
img.className = "emoji";
|
||||||
img.setAttribute("src", escapeHtml(emoji.static_url));
|
img.setAttribute("src", escapeHtml(emoji.static_url));
|
||||||
img.setAttribute("alt", `:${emoji.shortcode}:`);
|
img.setAttribute("alt", `:${emoji.shortcode}:`);
|
||||||
img.setAttribute("title", `:${emoji.shortcode}:`);
|
img.setAttribute("title", `:${emoji.shortcode}:`);
|
||||||
img.setAttribute("width", "20");
|
img.setAttribute("width", "20");
|
||||||
img.setAttribute("height", "20");
|
img.setAttribute("height", "20");
|
||||||
|
|
||||||
picture.appendChild(source);
|
picture.appendChild(source);
|
||||||
picture.appendChild(img);
|
picture.appendChild(img);
|
||||||
|
|
||||||
output = output.replace(`:${emoji.shortcode}:`, picture.outerHTML);
|
output = output.replace(`:${emoji.shortcode}:`, picture.outerHTML);
|
||||||
});
|
});
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadComments() {
|
function loadComments() {
|
||||||
let commentsWrapper = document.getElementById("comments-wrapper");
|
let commentsWrapper = document.getElementById("comments-wrapper");
|
||||||
document.getElementById("load-comments").innerHTML = "Loading…";
|
document.getElementById("load-comments").innerHTML = "Loading…";
|
||||||
fetch("https://{{ host }}/api/v1/statuses/{{ id }}/context")
|
fetch("https://{{ host }}/api/v1/statuses/{{ id }}/context")
|
||||||
.then(function (response) {
|
.then(function (response) {
|
||||||
return response.json();
|
return response.json();
|
||||||
})
|
})
|
||||||
.then(function (data) {
|
.then(function (data) {
|
||||||
let descendants = data["descendants"];
|
let descendants = data["descendants"];
|
||||||
if (
|
if (
|
||||||
descendants &&
|
descendants &&
|
||||||
Array.isArray(descendants) &&
|
Array.isArray(descendants) &&
|
||||||
descendants.length > 0
|
descendants.length > 0
|
||||||
) {
|
) {
|
||||||
commentsWrapper.innerHTML = "";
|
commentsWrapper.innerHTML = "";
|
||||||
|
|
||||||
descendants.forEach(function (status) {
|
descendants.forEach(function (status) {
|
||||||
console.log(descendants);
|
console.log(descendants);
|
||||||
if (status.account.display_name.length > 0) {
|
if (status.account.display_name.length > 0) {
|
||||||
status.account.display_name = escapeHtml(
|
status.account.display_name = escapeHtml(
|
||||||
status.account.display_name
|
status.account.display_name
|
||||||
);
|
);
|
||||||
status.account.display_name = emojify(
|
status.account.display_name = emojify(
|
||||||
status.account.display_name,
|
status.account.display_name,
|
||||||
status.account.emojis
|
status.account.emojis
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
status.account.display_name = status.account.username;
|
status.account.display_name = status.account.username;
|
||||||
}
|
}
|
||||||
|
|
||||||
let instance = "";
|
let instance = "";
|
||||||
if (status.account.acct.includes("@")) {
|
if (status.account.acct.includes("@")) {
|
||||||
instance = status.account.acct.split("@")[1];
|
instance = status.account.acct.split("@")[1];
|
||||||
} else {
|
} else {
|
||||||
instance = "{{ host }}";
|
instance = "{{ host }}";
|
||||||
}
|
}
|
||||||
|
|
||||||
const isReply = status.in_reply_to_id !== "{{ id }}";
|
const isReply = status.in_reply_to_id !== "{{ id }}";
|
||||||
|
|
||||||
let op = false;
|
let op = false;
|
||||||
if (status.account.acct == "{{ username }}") {
|
if (status.account.acct == "{{ username }}") {
|
||||||
op = true;
|
op = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
status.content = emojify(status.content, status.emojis);
|
status.content = emojify(status.content, status.emojis);
|
||||||
|
|
||||||
let avatarSource = document.createElement("source");
|
let avatarSource = document.createElement("source");
|
||||||
avatarSource.setAttribute(
|
avatarSource.setAttribute(
|
||||||
"srcset",
|
"srcset",
|
||||||
escapeHtml(status.account.avatar)
|
escapeHtml(status.account.avatar)
|
||||||
);
|
);
|
||||||
avatarSource.setAttribute(
|
avatarSource.setAttribute(
|
||||||
"media",
|
"media",
|
||||||
"(prefers-reduced-motion: no-preference)"
|
"(prefers-reduced-motion: no-preference)"
|
||||||
);
|
);
|
||||||
|
|
||||||
let avatarImg = document.createElement("img");
|
let avatarImg = document.createElement("img");
|
||||||
avatarImg.className = "avatar";
|
avatarImg.className = "avatar";
|
||||||
avatarImg.setAttribute(
|
avatarImg.setAttribute(
|
||||||
"src",
|
"src",
|
||||||
escapeHtml(status.account.avatar_static)
|
escapeHtml(status.account.avatar_static)
|
||||||
);
|
);
|
||||||
avatarImg.setAttribute(
|
avatarImg.setAttribute(
|
||||||
"alt",
|
"alt",
|
||||||
`@${status.account.username}@${instance} avatar`
|
`@${status.account.username}@${instance} avatar`
|
||||||
);
|
);
|
||||||
|
|
||||||
let avatarPicture = document.createElement("picture");
|
let avatarPicture = document.createElement("picture");
|
||||||
avatarPicture.appendChild(avatarSource);
|
avatarPicture.appendChild(avatarSource);
|
||||||
avatarPicture.appendChild(avatarImg);
|
avatarPicture.appendChild(avatarImg);
|
||||||
|
|
||||||
let avatar = document.createElement("a");
|
let avatar = document.createElement("a");
|
||||||
avatar.className = "avatar-link";
|
avatar.className = "avatar-link";
|
||||||
avatar.setAttribute("href", status.account.url);
|
avatar.setAttribute("href", status.account.url);
|
||||||
avatar.setAttribute("rel", "external nofollow");
|
avatar.setAttribute("rel", "external nofollow");
|
||||||
avatar.setAttribute(
|
avatar.setAttribute(
|
||||||
"title",
|
"title",
|
||||||
`View profile at @${status.account.username}@${instance}`
|
`View profile at @${status.account.username}@${instance}`
|
||||||
);
|
);
|
||||||
avatar.appendChild(avatarPicture);
|
avatar.appendChild(avatarPicture);
|
||||||
|
|
||||||
let instanceBadge = document.createElement("a");
|
let instanceBadge = document.createElement("a");
|
||||||
instanceBadge.className = "instance";
|
instanceBadge.className = "instance";
|
||||||
instanceBadge.setAttribute("href", status.account.url);
|
instanceBadge.setAttribute("href", status.account.url);
|
||||||
instanceBadge.setAttribute(
|
instanceBadge.setAttribute(
|
||||||
"title",
|
"title",
|
||||||
`@${status.account.username}@${instance}`
|
`@${status.account.username}@${instance}`
|
||||||
);
|
);
|
||||||
instanceBadge.setAttribute("rel", "external nofollow");
|
instanceBadge.setAttribute("rel", "external nofollow");
|
||||||
instanceBadge.textContent = instance;
|
instanceBadge.textContent = instance;
|
||||||
|
|
||||||
let display = document.createElement("span");
|
let display = document.createElement("span");
|
||||||
display.className = "display";
|
display.className = "display";
|
||||||
display.setAttribute("itemprop", "author");
|
display.setAttribute("itemprop", "author");
|
||||||
display.setAttribute("itemtype", "http://schema.org/Person");
|
display.setAttribute("itemtype", "http://schema.org/Person");
|
||||||
display.innerHTML = status.account.display_name;
|
display.innerHTML = status.account.display_name;
|
||||||
|
|
||||||
let header = document.createElement("header");
|
let header = document.createElement("header");
|
||||||
header.className = "author";
|
header.className = "author";
|
||||||
header.appendChild(display);
|
header.appendChild(display);
|
||||||
header.appendChild(instanceBadge);
|
header.appendChild(instanceBadge);
|
||||||
|
|
||||||
let permalink = document.createElement("a");
|
let permalink = document.createElement("a");
|
||||||
permalink.setAttribute("href", status.url);
|
permalink.setAttribute("href", status.url);
|
||||||
permalink.setAttribute("itemprop", "url");
|
permalink.setAttribute("itemprop", "url");
|
||||||
permalink.setAttribute("title", `View comment at ${instance}`);
|
permalink.setAttribute("title", `View comment at ${instance}`);
|
||||||
permalink.setAttribute("rel", "external nofollow");
|
permalink.setAttribute("rel", "external nofollow");
|
||||||
permalink.textContent = new Date(
|
permalink.textContent = new Date(
|
||||||
status.created_at
|
status.created_at
|
||||||
).toLocaleString("en-IE", {
|
).toLocaleString("en-IE", {
|
||||||
dateStyle: "long",
|
dateStyle: "long",
|
||||||
timeStyle: "short",
|
timeStyle: "short",
|
||||||
});
|
});
|
||||||
|
|
||||||
let timestamp = document.createElement("time");
|
let timestamp = document.createElement("time");
|
||||||
timestamp.setAttribute("datetime", status.created_at);
|
timestamp.setAttribute("datetime", status.created_at);
|
||||||
timestamp.appendChild(permalink);
|
timestamp.appendChild(permalink);
|
||||||
|
|
||||||
let main = document.createElement("main");
|
let main = document.createElement("main");
|
||||||
main.setAttribute("itemprop", "text");
|
main.setAttribute("itemprop", "text");
|
||||||
main.innerHTML = status.content;
|
main.innerHTML = status.content;
|
||||||
|
|
||||||
let interactions = document.createElement("footer");
|
let interactions = document.createElement("footer");
|
||||||
|
|
||||||
let faves = document.createElement("a");
|
let faves = document.createElement("a");
|
||||||
faves.className = "faves";
|
faves.className = "faves";
|
||||||
faves.setAttribute("href", `${status.url}/favourites`);
|
faves.setAttribute("href", `${status.url}/favourites`);
|
||||||
faves.setAttribute("title", `Favorites from ${instance}`);
|
faves.setAttribute("title", `Favorites from ${instance}`);
|
||||||
faves.textContent = status.favourites_count;
|
faves.textContent = status.favourites_count;
|
||||||
interactions.appendChild(faves);
|
interactions.appendChild(faves);
|
||||||
|
|
||||||
let comment = document.createElement("article");
|
let comment = document.createElement("article");
|
||||||
comment.id = `comment-${status.id}`;
|
comment.id = `comment-${status.id}`;
|
||||||
comment.className = isReply ? "comment comment-reply" : "comment";
|
comment.className = isReply ? "comment comment-reply" : "comment";
|
||||||
comment.setAttribute("itemprop", "comment");
|
comment.setAttribute("itemprop", "comment");
|
||||||
comment.setAttribute("itemtype", "http://schema.org/Comment");
|
comment.setAttribute("itemtype", "http://schema.org/Comment");
|
||||||
comment.appendChild(avatar);
|
comment.appendChild(avatar);
|
||||||
comment.appendChild(header);
|
comment.appendChild(header);
|
||||||
comment.appendChild(timestamp);
|
comment.appendChild(timestamp);
|
||||||
comment.appendChild(main);
|
comment.appendChild(main);
|
||||||
if (status.favourites_count > 0) {
|
if (status.favourites_count > 0) {
|
||||||
comment.appendChild(interactions);
|
comment.appendChild(interactions);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (op === true) {
|
if (op === true) {
|
||||||
comment.classList.add("op");
|
comment.classList.add("op");
|
||||||
|
|
||||||
avatar.classList.add("op");
|
avatar.classList.add("op");
|
||||||
avatar.setAttribute(
|
avatar.setAttribute(
|
||||||
"title",
|
"title",
|
||||||
"Blog post author; " + avatar.getAttribute("title")
|
"Blog post author; " + avatar.getAttribute("title")
|
||||||
);
|
);
|
||||||
|
|
||||||
instanceBadge.classList.add("op");
|
instanceBadge.classList.add("op");
|
||||||
instanceBadge.setAttribute(
|
instanceBadge.setAttribute(
|
||||||
"title",
|
"title",
|
||||||
"Blog post author: " + instanceBadge.getAttribute("title")
|
"Blog post author: " + instanceBadge.getAttribute("title")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
commentsWrapper.innerHTML += comment.outerHTML;
|
commentsWrapper.innerHTML += comment.outerHTML;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
let loadCommentsButton = document.getElementById("load-comments");
|
let loadCommentsButton = document.getElementById("load-comments");
|
||||||
loadCommentsButton.remove();
|
loadCommentsButton.remove();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</section>
|
</section>
|
@ -1,19 +1,20 @@
|
|||||||
<footer id="site-footer">
|
<footer id="site-footer">
|
||||||
{% if config.extra.footer.show_copyright %}
|
{% if config.extra.footer.show_copyright %}
|
||||||
<p title="Last built at {{ now() | date(format='%F %R %Z') }}">© {{ config.title }}, {{ now() | date(format="%Y") }}</p>
|
<p title="Last built at {{ now() | date(format='%F %R %Z') }}">© {{ config.title }}, {{ now() | date(format="%Y") }}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if config.extra.footer.show_source %}
|
{% if config.extra.footer.show_source %}
|
||||||
<p><a href="{{ config.extra.source_url }}">Website source</a></p>
|
<p><a href="{{ config.extra.source_url }}">Website source</a></p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if config.extra.footer.show_powered_by %}
|
{% if config.extra.footer.show_powered_by %}
|
||||||
<p><small>Powered by <a href="https://www.getzola.org">Zola</a> and <a href="https://daudix.codeberg.page/duckquill">Duckquill</a></small></p>
|
<p><small>Powered by <a href="https://www.getzola.org">Zola</a> and <a href="https://daudix.codeberg.page/duckquill">Duckquill</a></small></p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if config.extra.footer.show_johnvert %}
|
{% if config.extra.footer.show_johnvert %}
|
||||||
<details><summary>Johnvertisement</summary>
|
<details>
|
||||||
<iframe id="johnvertisement" title="Johnvertisement" src="https://john.citrons.xyz/embed?ref={{ config.extra.footer.johnvert_ref }}"></iframe>
|
<summary>Johnvertisement</summary>
|
||||||
</details>
|
<iframe id="johnvertisement" title="Johnvertisement" src="https://john.citrons.xyz/embed?ref={{ config.extra.footer.johnvert_ref }}"></iframe>
|
||||||
{% endif %}
|
</details>
|
||||||
|
{% endif %}
|
||||||
</footer>
|
</footer>
|
||||||
|
@ -1,62 +1,60 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
<meta name="description" content="{{ config.description }}" />
|
<meta name="description" content="{{ config.description }}" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<meta name="theme-color" content="{{ config.extra.primary_color }}" />
|
<meta name="theme-color" content="{{ config.extra.primary_color }}" />
|
||||||
<link rel="canonical" href="{{ current_url | default(value='/') }}" />
|
<link rel="canonical" href="{{ current_url | default(value='/') }}" />
|
||||||
|
|
||||||
<title>
|
<title>
|
||||||
{%- if page.title -%}
|
{%- if page.title -%}
|
||||||
{{- page.title }} - {{ config.title -}}
|
{{- page.title }} - {{ config.title -}}
|
||||||
{%- elif section.title -%}
|
{%- elif section.title -%}
|
||||||
{{- section.title }} - {{ config.title -}}
|
{{- section.title }} - {{ config.title -}}
|
||||||
{%- else -%}
|
{%- else -%}
|
||||||
{{- config.title -}}
|
{{- config.title -}}
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
</title>
|
</title>
|
||||||
|
|
||||||
<link rel="stylesheet" type="text/css" href="{{ get_url(path='style.css') }}" />
|
<link rel="stylesheet" type="text/css" href="{{ get_url(path='style.css') }}" />
|
||||||
<link rel="stylesheet" type="text/css" href="/syntax-theme-dark.css" media="(prefers-color-scheme: dark)" />
|
<link rel="stylesheet" type="text/css" href="/syntax-theme-dark.css" media="(prefers-color-scheme: dark)" />
|
||||||
<link rel="stylesheet" type="text/css" href="/syntax-theme-light.css" media="(prefers-color-scheme: light)" />
|
<link rel="stylesheet" type="text/css" href="/syntax-theme-light.css" media="(prefers-color-scheme: light)" />
|
||||||
{% if config.extra.stylesheets %}
|
{% if config.extra.stylesheets %}
|
||||||
{% for stylesheet in config.extra.stylesheets %}
|
{% for stylesheet in config.extra.stylesheets %}
|
||||||
<link rel="stylesheet" type="text/css" href="{{ get_url(path=stylesheet) }}" />
|
<link rel="stylesheet" type="text/css" href="{{ get_url(path=stylesheet) }}" />
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
:root {
|
:root {
|
||||||
--primary-color-alpha: {{ config.extra.primary_color_alpha }};
|
--primary-color-alpha: {{ config.extra.primary_color_alpha }};
|
||||||
--primary-color: {{ config.extra.primary_color }};
|
--primary-color: {{ config.extra.primary_color }};
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
{% if page.extra.emoji_favicon %}
|
{% if page.extra.emoji_favicon %}
|
||||||
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ page.extra.emoji_favicon }}</text></svg>">
|
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ page.extra.emoji_favicon }}</text></svg>">
|
||||||
<link rel="apple-touch-icon" type="image/svg+xml" sizes="180x180" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ page.extra.emoji_favicon }}</text></svg>">
|
<link rel="apple-touch-icon" type="image/svg+xml" sizes="180x180" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ page.extra.emoji_favicon }}</text></svg>">
|
||||||
{% elif section.extra.emoji_favicon %}
|
{% elif section.extra.emoji_favicon %}
|
||||||
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ section.extra.emoji_favicon }}</text></svg>">
|
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ section.extra.emoji_favicon }}</text></svg>">
|
||||||
<link rel="apple-touch-icon" type="image/svg+xml" sizes="180x180" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ section.extra.emoji_favicon }}</text></svg>">
|
<link rel="apple-touch-icon" type="image/svg+xml" sizes="180x180" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ section.extra.emoji_favicon }}</text></svg>">
|
||||||
{% elif config.extra.emoji_favicon %}
|
{% elif config.extra.emoji_favicon %}
|
||||||
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ config.extra.emoji_favicon }}</text></svg>">
|
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ config.extra.emoji_favicon }}</text></svg>">
|
||||||
<link rel="apple-touch-icon" type="image/svg+xml" sizes="180x180" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ config.extra.emoji_favicon }}</text></svg>">
|
<link rel="apple-touch-icon" type="image/svg+xml" sizes="180x180" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ config.extra.emoji_favicon }}</text></svg>">
|
||||||
{% elif config.extra.animated_favicon %}
|
{% elif config.extra.animated_favicon %}
|
||||||
<link rel="icon" type="image/gif" href="{{ get_url(path='favicon.gif') }}" />
|
<link rel="icon" type="image/gif" href="{{ get_url(path='favicon.gif') }}" />
|
||||||
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="{{ get_url(path='apple-touch-icon.png') }}" />
|
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="{{ get_url(path='apple-touch-icon.png') }}" />
|
||||||
{% else %}
|
{% else %}
|
||||||
<link rel="icon" type="image/png" href="{{ get_url(path='favicon.png') }}" />
|
<link rel="icon" type="image/png" href="{{ get_url(path='favicon.png') }}" />
|
||||||
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="{{ get_url(path='apple-touch-icon.png') }}" />
|
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="{{ get_url(path='apple-touch-icon.png') }}" />
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<link rel="me" href="https://{{ config.extra.comments.host }}/@{{ config.extra.comments.user }}" />
|
<link rel="me" href="https://{{ config.extra.comments.host }}/@{{ config.extra.comments.user }}" />
|
||||||
|
|
||||||
<!-- Open Graph -->
|
<!-- Open Graph -->
|
||||||
<meta property="og:site_name" content="{{ config.title }}" />
|
<meta property="og:site_name" content="{{ config.title }}" />
|
||||||
<meta property="og:title" content="{%- if page.title -%} {{- page.title }} - {{ config.title -}}
|
<meta property="og:title" content="{%- if page.title -%}{{- page.title }} - {{ config.title -}}{%- elif section.title -%}{{- section.title }} - {{ config.title -}}{%- else -%}{{- config.title -}}{%- endif -%}" />
|
||||||
{%- elif section.title -%} {{- section.title }} - {{ config.title -}}
|
<meta property="og:url" content="{{ current_url | default(value='/') }}" />
|
||||||
{%- else -%} {{- config.title -}} {%- endif -%}" />
|
<meta property="og:description" content="{{ page.description | default(value=config.description) }}" />
|
||||||
<meta property="og:url" content="{{ current_url | default(value='/') }}" />
|
<meta property="og:image" content="{{ get_url(path='card.png') }}" />
|
||||||
<meta property="og:description" content="{{ page.description | default(value=config.description) }}" />
|
<meta property="twitter:card" content="summary_large_image" />
|
||||||
<meta property="og:image" content="{{ get_url(path='card.png') }}" />
|
|
||||||
<meta property="twitter:card" content="summary_large_image" />
|
|
||||||
</head>
|
</head>
|
||||||
|
@ -1,25 +1,24 @@
|
|||||||
<header id="site-nav">
|
<header id="site-nav">
|
||||||
<nav>
|
<nav>
|
||||||
<a href="#main" id="main-content" tabindex="0">Skip to main content</a>
|
<a href="#main" id="main-content" tabindex="0">Skip to main content</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li id="home">
|
<li id="home">
|
||||||
<a href="{{ get_url(path='') }}">{{ config.title }}</a>
|
<a href="{{ get_url(path='') }}">{{ config.title }}</a>
|
||||||
</li>
|
</li>
|
||||||
{% for link in config.extra.nav.links %}
|
{% for link in config.extra.nav.links %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ link.url | safe | replace(from='$BASE_URL', to=get_url(path='')) | safe }}">{{ link.name }}</a>
|
<a href="{{ link.url | safe | replace(from='$BASE_URL', to=get_url(path='')) | safe }}">{{ link.name
|
||||||
</li>
|
}}</a>
|
||||||
{% endfor %}
|
</li>
|
||||||
{% if config.extra.nav.show_feed %}
|
{% endfor %}
|
||||||
<li id="feed">
|
{% if config.extra.nav.show_feed %}
|
||||||
<a href="{{ get_url(path='') }}/{{ config.feed_filename }}">
|
<li id="feed">
|
||||||
<svg width="16" height="16" fill="currentColor" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
<a href="{{ get_url(path='') }}/{{ config.feed_filename }}">
|
||||||
<path d="M1.988 1.988V3c.008.547.453.984 1 .988.004-.004.008-.004.012-.004v.028A8.977 8.977 0 0 1 11.988 13a.991.991 0 0 0 1 .984h1V13h-.004c0-.004 0-.004.004-.008C13.984 7.02 9.184 2.148 3.242 2.02A1.004 1.004 0 0 0 3 1.988v-.004zm0 4V7c.008.547.453.984 1 .988.004-.004.008-.004.012-.004V8a4.985 4.985 0 0 1 4.996 4.844 1.002 1.002 0 0 0 .988 1.145c.008-.005.012-.005.016-.005v.004h.984V13H10c0-3.793-3.047-6.898-6.82-6.992 0-.004-.004-.004-.004-.004A.892.892 0 0 0 3 5.988v-.004zm2 4a1.999 1.999 0 1 0-.002 3.998 1.999 1.999 0 0 0 .002-3.998m0 0" />
|
<svg width="16" height="16" fill="currentColor" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M1.988 1.988V3c.008.547.453.984 1 .988.004-.004.008-.004.012-.004v.028A8.977 8.977 0 0 1 11.988 13a.991.991 0 0 0 1 .984h1V13h-.004c0-.004 0-.004.004-.008C13.984 7.02 9.184 2.148 3.242 2.02A1.004 1.004 0 0 0 3 1.988v-.004zm0 4V7c.008.547.453.984 1 .988.004-.004.008-.004.012-.004V8a4.985 4.985 0 0 1 4.996 4.844 1.002 1.002 0 0 0 .988 1.145c.008-.005.012-.005.016-.005v.004h.984V13H10c0-3.793-3.047-6.898-6.82-6.992 0-.004-.004-.004-.004-.004A.892.892 0 0 0 3 5.988v-.004zm2 4a1.999 1.999 0 1 0-.002 3.998 1.999 1.999 0 0 0 .002-3.998m0 0" /></svg>
|
||||||
</svg>
|
<span>Feed</span>
|
||||||
<span>Feed</span>
|
</a>
|
||||||
</a>
|
</li>
|
||||||
</li>
|
{% endif %}
|
||||||
{% endif %}
|
</ul>
|
||||||
</ul>
|
</nav>
|
||||||
</nav>
|
|
||||||
</header>
|
</header>
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
<div class="crt scanlines">
|
<div class="crt scanlines">
|
||||||
{{ body | markdown | safe }}
|
{{ body | markdown | safe }}
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
<a href="{{url}}">
|
<a href="{{url}}">
|
||||||
<img
|
<img class="
|
||||||
class="
|
{% if full %}full{% endif %}
|
||||||
{% if full %}full{% endif %}
|
{% if pixels %}pixels{% endif %}
|
||||||
{% if pixels %}pixels{% endif %}
|
{% if transparent %}transparent{% endif %}
|
||||||
{% if transparent %}transparent{% endif %}
|
{% if no_hover %}no-hover{% endif %}
|
||||||
{% if no_hover %}no-hover{% endif %}
|
"
|
||||||
"
|
{% if alt %}alt="{{alt}}"{% endif %}
|
||||||
{% if alt %}alt="{{alt}}"{% endif %}
|
src="{% if url_min %}{{url_min}}{% else %}{{url}}{% endif %}" />
|
||||||
src="{% if url_min %}{{url_min}}{% else %}{{url}}{% endif %}"
|
|
||||||
/>
|
|
||||||
</a>
|
</a>
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
<video
|
<video
|
||||||
class="
|
class="
|
||||||
{% if full %}full{% endif %}
|
{% if full %}full{% endif %}
|
||||||
{% if pixels %}pixels{% endif %}
|
{% if pixels %}pixels{% endif %}
|
||||||
{% if transparent %}transparent{% endif %}
|
{% if transparent %}transparent{% endif %}
|
||||||
"
|
"
|
||||||
{% if alt %}alt="{{alt}}"{% endif %}
|
{% if alt %}alt="{{alt}}"{% endif %}
|
||||||
controls
|
controls src="{{url}}">
|
||||||
src="{{url}}">
|
|
||||||
</video>
|
</video>
|
||||||
|
@ -5,12 +5,10 @@
|
|||||||
<small> {{ terms | length }} tags in total </small>
|
<small> {{ terms | length }} tags in total </small>
|
||||||
<br />
|
<br />
|
||||||
<small>
|
<small>
|
||||||
<ul class="tags">
|
<ul class="tags">
|
||||||
{% for tag in terms %}
|
{% for tag in terms %}
|
||||||
<li>
|
<li><a class="tag" href="{{ get_taxonomy_url(kind='tags', name=tag.name) }}">{{ tag.name }}</a></li>
|
||||||
<a class="tag" href="{{ get_taxonomy_url(kind='tags', name=tag.name) }}">{{ tag.name }}</a>
|
{% endfor %}
|
||||||
</li>
|
</ul>
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</small>
|
</small>
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
|
@ -3,37 +3,29 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<h1>Posts with tag “{{ term.name }}”</h1>
|
<h1>Posts with tag “{{ term.name }}”</h1>
|
||||||
<small>
|
<small>
|
||||||
<a class="link-page" href="{{ get_url(path='tags') }}">See all tags</a>
|
<a class="link-page" href="{{ get_url(path='tags') }}">See all tags</a>
|
||||||
<br />
|
<br />
|
||||||
{{ term.pages | length }} posts in total
|
{{ term.pages | length }} posts in total
|
||||||
</small>
|
</small>
|
||||||
<article>
|
<article>
|
||||||
{% for page in term.pages %}
|
{% for page in term.pages %}
|
||||||
<h3>
|
<h3><a class="link-page" href="{{ page.permalink | safe }}">{{ page.title }}</a></h3>
|
||||||
<a class="link-page" href="{{ page.permalink | safe }}">
|
{%- if page.description %}
|
||||||
{{ page.title }}
|
<p>{{ page.description }}</p>
|
||||||
</a>
|
{%- endif %}
|
||||||
</h3>
|
<small>
|
||||||
{%- if page.description %}
|
<time datetime='{{ page.date | date(format=' %+') }}' pubdate>{{- page.date | date(format=config.extra.date_format) -}}</time>
|
||||||
<p>{{ page.description }}</p>
|
{%- if page.taxonomies %}
|
||||||
{%- endif %}
|
{%- for name, taxon in page.taxonomies %}
|
||||||
<small>
|
<span>•</span>
|
||||||
<time datetime='{{ page.date | date(format='%+') }}' pubdate>
|
<ul class="tags">
|
||||||
{{- page.date | date(format=config.extra.date_format) -}}
|
{%-for item in taxon %}
|
||||||
</time>
|
<li><a class="tag" href="{{ get_taxonomy_url(kind=name, name=item) }}">{{ item }}</a></li>
|
||||||
{%- if page.taxonomies %}
|
{%- endfor %}
|
||||||
{%- for name, taxon in page.taxonomies %}
|
</ul>
|
||||||
<span>•</span>
|
{%- endfor %}
|
||||||
<ul class="tags">
|
{%- endif %}
|
||||||
{%-for item in taxon %}
|
</small>
|
||||||
<li>
|
{% endfor %}
|
||||||
<a class="tag" href="{{ get_taxonomy_url(kind=name, name=item) }}">{{ item }}</a>
|
|
||||||
</li>
|
|
||||||
{%- endfor %}
|
|
||||||
</ul>
|
|
||||||
{%- endfor %}
|
|
||||||
{%- endif %}
|
|
||||||
</small>
|
|
||||||
{% endfor %}
|
|
||||||
</article>
|
</article>
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
|
Reference in New Issue
Block a user