1
0
Fork 0
forked from fun/fun

Moved the website code to ./web/ to make it easier to maintain for me. No code changes. (0.40.5)

This commit is contained in:
Johannes Findeisen 2026-04-10 22:36:29 +02:00
commit 71576be449
71 changed files with 3354 additions and 1 deletions

0
web/_sass/.gitkeep Normal file
View file

188
web/_sass/_base.scss Normal file
View file

@ -0,0 +1,188 @@
html {
margin: 0;
padding: 0;
}
body, h1, h2, h3, h4, h5, h6, p, code, blockquote,
pre, hr, dl, dd, ol, ul, figure, span {
margin: 0;
padding: 0;
}
body {
background: $background-color;
//background-color: $background-color;
//background-image: url("/images/fractalized.jpg");
//background-repeat: no-repeat;
//background-attachment: fixed;
//background-size: 100%;
color: $text-color;
font-family: $base-font-family;
font-size: $base-font-size;
font-weight: 300;
line-height: $base-line-height;
}
h1, h2, h3, h4, h5, h6 {
color: $headline-color;
padding-top: 18px;
}
h1 {
color: $headline-color;
padding-top: 0px;
}
h2 {
> a,
a:link,
a:visited {
text-decoration: none;
}
}
img {
max-width: 100%;
vertical-align: middle;
}
img.l {
border: 0;
float: left;
margin: 6px 16px 0 0;
padding: 0;
}
img.r {
border: 0;
float: right;
margin: 6px 0 0 16px;
padding: 0;
}
img.x {
max-width: 99.8%;
border: 1px solid #000;
}
ul, ol {
margin: 0 0 0 25px;
padding: 0 0 12px 0;
}
li {
> ul,
> ol {
margin-bottom: 0;
}
}
p {
padding: 0px 0px 14px 0px;
}
blockquote {
color: $grey-color;
border-left: 4px solid $grey-color-light;
font-size: 18px;
font-style: italic;
letter-spacing: -1px;
padding-left: calc($spacing-unit / 2);
> :last-child {
margin-bottom: 0;
}
}
pre {
background: $grey-color-dark;
/*background-image: -webkit-linear-gradient($grey-color-dark 50%, $grey-color-light 50%);
background-image: -moz-linear-gradient($grey-color-dark 50%, $grey-color-light 50%);
background-image: -ms-linear-gradient($grey-color-dark 50%, $grey-color-light 50%);
background-image: -o-linear-gradient($grey-color-dark 50%, $grey-color-light 50%);
background-image: linear-gradient($grey-color-dark 50%, $grey-color-light 50%);*/
background-position: 0 0;
background-repeat: repeat;
background-size: 2.8em 2.8em;
border: 0px $grey-color solid;
border-radius: 8px;
counter-reset: line-numbering;
font-family: $base-font-family;
font-size: $base-font-size;
// https://stackoverflow.com/questions/5840328/styling-each-line-inside-pre-with-css
line-height: 1.4em;
margin: 0 0 0 0;
overflow: auto;
overflow-x: auto;
padding: 8px;
tab-size: 2;
-moz-tab-size: 2;
}
/*pre::before {
content: counter(linex);
counter-increment: linex;
padding-right: 1em;
width: 1.5em;
text-align: right;
opacity: 0.5;
}*/
/*pre > code {
font-family: $base-font-family;
font-size: $base-font-size;
counter-increment: line;
margin: 0 0 0 0;
padding: 0 0 0 0;
}*/
/**pre > code:before{
content: counter(line);
display: inline-block;
width: 2.0em;
border-right: 1px solid $grey-color;
padding-right: .7em;
margin-right: .7em;
color: #bc6c21;
-webkit-user-select: none;
text-align: right;
}**/
audio {
height: 24px;
width: 100%;
}
table {
border: 0px solid black;
//border-collapse: collapse;
}
table > thead > tr {
}
table > thead > tr > th {
background: $tablehead-color;
border: 0px solid black;
color: white;
padding: 4px;
}
table > tbody > tr:nth-child(even) {
background: $grey-color-light;
}
table > tbody > tr:nth-child(odd) {
background: $grey-color-dark;
}
table > tbody > tr > td {
border: 0px solid black;
padding: 4px;
}
table.sortable th:not(.sorttable_sorted):not(.sorttable_sorted_reverse):not(.sorttable_nosort):after {
content: " \25B4 \25BE"
}

9
web/_sass/_fonts.scss Normal file
View file

@ -0,0 +1,9 @@
@font-face {
font-family: "CPS";
src: url("../fonts/Courier-Prime-Sans.ttf");
}
@font-face {
font-family: "MDI";
src: url("../fonts/materialdesignicons-webfont.woff2") format("woff2");
}

126
web/_sass/_forms.scss Normal file
View file

@ -0,0 +1,126 @@
// Contact form
#contactform {
//padding: 20px;
//border: 1px solid $grey-color;
//background: $grey-color-light;
//display: inline;
}
#contactform label, #contactform input, #contactform textarea {
display: block;
width: 98%;
resize: none;
}
#contactform textarea {
height: 120px;
}
#contactform label { margin: 10px 0; }
#contactform label:first-child { margin-top: 0; }
#contactform input, #contactform textarea {
font-family: $base-font-family;
font-size: $base-font-size;
line-height: $base-line-height;
font-weight: 300;
padding: 10px;
margin-bottom: 10px;
border: 1px solid $grey-color;
}
#contactform input[type=submit] {
border: 0;
color: #fff;
background: $brand-color;
cursor: pointer;
width: 100%;
}
#contactform input[type=submit]:hover {
background: $headline-color;
}
// Login form
#loginform {
//background: $grey-color-light;
//border: 1px solid $grey-color;
display: inline;
//padding: 20px;
//width: 380px;
}
#loginform label, #loginform input{
//display: block;
resize: none;
}
#loginform label { margin: 10px 0; }
#loginform label:first-child { margin-top: 0; }
#loginform input {
border: 1px solid $grey-color;
font-family: $base-font-family;
line-height: $base-line-height;
font-size: $base-font-size;
//font-weight: 300;
margin: 10px;
padding: 10px;
}
#loginform input[type=submit] {
border: 0;
background: $brand-color;
color: #fff;
cursor: pointer;
}
#loginform input[type=submit]:hover {
background: $headline-color;
}
// Search form
#searchform {
//padding: 20px;
//border: 1px solid $grey-color;
//background: $grey-color-light;
}
#searchform label, #searchform input, #searchform textarea {
display: block;
width: 98%;
resize: none;
}
#searchform textarea {
height: 120px;
}
#searchform label { margin: 10px 0; }
#searchform label:first-child { margin-top: 0; }
#searchform input, #searchform textarea {
font-family: $base-font-family;
font-size: $base-font-size;
line-height: $base-line-height;
font-weight: 300;
padding: 10px;
margin-bottom: 10px;
border: 1px solid $grey-color;
}
#searchform input[type=submit] {
border: 0;
color: #fff;
background: $brand-color;
cursor: pointer;
width: 100%;
}
#searchform input[type=submit]:hover {
background: $headline-color;
}

61
web/_sass/_highlight.scss Normal file
View file

@ -0,0 +1,61 @@
/*.highlight { background: #ffffff; }*/
.highlight .c { color: #999988; font-style: italic } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { font-weight: bold } /* Keyword */
.highlight .o { font-weight: bold } /* Operator */
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #999999 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { font-weight: bold } /* Keyword.Constant */
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #009999 } /* Literal.Number */
.highlight .s { color: #d14 } /* Literal.String */
.highlight .na { color: #008080 } /* Name.Attribute */
.highlight .nb { color: #0086B3 } /* Name.Builtin */
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
.highlight .no { color: #008080 } /* Name.Constant */
.highlight .ni { color: #800080 } /* Name.Entity */
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
.highlight .nn { color: #555555 } /* Name.Namespace */
.highlight .nt { color: #000080 } /* Name.Tag */
.highlight .nv { color: #008080 } /* Name.Variable */
.highlight .ow { font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mf { color: #009999 } /* Literal.Number.Float */
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
.highlight .sc { color: #d14 } /* Literal.String.Char */
.highlight .sd { color: #d14 } /* Literal.String.Doc */
.highlight .s2 { color: #d14 } /* Literal.String.Double */
.highlight .se { color: #d14 } /* Literal.String.Escape */
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
.highlight .si { color: #d14 } /* Literal.String.Interpol */
.highlight .sx { color: #d14 } /* Literal.String.Other */
.highlight .sr { color: #009926 } /* Literal.String.Regex */
.highlight .s1 { color: #d14 } /* Literal.String.Single */
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #008080 } /* Name.Variable.Class */
.highlight .vg { color: #008080 } /* Name.Variable.Global */
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */

44
web/_sass/_isso.scss Normal file
View file

@ -0,0 +1,44 @@
.isso-input-wrapper {
margin: 0px;
padding: 0px;
width: 238px;
}
.isso-input-wrapper input {
box-shadow: 0 0 0 0;
margin-top: 3px;
}
.isso-input-wrapper input[type="email"] {
box-shadow: 0 0 0 0;
}
.isso-input-wrapper input[type="text"] {
box-shadow: 0 0 0 0;
}
.isso-textarea-wrapper textarea {
border-radius: 0;
box-shadow: 0 0 0 0;
}
#isso-postbox-author, #isso-postbox-email, #isso-postbox-website, .isso-post-action input, .isso-textarea {
border-radius: 0;
font-family: $base-font-family;
font-size: $base-font-size;
}
.isso-post-action input[type=button], .isso-post-action input[type=submit] {
border: 0;
color: #fff;
background: $brand-color;
cursor: pointer;
margin-top: 3px;
padding: 6px 18px 6px 18px;
width: 100%;
}
.isso-post-action input[type=button]:hover, .isso-post-action input[type=submit]:hover {
background: $headline-color;
}

401
web/_sass/_layout.scss Normal file
View file

@ -0,0 +1,401 @@
.site {
//border-radius: 12px 12px;
border: 1px solid #000;
border-radius: 8px;
background-color: #fcfbf9;
max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2));
max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));
margin-right: auto;
margin-left: auto;
margin-top: 4px;
margin-bottom: 4px;
//box-shadow: 0px 0px 3px #000;
}
.pagination {
margin-top: $spacing-unit;
margin-bottom: $spacing-unit;
text-align: center;
}
.site-header {
min-height: 56px;
position: relative;
}
.site-title {
line-height: 56px;
margin-bottom: 0;
float: left;
}
.site-nav {
float: right;
z-index: 998;
position: absolute;
top: 18px;
right: 18px;
background-color: white;
border: 1px solid $brand-color;
//border-radius: 6px;
text-align: right;
text-decoration: none;
.menu-icon {
display: block;
float: right;
width: 36px;
height: 26px;
line-height: 0;
padding-top: 10px;
text-align: center;
text-decoration: none;
//> svg {
// width: 18px;
// height: 15px;
// path {
// fill: $grey-color-dark;
// }
//}
> span {
align-items: center;
justify-content: center;
display: flex;
flex-direction: column;
font-size: 24px;
padding-top: 10px;
}
}
.trigger {
clear: both;
display: none;
}
&:hover .trigger {
display: block;
//padding-bottom: 5px;
//text-decoration: none;
//color: $brand-color;
}
.page-link {
display: block;
padding: 5px 10px;
}
}
/*.ham-menu {
display: inline-block;
position: relative;
margin: 2px 0;
}
.ham-menu, .ham-menu::before, .ham-menu::after {
width: 100px;
height: 20px;
border-radius: 7px;
background-color: black;
}
.ham-menu::before, .ham-menu::after {
content: "";
display: block;
position: absolute;
}
.ham-menu::before {
bottom: 130%;
}
.ham-menu::after {
top: 130%;
}*/
.site-footer {
margin: calc($spacing-unit / 4);
//border-radius: 12px 12px;
//background-color: $grey-color-light;
//border: 1px solid $grey-color;
}
.footer-col-wrapper {
margin-left: calc($spacing-unit / 2);
@extend %clearfix;
}
.footer-col {
float: left;
margin-bottom: calc($spacing-unit / 2);
padding-left: calc($spacing-unit / 2);
}
@include media-query($on-palm) {
.footer-col {
float: none;
width: -webkit-calc(100% - (#{$spacing-unit} / 2));
width: calc(100% - (#{$spacing-unit} / 2));
}
}
.page-content {
}
.page-heading {
}
.post-list {
margin-left: 0;
list-style: none;
> li {
margin-bottom: $spacing-unit;
}
}
.post-meta {
font-size: $small-font-size;
color: $grey-color;
}
.post-link {
display: block;
font-size: 24px;
}
.post-header {
margin-bottom: $spacing-unit;
}
.post-title {
letter-spacing: -1px;
line-height: 1;
@include media-query($on-laptop) {
}
}
.post-content {
margin-bottom: $spacing-unit;
}
.post-content img {
}
.overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
min-width: 100%;
height: 100%;
min-height: 100%;
background: rgba(0,0,0,.8);
z-index: 999;
opacity: 1;
transition: all 0.5s;
}
.wrapper {
max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));
margin-right: auto;
margin-left: auto;
padding-right: $spacing-unit;
padding-left: $spacing-unit;
padding-top: calc($spacing-unit / 2);
padding-bottom: 0;
@extend %clearfix;
@include media-query($on-laptop) {
max-width: calc(#{$content-width} - (#{$spacing-unit}));
padding-right: calc($spacing-unit / 2);
padding-left: calc($spacing-unit / 2);
}
}
%clearfix {
&:after {
content: "";
display: table;
clear: both;
}
}
.icon {
> svg {
display: inline-block;
width: 16px;
height: 16px;
vertical-align: middle;
path {
fill: $grey-color;
}
}
}
.pagination a, span {
margin-left: 4px;
margin-right: 4px;
}
span.feed {
border: 1px solid;
border-color: #FC9 #630 #330 #F96;
padding: 0 3px;
font: bold 0.4em sans-serif;
color: #fff;
background: #f60;
text-decoration: none;
margin: 0;
}
#topbutton {
text-align: center;
padding: 0;
width: 46px;
height: 46px;
background: $topbutton-color url(/images/up-arrow.png) no-repeat center center;
border: 1px solid $grey-color-dark;
position: fixed;
bottom: 10px;
right: 10px;
cursor: pointer;
}
span.cursor {
color: #FF9500;
display: inline-block;
background: transparent;
margin-left: 1px;
animation: 1s blink step-end infinite;
}
@keyframes "blink" bold {
from, to {
color: transparent;
}
50% {
color: black;
}
}
@-webkit-keyframes "blink" bold {
from, to {
color: transparent;
}
50% {
color: black;
}
}
@-ms-keyframes "blink" bold {
from, to {
color: transparent;
}
50% {
color: black;
}
}
@-o-keyframes "blink" {
from, to {
color: transparent;
}
50% {
color: black;
}
}
#pages {
text-align: center;
}
#pages a:link,
#pages a:visited,
#pages strong {
float: left;
width: 1.8em;
border: 1px solid #000;
font-weight: bold;
text-decoration: none;
text-align: center;
margin: 0px 4px 4px 0;
padding: 2px;
background: $brand-color;
color: #fff;
}
#pages > a.active {
color: $grey-color-light;
background: #fff;
border-color: $grey-color;
}
#pages a:focus,
#pages a:hover,
#pages a:active {
color: $hover-color;
background: #fff;
}
#pages p {
float: left;
width: 100%;
}
#notify {
padding: 10px;
margin-bottom: 20px;
border: 1px solid $grey-color;
background: $headline-color;
}
.lds-dual-ring.hidden {
display: none;
}
.lds-dual-ring {
display: inline-block;
width: 80px;
height: 80px;
}
.lds-dual-ring:after {
content: " ";
display: block;
width: 64px;
height: 64px;
margin: 5% auto;
border-radius: 50%;
border: 6px solid #fff;
border-color: #fff transparent #fff transparent;
animation: lds-dual-ring 1.2s linear infinite;
}
@keyframes lds-dual-ring {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
#terminal::before {
content: "";
}
@media (prefers-reduced-motion: no-preference) {
@keyframes flash {
50% { opacity: 0; }
}
@keyframes reveal {
from { width: 2em; }
to { width: 100%; }
}
#terminal {
animation: reveal 6s linear;
overflow: hidden;
text-overflow: "";
white-space: nowrap;
}
#terminal::after {
animation: flash 1.5s step-end infinite;
content: "";
}
}

269
web/_sass/_links.scss Normal file
View file

@ -0,0 +1,269 @@
a {
color: $brand-color;
//display: inline-block;
//position: relative;
}
a:link {
text-decoration: underline;
}
a:visited {
color: $brand-color;
text-decoration: underline;
}
a:focus,
a:hover {
color: $hover-color;
text-decoration: none;
text-shadow: $hover-color 0px 0px 6px;
}
a:active {
color: $hover-color;
text-decoration: none;
}
// https://stackoverflow.com/questions/2011142/how-to-change-the-style-of-the-title-attribute-inside-an-anchor-tag
// https://css-tricks.com/css-content/
/*a[title]:hover::after {
background: rgba(0,0,0,1.0);
//content: attr(title);
//position: absolute;
//top: -100%;
//left: 0;
border-radius: 0px;
//border: 1px solid red;
//color: #fff;
//background: $brand-color;
}*/
a.bug::after {
content: "\F0A30";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.bug:hover::after {
color: $hover-color;
}
a.chat::after {
content: "\F0EDE";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.chat:hover::after {
color: $hover-color;
}
a.code::after {
content: "\F102B";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.code:hover::after {
color: $hover-color;
}
a.commit::after {
content: "\F05D6";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.commit:hover::after {
color: $hover-color;
}
a.community::after {
content: "\F112D";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.community:hover::after {
color: $hover-color;
}
a.cube::after {
content: "\F01A7";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.cube:hover::after {
color: $hover-color;
}
a.document::after {
content: "\F09EE";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.document:hover::after {
color: $hover-color;
}
a.ext::after {
content: "\F03CC";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.ext:hover::after {
color: $hover-color;
}
a.file::after {
content: "\F0224";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.file:hover::after {
color: $hover-color;
}
a.git::after {
content: "\F02A2";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.git:hover::after {
color: $hover-color;
}
a.home::after {
content: "\F06A1";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.home:hover::after {
color: $hover-color;
}
a.love::after {
content: "\F02D5";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.love:hover::after {
color: $hover-color;
}
a.mail::after {
content: "\F01F0";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.mail:hover::after {
color: $hover-color;
}
a.mastodon::after {
content: "\F0AD1";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.mastodon:hover::after {
color: $hover-color;
}
a.privacy::after {
content: "\F0CC8";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.privacy:hover::after {
color: $hover-color;
}
a.rss::after {
content: "\F046B";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.rss:hover::after {
color: $hover-color;
}
a.search::after {
content: "\F0349";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.search:hover::after {
color: $hover-color;
}
a.user::after {
content: "\F0013";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.user:hover::after {
color: $hover-color;
}
a.wiki::after {
content: "\F1CCC";
color: $base-icon-color;
font-family: $base-icon-font-family;
font-size: $base-icon-size;
padding-left: 5px;
}
a.wiki:hover::after {
color: $hover-color;
}

17
web/_sass/_toc.scss Normal file
View file

@ -0,0 +1,17 @@
//#toc-container h2 {
// font-size: 1.4em;
//}
#toc-container ul {
list-style-image: none;
list-style-type: none;
margin-left: $spacing-unit;
//margin:0;
//padding: 0;
//text-align: left;
}
#toc-container ul li {
list-style-type: none;
padding-left: 0;
}