repos/kloeckner.com.ar

Backup of part of my webpage
Commits Files Refs README LICENSE
commit b9b306e64aea552a9beb918d83fee927f258e5a0
parent df22ebbcca85436a03502011cc21a05d295e4589
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Sat,  5 Sep 2026 12:02:22 -0300

Add css-minificator python script

Diffstat:
MMakefile | 10++++++++--
Dcss/article.css | 238-------------------------------------------------------------------------------
Acss/article_src.css | 239+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rcss/colors.css -> css/colors_src.css | 0
Dcss/git.css | 1098-------------------------------------------------------------------------------
Acss/git_src.css | 1016+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dcss/style.css | 703-------------------------------------------------------------------------------
Acss/style_src.css | 724+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ascripts/css-minificator.py | 18++++++++++++++++++
9 files changed, 2005 insertions(+), 2041 deletions(-)
diff --git a/Makefile b/Makefile
@@ -4,11 +4,14 @@ ROOT_PATH = $(CURDIR)
 
 all: sync
 
+minify-css:
+    ./scripts/css-minificator.py
+
 build:
     ./scripts/build.sh ${ROOT_PATH}
     ./scripts/sync.sh ${ROOT_PATH}
 
-sync: build
+sync: build minify-css
     sudo ./scripts/deploy_local.sh ${ROOT_PATH}
 
 force-sync:
@@ -16,7 +19,7 @@ force-sync:
     ./scripts/sync.sh --force-update ${ROOT_PATH}
     sudo ./scripts/deploy_local.sh ${ROOT_PATH}
 
-deploy:
+deploy: minify-css
     rsync -e "ssh -i $(KEY)" -rahvPt --delete --delete-excluded \
         --exclude=.git \
         --exclude=./scripts/^js \
@@ -30,6 +33,9 @@ deploy:
     rsync -e "ssh -i $(KEY)" -rahvPt --delete --delete-excluded \
         --exclude=.git \
         ./common/logo.webp root@$(DOMAIN):/var/www/git/logo.png
+    rsync -e "ssh -i $(KEY)" -rahvPt --delete --delete-excluded \
+        --exclude=.git \
+        ./favicon.png root@$(DOMAIN):/var/www/git/favicon.png
 
     ssh -i $(KEY) root@$(DOMAIN) -t 'systemctl restart nginx'
 
diff --git a/css/article.css b/css/article.css
@@ -1,238 +0,0 @@
-#article-title {
-    /* text-decoration: underline; */
-    text-align: left;
-    padding-top: .5em;
-    padding-bottom: .5em;
-}
-
-.article-date {
-    font-size: 1em;
-    padding-bottom: 2.75em;
-    /* color: #588B8B; */
-    color: var(--article-date);
-    font-style: italic;
-    font-family: "inconsolata", monospace;
-}
-
-img {
-    padding-top: .75em;
-    padding-bottom: .75em;
-}
-
-.centered-img {
-    display: flex;
-    justify-content: center; /* Horizontal centering */
-    align-items: center;     /* Vertical centering */
-    padding-bottom: .75em;
-}
-
-.side-by-side {
-    display: flex;
-    justify-content: center; /* Horizontal centering */
-    align-items: center;     /* Vertical centering */
-    gap: 5px;
-    padding-bottom: .75em;
-}
-
-.side-by-side img {
-  width: 49.6%;
-}
-
-#article-screenshot {
-    text-align: center;
-}
-
-#article-icon {
-    /* text-align: center; */
-    /* float: center; */
-    /* max-width: 5em; */
-    /* flex-basis: 40% */
-    width: 3em;
-    min-width: 2em;
-    padding-right: .75em;
-    display: inline;
-}
-
-#article-icon img {
-    max-width: 3em;
-    vertical-align: middle;
-    padding-top: 0em;
-}
-
-#article-title-with-icon {
-    /* display: flex; */
-    align-items: center;
-    padding-bottom: 1em;
-    padding-top: 1em;
-}
-
-#article-title-with-icon #article-title {
-    display: inline;
-}
-
-h2 {
-    padding-bottom: .5em;
-    font-size: 1.5em;
-}
-h3 { font-size: 1.25em; }
-h4 { padding-bottom: .5em; }
-em { font-weight: bold; }
-
-ul {
-    padding-bottom: 1em;
-    list-style-position: inside;
-}
-
-blockquote {
-    border-left: 4px solid var(--grey1);
-    padding-left: .50em;
-    font-style: italic;
-    pre {
-        font-style: normal;
-    }
-}
-
-/* Monokai theme */
-/* Background */ .bg { color: antiquewhite; background-color: var(--code-bg); -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4 }
-/* PreWrapper */ .chroma { color: antiquewhite; background-color: var(--code-bg); -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; }
-/* Punctuation */ .chroma .p { color: antiquewhite; }
-/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
-/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
-/* LineHighlight */ .chroma .hl { background-color: #3d4148 }
-/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #58626f }
-/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #58626f }
-/* Line */ .chroma .line { display: flex; }
-/* Keyword */ .chroma .k { color: #c678dd }
-/* KeywordConstant */ .chroma .kc { color: #b756ff; font-weight: bold }
-/* KeywordDeclaration */ .chroma .kd { color: #c678dd }
-/* KeywordNamespace */ .chroma .kn { color: #c678dd }
-/* KeywordPseudo */ .chroma .kp { color: #c678dd }
-/* KeywordReserved */ .chroma .kr { color: #c678dd }
-/* KeywordType */ .chroma .kt { color: #ef8383 }
-/* Name */ .chroma .n { color: antiquewhite }
-/* NameAttribute */ .chroma .na { color: #b3d23c }
-/* NameBuiltin */ .chroma .nb { color: #ef8383 }
-/* NameBuiltinPseudo */ .chroma .bp { color: #c1abea }
-/* NameClass */ .chroma .nc { color: #76a9f9 }
-/* NameConstant */ .chroma .no { color: #b756ff; font-weight: bold }
-/* NameDecorator */ .chroma .nd { color: #e5c07b }
-/* NameEntity */ .chroma .ni { color: #bda26f }
-/* NameException */ .chroma .ne { color: #fd7474; font-weight: bold }
-/* NameFunction */ .chroma .nf { color: #00b1f7 }
-/* NameFunctionMagic */ .chroma .fm { color: #c1abea }
-/* NameLabel */ .chroma .nl { color: #f5a40d }
-/* NameNamespace */ .chroma .nn { color: #76a9f9 }
-/* NameOther */ .chroma .nx { color: antiquewhite }
-/* NameProperty */ .chroma .py { color: #cebc3a }
-/* NameTag */ .chroma .nt { color: #e06c75 }
-/* NameVariable */ .chroma .nv { color: #dcaeea }
-/* NameVariableClass */ .chroma .vc { color: #c1abea }
-/* NameVariableGlobal */ .chroma .vg { color: #dcaeea; font-weight: bold }
-/* NameVariableInstance */ .chroma .vi { color: #e06c75 }
-/* NameVariableMagic */ .chroma .vm { color: #c1abea }
-/* Literal */ .chroma .l { color: #98c379 }
-/* LiteralDate */ .chroma .ld { color: #98c379 }
-/* LiteralString */ .chroma .s { color: #98c379 }
-/* LiteralStringAffix */ .chroma .sa { color: #98c379 }
-/* LiteralStringBacktick */ .chroma .sb { color: #98c379 }
-/* LiteralStringChar */ .chroma .sc { color: #98c379 }
-/* LiteralStringDelimiter */ .chroma .dl { color: #98c379 }
-/* LiteralStringDoc */ .chroma .sd { color: #7e97c3 }
-/* LiteralStringDouble */ .chroma .s2 { color: #63c381 }
-/* LiteralStringEscape */ .chroma .se { color: #d26464; font-weight: bold }
-/* LiteralStringHeredoc */ .chroma .sh { color: #98c379 }
-/* LiteralStringInterpol */ .chroma .si { color: #98c379 }
-/* LiteralStringOther */ .chroma .sx { color: #70b33f }
-/* LiteralStringRegex */ .chroma .sr { color: #56b6c2 }
-/* LiteralStringSingle */ .chroma .s1 { color: #98c379 }
-/* LiteralStringSymbol */ .chroma .ss { color: #56b6c2 }
-/* LiteralNumber */ .chroma .m { color: #d19a66 }
-/* LiteralNumberBin */ .chroma .mb { color: #d19a66 }
-/* LiteralNumberFloat */ .chroma .mf { color: #d19a66 }
-/* LiteralNumberHex */ .chroma .mh { color: #d19a66 }
-/* LiteralNumberInteger */ .chroma .mi { color: #d19a66 }
-/* LiteralNumberIntegerLong */ .chroma .il { color: #d19a66 }
-/* LiteralNumberOct */ .chroma .mo { color: #d19a66 }
-/* Operator */ .chroma .o { color: #c7bf54 }
-/* OperatorWord */ .chroma .ow { color: #b756ff; font-weight: bold }
-/* Comment */ .chroma .c { color: #8a93a5; font-style: italic }
-/* CommentHashbang */ .chroma .ch { color: #8a93a5; font-weight: bold; font-style: italic }
-/* CommentMultiline */ .chroma .cm { color: #8a93a5; font-style: italic }
-/* CommentSingle */ .chroma .c1 { color: #8a93a5; font-style: italic }
-/* CommentSpecial */ .chroma .cs { color: #8a93a5; font-style: italic }
-/* CommentPreproc */ .chroma .cp { color: #8a93a5; font-style: italic }
-/* CommentPreprocFile */ .chroma .cpf { color: #8a93a5; font-style: italic }
-/* GenericEmph */ .chroma .ge { font-style: italic }
-/* GenericHeading */ .chroma .gh { color: #a2cbff; font-weight: bold }
-/* GenericInserted */ .chroma .gi { color: #a6e22e }
-/* Generic X (used for diff file remove line) */ .chroma .gd { color: red }
-/* GenericOutput */ .chroma .go { color: #a6e22e }
-/* GenericPrompt */ .chroma .gp { color: #a6e22e }
-/* GenericStrong */ .chroma .gs { font-weight: bold }
-/* GenericSubheading */ .chroma .gu { color: #a2cbff }
-/* GenericTraceback */ .chroma .gt { color: #a2cbff }
-/* GenericUnderline */ .chroma .gl { text-decoration: underline }
-
-@media (max-width: 800px) {
-    .article_bottom_bar {
-        /* width: 45%; */
-        margin-top: 1em;
-    }
-    #article-title {
-        padding-top: .25em;
-        padding-bottom: .25em;
-        font-size: 1.5em;
-
-    }
-    #article-title-with-icon {
-        padding-bottom: .75em;
-        padding-top: .75em;
-    }
-    #article-icon img {
-        max-width: 2.5em;
-    }
-
-    #article-icon {
-        padding-right: .5em
-    }
-
-    .side-by-side {
-        display: flex;
-        /* flex-direction: column; */
-        justify-content: center;
-        align-items: center;
-    }
-
-    .side-by-side img {
-        width: 100%;
-    }
-
-    img {
-        width: 100%;
-    }
-
-}
-
-@media (max-width: 400px) {
-    .article_bottom_bar {
-        margin-top: .5em;
-    }
-    #article-title {
-        padding-top: .25em;
-        padding-bottom: .5em;
-        font-size: 1.4em;
-    }
-    #article-title-with-icon {
-        padding-bottom: .5em;
-        padding-top: .5em;
-    }
-
-    #article-icon img {
-        max-width: 2em;
-    }
-
-    #article-icon {
-        padding-right: .25em
-    }
-    h2 { padding-bottom: .5em; }
-}
diff --git a/css/article_src.css b/css/article_src.css
@@ -0,0 +1,239 @@
+#article-title {
+    /* text-decoration: underline; */
+    text-align: left;
+    padding-top: .5em;
+    padding-bottom: 10px;
+    font-size: 28px;
+}
+
+.article-date {
+    font-size: 1em;
+    padding-bottom: 2.75em;
+    /* color: #588B8B; */
+    color: var(--article-date);
+    font-style: italic;
+    font-family: "inconsolata", monospace;
+}
+
+img {
+    padding-top: .75em;
+    padding-bottom: .75em;
+}
+
+.centered-img {
+    display: flex;
+    justify-content: center; /* Horizontal centering */
+    align-items: center;     /* Vertical centering */
+    padding-bottom: .75em;
+}
+
+.side-by-side {
+    display: flex;
+    justify-content: center; /* Horizontal centering */
+    align-items: center;     /* Vertical centering */
+    gap: 5px;
+    padding-bottom: .75em;
+}
+
+.side-by-side img {
+  width: 49.6%;
+}
+
+#article-screenshot {
+    text-align: center;
+}
+
+#article-icon {
+    /* text-align: center; */
+    /* float: center; */
+    /* max-width: 5em; */
+    /* flex-basis: 40% */
+    width: 3em;
+    min-width: 2em;
+    padding-right: .75em;
+    display: inline;
+}
+
+#article-icon img {
+    max-width: 3em;
+    vertical-align: middle;
+    padding-top: 0em;
+}
+
+#article-title-with-icon {
+    /* display: flex; */
+    align-items: center;
+    padding-bottom: 1em;
+    padding-top: 1em;
+}
+
+#article-title-with-icon #article-title {
+    display: inline;
+}
+
+h2 {
+    padding-bottom: .5em;
+    font-size: 1.5em;
+}
+h3 { font-size: 1.25em; }
+h4 { padding-bottom: .5em; }
+em { font-weight: bold; }
+
+ul {
+    padding-bottom: 1em;
+    list-style-position: inside;
+}
+
+blockquote {
+    border-left: 4px solid var(--grey1);
+    padding-left: .50em;
+    font-style: italic;
+    pre {
+        font-style: normal;
+    }
+}
+
+/* Monokai theme */
+/* Background */ .bg { color: antiquewhite; background-color: var(--code-bg); -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4 }
+/* PreWrapper */ .chroma { color: antiquewhite; background-color: var(--code-bg); -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; }
+/* Punctuation */ .chroma .p { color: antiquewhite; }
+/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
+/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
+/* LineHighlight */ .chroma .hl { background-color: #3d4148 }
+/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #58626f }
+/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #58626f }
+/* Line */ .chroma .line { display: flex; }
+/* Keyword */ .chroma .k { color: #c678dd }
+/* KeywordConstant */ .chroma .kc { color: #b756ff; font-weight: bold }
+/* KeywordDeclaration */ .chroma .kd { color: #c678dd }
+/* KeywordNamespace */ .chroma .kn { color: #c678dd }
+/* KeywordPseudo */ .chroma .kp { color: #c678dd }
+/* KeywordReserved */ .chroma .kr { color: #c678dd }
+/* KeywordType */ .chroma .kt { color: #ef8383 }
+/* Name */ .chroma .n { color: antiquewhite }
+/* NameAttribute */ .chroma .na { color: #b3d23c }
+/* NameBuiltin */ .chroma .nb { color: #ef8383 }
+/* NameBuiltinPseudo */ .chroma .bp { color: #c1abea }
+/* NameClass */ .chroma .nc { color: #76a9f9 }
+/* NameConstant */ .chroma .no { color: #b756ff; font-weight: bold }
+/* NameDecorator */ .chroma .nd { color: #e5c07b }
+/* NameEntity */ .chroma .ni { color: #bda26f }
+/* NameException */ .chroma .ne { color: #fd7474; font-weight: bold }
+/* NameFunction */ .chroma .nf { color: #00b1f7 }
+/* NameFunctionMagic */ .chroma .fm { color: #c1abea }
+/* NameLabel */ .chroma .nl { color: #f5a40d }
+/* NameNamespace */ .chroma .nn { color: #76a9f9 }
+/* NameOther */ .chroma .nx { color: antiquewhite }
+/* NameProperty */ .chroma .py { color: #cebc3a }
+/* NameTag */ .chroma .nt { color: #e06c75 }
+/* NameVariable */ .chroma .nv { color: #dcaeea }
+/* NameVariableClass */ .chroma .vc { color: #c1abea }
+/* NameVariableGlobal */ .chroma .vg { color: #dcaeea; font-weight: bold }
+/* NameVariableInstance */ .chroma .vi { color: #e06c75 }
+/* NameVariableMagic */ .chroma .vm { color: #c1abea }
+/* Literal */ .chroma .l { color: #98c379 }
+/* LiteralDate */ .chroma .ld { color: #98c379 }
+/* LiteralString */ .chroma .s { color: #98c379 }
+/* LiteralStringAffix */ .chroma .sa { color: #98c379 }
+/* LiteralStringBacktick */ .chroma .sb { color: #98c379 }
+/* LiteralStringChar */ .chroma .sc { color: #98c379 }
+/* LiteralStringDelimiter */ .chroma .dl { color: #98c379 }
+/* LiteralStringDoc */ .chroma .sd { color: #7e97c3 }
+/* LiteralStringDouble */ .chroma .s2 { color: #63c381 }
+/* LiteralStringEscape */ .chroma .se { color: #d26464; font-weight: bold }
+/* LiteralStringHeredoc */ .chroma .sh { color: #98c379 }
+/* LiteralStringInterpol */ .chroma .si { color: #98c379 }
+/* LiteralStringOther */ .chroma .sx { color: #70b33f }
+/* LiteralStringRegex */ .chroma .sr { color: #56b6c2 }
+/* LiteralStringSingle */ .chroma .s1 { color: #98c379 }
+/* LiteralStringSymbol */ .chroma .ss { color: #56b6c2 }
+/* LiteralNumber */ .chroma .m { color: #d19a66 }
+/* LiteralNumberBin */ .chroma .mb { color: #d19a66 }
+/* LiteralNumberFloat */ .chroma .mf { color: #d19a66 }
+/* LiteralNumberHex */ .chroma .mh { color: #d19a66 }
+/* LiteralNumberInteger */ .chroma .mi { color: #d19a66 }
+/* LiteralNumberIntegerLong */ .chroma .il { color: #d19a66 }
+/* LiteralNumberOct */ .chroma .mo { color: #d19a66 }
+/* Operator */ .chroma .o { color: #c7bf54 }
+/* OperatorWord */ .chroma .ow { color: #b756ff; font-weight: bold }
+/* Comment */ .chroma .c { color: #8a93a5; font-style: italic }
+/* CommentHashbang */ .chroma .ch { color: #8a93a5; font-weight: bold; font-style: italic }
+/* CommentMultiline */ .chroma .cm { color: #8a93a5; font-style: italic }
+/* CommentSingle */ .chroma .c1 { color: #8a93a5; font-style: italic }
+/* CommentSpecial */ .chroma .cs { color: #8a93a5; font-style: italic }
+/* CommentPreproc */ .chroma .cp { color: #8a93a5; font-style: italic }
+/* CommentPreprocFile */ .chroma .cpf { color: #8a93a5; font-style: italic }
+/* GenericEmph */ .chroma .ge { font-style: italic }
+/* GenericHeading */ .chroma .gh { color: #a2cbff; font-weight: bold }
+/* GenericInserted */ .chroma .gi { color: #a6e22e }
+/* Generic X (used for diff file remove line) */ .chroma .gd { color: red }
+/* GenericOutput */ .chroma .go { color: #a6e22e }
+/* GenericPrompt */ .chroma .gp { color: #a6e22e }
+/* GenericStrong */ .chroma .gs { font-weight: bold }
+/* GenericSubheading */ .chroma .gu { color: #a2cbff }
+/* GenericTraceback */ .chroma .gt { color: #a2cbff }
+/* GenericUnderline */ .chroma .gl { text-decoration: underline }
+
+@media (max-width: 800px) {
+    .article_bottom_bar {
+        /* width: 45%; */
+        margin-top: 1em;
+    }
+    #article-title {
+        padding-top: .25em;
+        /* padding-bottom: .25em; */
+        font-size: 26px;
+
+    }
+    #article-title-with-icon {
+        padding-bottom: .75em;
+        padding-top: .75em;
+    }
+    #article-icon img {
+        max-width: 2.5em;
+    }
+
+    #article-icon {
+        padding-right: .5em
+    }
+
+    .side-by-side {
+        display: flex;
+        /* flex-direction: column; */
+        justify-content: center;
+        align-items: center;
+    }
+
+    .side-by-side img {
+        width: 100%;
+    }
+
+    img {
+        width: 100%;
+    }
+
+}
+
+@media (max-width: 400px) {
+    .article_bottom_bar {
+        margin-top: .5em;
+    }
+    #article-title {
+        padding-top: .25em;
+        /* padding-bottom: .5em; */
+        font-size: 26px;
+    }
+    #article-title-with-icon {
+        padding-bottom: .5em;
+        padding-top: .5em;
+    }
+
+    #article-icon img {
+        max-width: 2em;
+    }
+
+    #article-icon {
+        padding-right: .25em
+    }
+    h2 { padding-bottom: .5em; }
+}
diff --git a/css/colors.css b/css/colors_src.css
diff --git a/css/git.css b/css/git.css
@@ -1,1098 +0,0 @@
-/* default light */
-:root {
-    --fg-color: #000000;
-    --bg-color: white;
-    --hover-brightness: 0.95;
-    --hover-bg-color: #E9E9E9;
-    --link-color: #A04A00;
-    --title-color: #DAA520;
-
-    --accent-color: crimson;
-
-    --footer-color: grey;
-    --border-color: #505050;
-
-    --desc-color: #333;
-}
-
-@media (prefers-color-scheme: dark) {
-    :root {
-        --fg-color: antiquewhite;
-        --bg-color: #191919;
-        --hover-brightness: 1.25;
-        --hover-bg-color: #443A32;
-        --link-color: peru;
-    }
-}
-
-/*
-
-    #dir-size a,
-    #dir-size a:hover {
-        color: #141414;
-    }
-
-    #file-mode a,
-    #file-size a,
-    #description a,
-    #last-commit a,
-    #owner a,
-    #log-date a,
-    #log-author a,
-    #log-files a {
-        color: antiquewhite;
-    }
-
-    #file-mode a:hover,
-    #file-size a:hover,
-    #description a:hover,
-    #last-commit a:hover,
-    #owner a:hover,
-    #log-date a:hover,
-    #log-author a:hover,
-    #log-files a:hover {
-        text-decoration: none;
-    }
-    a:target {
-        background-color: #222;
-    }
-    .desc {
-        color: antiquewhite;
-    }
-    #blob a {
-        color: #555;
-    }
-    #blob a:target {
-        color: #eee;
-    }
-    #blob a:hover {
-        color: peru;
-    }
-    pre a.h {
-        color: #00cdcd;
-    }
-    .A,
-    span.i,
-    pre a.i {
-        color: #00cd00;
-    }
-    .D,
-    span.d,
-    pre a.d {
-        color: #cd0000;
-    }
-    #branches tr:hover td,
-    #tags tr:hover td,
-    #index tr:hover td,
-    #log tr:hover td,
-    #files tr:hover td,
-    #dir-files tr:hover td {
-        background-color: #000;
-    }
-
-    #legends tr:hover td {
-        background: #141414;
-    }
-
-    #name a,
-    #dir-name a,
-    #file-name a,
-    .dir, .dir:hover,
-    #log-summary a {
-        color: peru;
-    }
-}
-*/
-
-* {
-    overflow-y: unset;
-}
-
-/* Avoid showing the background of the scrollbar when the content is small enough */
-html {
-    margin-left: calc(100vw - 100%);
-    margin-right: 0;
-}
-
-body {
-    color: var(--fg-color);
-    background: var(--bg-color);
-    /* font-family: inconsolata, monospace; */
-    font-family: "Inter", "Helvetica", "DejaVu Sans", sans-serif, serif, inconsolata, monospace;
-    /* font-size: 14px; */
-    /* max-width: 120ch; */
-    font-size: 18px;
-    max-width: 800px;
-    margin-left: auto;
-    margin-right: auto;
-    margin-bottom: 10em;
-    margin-top: 1em;
-}
-
-footer {
-    color: var(--footer-color);
-    padding: 2em;
-    text-align: center;
-}
-
-h1, h2, h3, h4, h5, h6 {
-    font-size: 1em;
-    margin: 0;
-}
-
-table {
-    border-spacing: 0px;
-    width: 100%;
-}
-
-img, h1, h2 {
-    vertical-align: middle;
-}
-
-img {
-    border: 0;
-}
-
-ul {
-    padding-left: 1em;
-}
-
-/*
-a:target {
-    background-color: #ccc;
-}
-*/
-
-a.d, a.h, a.i, a.line {
-    text-decoration: none;
-}
-
-#entry {
-    cursor: pointer;
-}
-
-#last-commit {
-    white-space: nowrap;
-    text-align: right;
-}
-
-#index,
-#log {
-    tr {
-        display: block;
-        margin-bottom: .5em;
-    }
-}
-
-#index,
-#log,
-#refs,
-#commit-summary,
-#commit-diff {
-    width: 100%;
-    border: 1px solid var(--border-color);
-    padding: 22px;
-    border-radius: .5em;
-}
-
-/* #refs h2, */
-/* #refs td { */
-/*     padding: 0; */
-/* } */
-
-#files {
-    min-width: 100%;
-    border: 1px solid var(--border-color);
-    padding: 1em 1.4em 1em 1.4em;
-    border-radius: .5em;
-}
-
-#dir-files {
-    min-width: 100%;
-    border: 1px solid var(--border-color);
-    padding: 1em;
-    margin-top: 0em;
-    border-radius: .5em;
-    border-top-left-radius: 0;
-    border-top-right-radius: 0;
-    border-top: none;
-}
-
-#file-mode {
-    width: 120px;
-}
-
-#readme {
-    border: 1px solid var(--border-color);
-    padding: 2em;
-    margin-top: 1em;
-    border-radius: .5em;
-}
-
-#readme p {
-    line-height: 1.25;
-}
-
-#readme-hr, #owner {
-    display: none;
-}
-
-#name {
-    font-weight: bold;
-}
-
-#repo-name {
-    font-size: 1.75em;
-}
-
-#repo-header-table {
-    /* padding: 1.25em 1.25em 1em 1.25em; */
-    /* margin: -1px; */
-    padding: 20px;
-
-    tr {
-        filter: brightness(1.0);
-    }
-}
-
-#main-name {
-    font-size: 1.75em;
-    color: crimson;
-    padding-bottom: .25em;
-}
-
-#dir-name {
-    font-weight: bolder;
-}
-
-#dir-title {
-    border: 1px solid var(--border-color);
-    padding: 22px;
-    margin-bottom: 0;
-    border-top-left-radius: .5em;
-    border-top-right-radius: .5em;
-}
-
-#binary-file {
-    border: 1px solid var(--border-color);
-    padding: 1.25em;
-    margin-top: 0;
-    border-radius: .5em;
-    border-top-left-radius: 0;
-    border-top-right-radius: 0;
-}
-
-#repo-top-buttons {
-    /* padding: 0 1.25em 1em 1.25em; */
-    /* margin: -1px; */
-    padding: 0 22px 20px 22px;
-    font-weight: bold;
-    font-size: 20px;
-}
-
-#log-date,
-#log-author {
-    white-space: nowrap;
-}
-
-#legends td {
-    padding: 0 0.4em;
-}
-
-#main-header-table {
-    display: flex;
-    justify-content: center;
-    padding-bottom: 20px;
-    td {
-        text-align: center;
-    }
-    tr {
-        filter: brightness(1.0);
-    }
-}
-
-#main-header-logo, #repo-logo {
-    display: none;
-}
-
-#main-header-table tbody {
-    display: flex;
-    justify-content: center;
-}
-
-#blob {
-    border: 1px solid var(--border-color);
-    padding: 1.25em 0.9em;
-    margin-top: 0;
-    border-radius: .5em;
-    border-top-left-radius: 0;
-    border-top-right-radius: 0;
-}
-
-#blob a {
-    color: #555;
-}
-
-#blob a:hover {
-    color: var(--link-color);
-    filter: brightness(var(--hover-brightness));
-    text-decoration: none;
-}
-
-a {
-    color: var(--link-color);
-    text-decoration: none;
-}
-
-a:hover:not(tr a) {
-    background: var(--hover-bg-color);
-    filter: brightness(var(--hover-brightness));
-    text-decoration: none;
-}
-
-#dir-size a {
-    color: var(--bg-color);
-}
-
-#dir-size a:hover {
-    color: var(--hover-bg-color);
-}
-
-#name a,
-#dir-name a,
-#file-name a,
-.dir, .dir:hover,
-#log-summary a {
-    display: block;
-    text-decoration: none;
-    padding: 2em 2.4em;
-    margin: -2em;
-    word-wrap: anywhere;
-}
-
-#file-size a,
-#file-mode a,
-#description a,
-#last-commit a,
-#owner a,
-#log-date a,
-#log-author a,
-#log-files a {
-    display: block;
-    text-decoration: none;
-    padding: 2em 2.4em;
-    margin: -2em;
-}
-
-#file-size a {
-    color: var(--fg-color);
-}
-
-/*
-#file-mode a:hover ,
-#description a:hover,
-#last-commit a:hover,
-#owner a:hover,
-#log-date a,
-#log-author a,
-#log-files a {
-    text-decoration: none;
-}
-*/
-
-table thead td {
-    font-weight: bold;
-}
-
-#content table td {
-    vertical-align: top;
-    /* white-space: nowrap; */
-}
-
-td {
-    overflow: hidden;
-}
-
-/*
-#branches tr:hover td,
-#tags tr:hover td,
-#index tr:hover td,
-#log tr:hover td,
-#files tr:hover td,
-#dir-files tr:hover td {
-    background-color: #eee;
-}
-
-#legends tr:hover td {
-    background-color: #fff;
-}
-*/
-
-#index tr td:nth-child(2),
-#tags tr td:nth-child(3),
-#branches tr td:nth-child(3),
-#log tr td:nth-child(2) {
-    white-space: normal;
-}
-
-td.num {
-    text-align: right;
-}
-
-/*
-.desc {
-    color var(--desc-color);
-}
-
-.main-desc {
-    color var(--desc-color);
-    font-size: 1.25em;
-}
-*/
-
-hr {
-    border: 0;
-    border-top: 1px dashed #505050;
-    height: 1px;
-    margin: 1em 0;
-}
-
-pre {
-    font-family: monospace;
-    overflow-x: auto;
-    padding-bottom: 2em;
-}
-
-pre a.h {
-    color: #00a;
-}
-
-.A, span.i, pre a.i {
-    color: #070;
-}
-
-.D, span.d, pre a.d {
-    color: #e00;
-}
-
-pre a.h:hover, pre a.i:hover, pre a.d:hover {
-    text-decoration: none;
-}
-
-#open-file-header {
-    /* padding: 0 0.4em; */
-    border: 1px solid #505050;
-    /* padding: 1.00em; */
-    padding: 20px 22px 20px 22px;
-    border-top-left-radius: .5em;
-    border-top-right-radius: .5em;
-    border-bottom: none;
-    margin-bottom: 0;
-
-    display: flex;
-    flex-wrap: wrap;
-    justify-content: space-between;
-    align-items: center;
-    white-space: initial;
-
-    row-gap: .25em;
-}
-
-#open-file-name {
-    font-weight: bold;
-}
-
-.line {
-    display: inline;
-    margin-left: -.5em;
-}
-
-#line-checkbox {
-    /* margin-right: .5em; */
-}
-
-#file-parent-path {
-    font-weight: bold;
-    display: inline;
-    padding: 0;
-    margin: 0;
-}
-
-#file-raw {
-    padding: .5em;
-    /* margin: 1.25em 1.25em 1.25em 0; */
-    border: 1px solid var(--border-color);
-    border-radius: .5em;
-}
-
-#file-raw:hover {
-    background: var(--hover-bg-color);
-    filter: brightness(var(--hover-brightness));
-    text-decoration: none;
-    cursor: pointer;
-}
-
-#file-raw a:hover {
-    text-decoration: none;
-    background: none;
-    color: var(fg-color);
-}
-
-#readme h1 {
-    font-size: 1.75em;
-}
-
-#readme    h2 {
-    font-size: 1.5em;
-    padding: .5em 0em;
-}
-
-#readme h3 {
-    font-size: 1.25em;
-    text-align: left;
-
-    padding-top: .5em;
-    padding-bottom: .5em;
-}
-
-#readme h4 {
-    padding-top: .5em;
-    text-align: left;
-}
-
-#readme h5 {
-    padding-bottom: .25em;
-    font-size: 1em;
-}
-
-#readme code {
-    font-family: "Ubuntu Mono", monospace;
-    background-color: rgba(110,118,129,0.2);
-    padding: .1em .4em;
-    margin: 0;
-    border-radius: 6px;
-    white-space: nowrap;
-}
-
-#readme pre {
-    text-align: left;
-
-    padding-top: .5em;
-    padding-bottom: .5em;
-    padding-left: .75em;
-    padding-right: .75em;
-    border-radius: .2em;
-    background-color: rgba(110,118,129,0.2);
-    width: auto;
-    display: block;
-    margin-left: auto;
-    margin-right: auto;
-    margin-top: .25em;
-    margin-bottom: 1.25em;
-    overflow: auto;
-}
-
-#readme pre code {
-    background: rgba(0,0,0,0);
-    padding: 0;
-    margin: 0;
-    border-radius: 0;
-    white-space: inherit;
-}
-
-#readme img {
-    max-width: 100%;
-    display: block;
-    margin-left: auto;
-    margin-right: auto;
-    border-radius: .25em;
-    padding: 1em 0em;
-}
-
-#owner {
-    display: none;
-}
-#content table td {
-    padding-left: 0;
-    white-space: break-spaces;
-    vertical-align: bottom;
-}
-#name {
-    display: block;
-    font-size: 1.25em;
-    font-weight: bold;
-}
-
-#description {
-    display: block;
-    width: 100%;
-    padding: 0;
-
-    a {
-        color: var(--fg-color);
-    }
-}
-
-#last-commit {
-    display: block;
-    padding: 0em;
-    margin: 0em;
-    padding-left: 0px;
-    font-size: .85em;
-    color: gray;
-    text-align: left;
-    /* margin-bottom: .5em; */
-}
-
-#last-commit a {
-    color: gray;
-}
-
-#index #legends {
-    display: none;
-}
-
-a {
-    text-decoration: none;
-    overflow-wrap: break-word;
-}
-
-#name a {
-    display: block;
-    font-weight: bold;
-    text-decoration: none;
-}
-
-#name a,
-#dir-name a,
-#file-name a,
-#log-summary a {
-    padding: 0;
-    margin: 0;
-}
-
-#log-summary a {
-    color: var(--fg-color);
-}
-
-#log tr:hover {
-    filter: brightness(var(--hover-brightness));
-}
-
-#file-mode a,
-#file-size a,
-#description a,
-#last-commit a,
-#owner a,
-#log-date a,
-#log-author a,
-#log-files a {
-    padding: 0;
-    margin: 0;
-}
-
-#index,
-#refs,
-#files,
-#dir-files,
-#log,
-#commit-summary,
-#commit-diff {
-    /* padding: 1.25em; */
-    padding: 22px;
-    margin-top: 0;
-}
-
-#files #file-mode, #dir-files #file-mode {
-    display: none;
-}
-#files td, #dir-files td {
-    padding: 0;
-}
-
-#repo-name {
-    font-size: 1.5em;
-}
-#dir-name {
-    padding-left: 0;
-    padding-right: 0;
-}
-.desc {
-    font-size: 16px;
-}
-
-.main-desc {
-    font-size: 1.25em;
-
-    a:hover {
-        background: var(--hover-bg-color);
-        filter: brightness(var(--hover-brightness));
-    }
-}
-
-#log-author a {
-    color: gray;
-}
-#last-commit a::before {
-    content: "last commit ";
-}
-#log-author a::before {
-    content: "author ";
-}
-#blob {
-    font-size: 16px;
-    overflow: scroll;
-}
-
-#open-file-name, #dir-title {
-    /* padding: 1.25em; */
-    margin-right: auto;
-    word-wrap: anywhere;
-}
-
-#log thead,
-#log-files {
-    display: none;
-}
-#log-summary,
-#log-date,
-#readme-hr {
-    display: block;
-}
-#log-author {
-    display: block;
-    margin-bottom: 1em;
-}
-#commit-summary {
-    white-space: break-spaces;
-}
-#commit-diff {
-    overflow-x: scroll;
-}
-#readme {
-    padding: 1.50em;
-}
-#readme img {
-    max-width: 100%;
-    padding: 0;
-}
-#readme ul {
-    padding-left: 1em;
-}
-#readme h1 {
-    padding-top: .25em;
-}
-
-#branches tr:hover,
-#tags tr:hover,
-#index tr:hover,
-#log tr:hover,
-#dir-files tr:hover,
-#files tr:hover {
-    background: var(--hover-bg-color);
-}
-
-/*
-a:hover {
-    color: #a04a00;
-}
-*/
-
-#line-checkbox-div {
-    text-align: center;
-    width: min-content;
-    white-space: nowrap;
-    /* padding: 0 1em 1.25em 0; */
-    /* margin-top: 1.25em; */
-    /* margin-bottom: 1.25em; */
-    margin-right: 1em;
-    margin-left: auto;
-}
-
-@media (hover: hover) and (pointer: fine) {
-
-    a:hover:not(tr a) {
-        filter: brightness(var(--hover-brightness));
-    }
-
-
-    tr:hover {
-        filter: brightness(var(--hover-brightness));
-    }
-
-    #branches,
-    #tags,
-    #index,
-    #log,
-    #files {
-        a:hover {
-            filter: brightness(1.0);
-            /* background: var(--bg-color); */
-        }
-    }
-}
-
-#legends {
-    a:hover {
-        filter: brightness(1.0);
-        background: var(--bg-color);
-    }
-
-    tr:hover {
-        filter: brightness(1.0);
-        background: var(--bg-color);
-    }
-}
-
-@media (prefers-color-scheme: dark) {
-    /*
-    #branches tr:hover,
-    #tags tr:hover,
-    #index tr:hover,
-    #log tr:hover,
-    #files tr:hover {
-        background: var(--hover-bg-color);
-    }
-
-    a:hover {
-        color: peru;
-        background: var(--hover-bg-color);
-        text-decoration: none;
-    }
-    */
-
-    #readme blockquote p {
-        margin: 0;
-        padding: 0;
-    }
-
-    #readme blockquote {
-        margin: 1em 0;
-        padding: 0.5em 1em;
-        border-left: 4px solid antiquewhite;
-        /* color: #57606a; */
-        background-color: rgba(110,118,129,0.2);
-    }
-
-}
-
-@media (max-width: 800px) {
-    body {
-        font-size: 18px;
-        max-width: 98%;
-    }
-    #owner {
-        display: none;
-    }
-    #content table td {
-        padding-left: 0;
-        white-space: break-spaces;
-        vertical-align: bottom;
-    }
-    #name {
-        display: block;
-        font-size: 1.25em;
-        font-weight: bold;
-    }
-    #description {
-        display: block;
-        width: 100%;
-        padding: 0;
-    }
-    #last-commit {
-        display: block;
-        /* padding: .25em 0 1em 0; */
-        padding: 0em;
-        margin: 0em;
-        font-size: .85em;
-        color: gray;
-        text-align: left;
-        /* margin-bottom: 1em; */
-    }
-    #last-commit a {
-        color: gray;
-    }
-    #index #legends {
-        display: none;
-    }
-    a {
-        text-decoration: none;
-        overflow-wrap: break-word;
-        -webkit-tap-highlight-color: transparent;
-        user-select: none;
-    }
-
-    #name a {
-        display: block;
-        font-weight: bold;
-        text-decoration: none;
-    }
-
-    #name a,
-    #dir-name a,
-    #file-name a,
-    #log-summary a {
-        padding: 0;
-        margin: 0;
-    }
-
-    #file-mode a,
-    #file-size a,
-    #description a,
-    #last-commit a,
-    #owner a,
-    #log-date a,
-    #log-author a,
-    #log-files a {
-        padding: 0;
-        margin: 0;
-    }
-
-    #index,
-    #refs,
-    #files,
-    #dir-files,
-    #log,
-    #commit-summary,
-    #commit-diff {
-        padding: 10px;
-    }
-
-    #files #file-mode, #dir-files #file-mode {
-        display: none;
-    }
-    #files td, #dir-files td {
-        padding: 0;
-    }
-
-    #repo-name {
-        font-size: 1.5em;
-    }
-
-    #dir-name {
-        padding-left: 0;
-        padding-right: 0;
-    }
-    .desc {
-        font-size: 16px;
-    }
-    .main-desc {
-        font-size: 1.25em;
-    }
-    #log-author a {
-        color: gray;
-    }
-    #last-commit a::before {
-        content: "last commit ";
-    }
-    #log-author a::before {
-        content: "author ";
-    }
-    #blob {
-        font-size: 16px;
-        overflow: scroll;
-    }
-
-    #open-file-name, #dir-title {
-        padding: 10px;
-    }
-
-    #main-header-table {
-        padding-bottom: 14px;
-    }
-
-    #repo-top-buttons {
-        /* padding: 0 .75em .75em .75em; */
-        padding: 0 10px 10px 10px;
-    }
-
-
-    #log thead,
-    #log-files {
-        display: none;
-    }
-    #log-summary,
-    #log-date,
-    #readme-hr {
-        display: block;
-    }
-    #log-author {
-        display: block;
-    }
-    #commit-summary {
-        white-space: break-spaces;
-    }
-    #commit-diff {
-        overflow-x: scroll;
-    }
-    #readme {
-        padding: 1em;
-    }
-    #readme img {
-        max-width: 100%;
-        padding: 0;
-    }
-    #readme ul {
-        padding-left: 1em;
-    }
-    #readme h1 {
-        padding-top: .25em;
-    }
-
-    /*
-    #branches tr:hover td,
-    #tags tr:hover td,
-    #index tr:hover td,
-    #log tr:hover td,
-    #files tr:hover td {
-        background-color: #fff;
-    }
-    */
-
-    #repo-header-table {
-        /* padding: .25em .50em .75em .50em; */
-        padding: 10px;
-    }
-
-    #open-file-header {
-        /* padding: .75em; */
-        padding: 10px;
-    }
-
-    /*
-    a:hover {
-        color: #a04a00;
-    }
-    */
-
-    #line-checkbox-div {
-        text-align: center;
-        width: min-content;
-        white-space: nowrap;
-
-        /* margin-top: .75em; */
-        /* margin-bottom: .75em; */
-    }
-
-    #file-raw {
-        /* margin-top: .75em; */
-        /* margin-bottom: .75em; */
-        /* margin-right: .75em; */
-    }
-
-    /*
-    @media (prefers-color-scheme: dark) {
-        #branches tr:hover td,
-        #tags tr:hover td,
-        #index tr:hover td,
-        #log tr:hover td,
-        #files tr:hover td {
-            background: var(--hover-bg-color);
-        }
-
-        a:hover {
-            color: peru;
-        }
-    }
-    */
-}
diff --git a/css/git_src.css b/css/git_src.css
@@ -0,0 +1,1016 @@
+/* default light */
+:root {
+    --fg-color: #000000;
+    --bg-color: white;
+    --hover-brightness: 0.95;
+    --hover-bg-color: #E9E9E9;
+    --link-color: #A04A00;
+    --title-color: #DAA520;
+
+    --accent-color: crimson;
+
+    --footer-color: grey;
+    --border-color: #505050;
+    /* --border-color: #d0d0d0; */
+
+    --desc-color: #333;
+
+    --git-add-color: #070;
+    --git-del-color: crimson;
+    --git-dif-color: #00F;
+}
+
+@media (prefers-color-scheme: dark) {
+    :root {
+        --fg-color: antiquewhite;
+        --bg-color: #191919;
+        --hover-brightness: 1.25;
+        --hover-bg-color: #443A32;
+        --link-color: peru;
+
+        --border-color: #444;
+
+        --git-add-color: #00FC00;
+        --git-del-color: #F81C00;
+        --git-dif-color: #005FFF;
+    }
+}
+
+* {
+    overflow-y: unset;
+}
+
+/* Avoid showing the background of the scrollbar when the content is small enough */
+html {
+    margin-left: calc(100vw - 100%);
+    margin-right: 0;
+}
+
+body {
+    color: var(--fg-color);
+    background: var(--bg-color);
+    /* font-family: inconsolata, monospace; */
+    font-family: "Inter", "Helvetica", "DejaVu Sans", sans-serif, serif, inconsolata, monospace;
+    /* font-size: 14px; */
+    /* max-width: 120ch; */
+    font-size: 18px;
+    max-width: 800px;
+    margin-left: auto;
+    margin-right: auto;
+    margin-bottom: 10em;
+    margin-top: 1em;
+}
+
+footer {
+    color: var(--footer-color);
+    padding: 2em;
+    text-align: center;
+}
+
+h1, h2, h3, h4, h5, h6 {
+    font-size: 1em;
+    margin: 0;
+}
+
+table {
+    border-spacing: 0px;
+    width: 100%;
+}
+
+img, h1, h2 {
+    vertical-align: middle;
+}
+
+img {
+    border: 0;
+}
+
+ul {
+    padding-left: 1em;
+}
+
+a.d, a.h, a.i, a.line {
+    text-decoration: none;
+}
+
+#entry {
+    cursor: pointer;
+}
+
+#last-commit {
+    white-space: nowrap;
+    text-align: right;
+}
+
+#index,
+#log {
+    tr {
+        display: block;
+        margin-bottom: .5em;
+    }
+
+    tr:last-child {
+        margin-bottom: 0;
+    }
+}
+
+#index,
+#log,
+#refs,
+#commit-summary,
+#commit-diff {
+    width: 100%;
+    border: 1px solid var(--border-color);
+    padding: 22px;
+    border-radius: .5em;
+}
+
+#branches {
+    margin-top: 10px;
+}
+
+#files {
+    min-width: 100%;
+    border: 1px solid var(--border-color);
+    padding: 1em 1.4em 1em 1.4em;
+    border-radius: .5em;
+}
+
+#dir-files {
+    min-width: 100%;
+    border: 1px solid var(--border-color);
+    padding: 1em;
+    margin-top: 0em;
+    border-radius: .5em;
+    border-top-left-radius: 0;
+    border-top-right-radius: 0;
+    border-top: none;
+}
+
+#file-mode {
+    width: 120px;
+}
+
+#md-content, #readme {
+    border: 1px solid var(--border-color);
+    padding: 20px;
+    margin-top: 1em;
+    border-radius: .5em;
+}
+
+#md-content p {
+    line-height: 1.25;
+}
+
+#md-content-hr, #owner {
+    display: none;
+}
+
+#md-view #md-content {
+    margin-top: 0;
+    border-top-right-radius: 0;
+    border-top-left-radius: 0;
+    border-bottom-right-radius: .5em;
+    border-bottom-left-radius: .5em;
+}
+
+#name {
+    font-weight: bold;
+}
+
+#repo-name {
+    font-size: 1.5em;
+}
+
+#repo-name a:hover {
+    background: var(--hover-bg-color);
+    filter: brightness(var(--hover-brightness));
+}
+
+#repo-header-table {
+    padding: 12px 20px 20px 20px;
+
+    tr {
+        filter: brightness(1.0);
+    }
+}
+
+#main-name {
+    font-size: 1.75em;
+    color: crimson;
+    padding-bottom: 8px;
+}
+
+#webpage-header-link {
+    padding: 0 20px;
+}
+
+#webpage-header-link a {
+    opacity: 0.7;
+}
+
+#webpage-header-link a:hover {
+    opacity: 1.0;
+}
+
+#dir-name {
+    font-weight: bolder;
+}
+
+#dir-title {
+    border: 1px solid var(--border-color);
+    padding: 22px;
+    margin-bottom: 0;
+    border-top-left-radius: .5em;
+    border-top-right-radius: .5em;
+}
+
+#binary-file {
+    border: 1px solid var(--border-color);
+    padding: 20px;
+    margin-top: 0;
+    border-radius: .5em;
+    border-top-left-radius: 0;
+    border-top-right-radius: 0;
+
+    img {
+        width: 100%;
+    }
+}
+
+#repo-top-buttons {
+    /* padding: 0 1.25em 1em 1.25em; */
+    /* margin: -1px; */
+    padding: 0 22px 20px 22px;
+    font-weight: bold;
+    font-size: 20px;
+}
+
+#log-date,
+#log-author {
+    white-space: nowrap;
+}
+
+#legends td {
+    padding: 0 0.4em;
+}
+
+#main-header-table {
+    display: flex;
+    justify-content: center;
+    padding-bottom: 20px;
+    td {
+        text-align: center;
+    }
+    tr {
+        filter: brightness(1.0);
+    }
+}
+
+#main-header-logo, #repo-logo {
+    display: none;
+}
+
+#main-header-table tbody {
+    display: flex;
+    justify-content: center;
+}
+
+#blob {
+    border: 1px solid var(--border-color);
+    padding: 1.25em 0.9em;
+    margin-top: 0;
+    border-radius: .5em;
+    border-top-left-radius: 0;
+    border-top-right-radius: 0;
+}
+
+#blob a {
+    color: #555;
+}
+
+#blob a:hover {
+    color: var(--link-color);
+    filter: brightness(var(--hover-brightness));
+    text-decoration: none;
+}
+
+a {
+    color: var(--link-color);
+    text-decoration: none;
+}
+
+a:hover:not(tr a) {
+    background: var(--hover-bg-color);
+    filter: brightness(var(--hover-brightness));
+    text-decoration: none;
+}
+
+#dir-size a {
+    color: var(--bg-color);
+}
+
+#dir-size a:hover {
+    color: var(--hover-bg-color);
+}
+
+#name a,
+#dir-name a,
+#file-name a,
+.dir, .dir:hover,
+#log-summary a {
+    display: block;
+    text-decoration: none;
+    padding: 2em 2.4em;
+    margin: -2em;
+    word-wrap: anywhere;
+}
+
+#file-size a,
+#file-mode a,
+#description a,
+#last-commit a,
+#owner a,
+#log-date a,
+#log-author a,
+#log-files a {
+    display: block;
+    text-decoration: none;
+    padding: 2em 2.4em;
+    margin: -2em;
+}
+
+#file-size a {
+    color: var(--fg-color);
+    white-space: nowrap;
+}
+
+#content table td {
+    vertical-align: top;
+    /* white-space: nowrap; */
+    padding-left: 0;
+    white-space: break-spaces;
+}
+
+td {
+    overflow: hidden;
+}
+
+#md-content td:not(:last-child),
+#md-content th:not(:last-child) {
+    padding-right: 10px;
+}
+
+#index tr td:nth-child(2),
+#tags tr td:nth-child(3),
+#branches tr td:nth-child(3),
+#log tr td:nth-child(2) {
+    white-space: normal;
+}
+
+#branches td:nth-child(1) {
+    text-align: left;
+}
+
+#branches td:nth-child(n+2) {
+    text-align: right;
+}
+
+td.num {
+    text-align: right;
+}
+
+hr {
+    border: 0;
+    border-top: 1px dashed #505050;
+    height: 1px;
+    margin: 1em 0;
+}
+
+pre {
+    font-family: monospace;
+    overflow-x: auto;
+    padding-bottom: 2em;
+}
+
+pre a.h {
+    color: var(--git-dif-color);
+}
+
+.A, span.i, pre a.i {
+    color: var(--git-add-color);
+}
+
+.D, span.d, pre a.d {
+    color: var(--git-del-color);
+}
+
+pre a.h:hover, pre a.i:hover, pre a.d:hover {
+    text-decoration: none;
+}
+
+#open-file-header {
+    border: 1px solid #505050;
+    padding: 20px 22px 20px 22px;
+    border-top-left-radius: .5em;
+    border-top-right-radius: .5em;
+    border-bottom: none;
+    margin-bottom: 0;
+
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: space-between;
+    align-items: center;
+    white-space: initial;
+
+    row-gap: .25em;
+}
+
+#open-file-name {
+    font-weight: bold;
+}
+
+.line {
+    display: inline;
+    margin-left: -.5em;
+}
+
+#line-checkbox {
+    /* margin-right: .5em; */
+}
+
+#file-parent-path {
+    font-weight: bold;
+    display: inline;
+    padding: 0;
+    margin: 0;
+}
+
+#file-raw {
+    border: 1px solid var(--border-color);
+    border-radius: 6px;
+}
+
+#file-raw:hover {
+    background: var(--hover-bg-color);
+    filter: brightness(var(--hover-brightness));
+    text-decoration: none;
+    cursor: pointer;
+}
+
+#file-raw a {
+    display: block;
+    width: 100%;
+    height: 100%;
+    padding: 4px 4px 5px 5px;
+}
+
+#file-raw a:hover {
+    text-decoration: none;
+    background: none;
+}
+
+#md-content h1 {
+    font-size: 1.75em;
+}
+
+#md-content    h2 {
+    font-size: 1.5em;
+    padding: .5em 0em;
+}
+
+#md-content h3 {
+    font-size: 1.25em;
+    text-align: left;
+
+    padding-top: .5em;
+    padding-bottom: .5em;
+}
+
+#md-content h4 {
+    padding-top: .5em;
+    text-align: left;
+}
+
+#md-content h5 {
+    padding-bottom: .25em;
+    font-size: 1em;
+}
+
+#md-content code {
+    font-family: "Ubuntu Mono", monospace;
+    background-color: rgba(110,118,129,0.2);
+    padding: 0px 2px;
+    border-radius: 4px;
+    margin: 0;
+    white-space: nowrap;
+}
+
+#md-content pre {
+    text-align: left;
+
+    padding-top: .5em;
+    padding-bottom: .5em;
+    padding-left: .75em;
+    padding-right: .75em;
+    border-radius: .2em;
+    background-color: rgba(110,118,129,0.2);
+    width: auto;
+    display: block;
+    margin-left: auto;
+    margin-right: auto;
+    margin-top: .25em;
+    margin-bottom: 1.25em;
+    overflow: auto;
+}
+
+#md-content pre code {
+    background: rgba(0,0,0,0);
+    padding: 0;
+    margin: 0;
+    border-radius: 0;
+    white-space: inherit;
+}
+
+#md-content img {
+    max-width: 100%;
+    display: block;
+    margin-left: auto;
+    margin-right: auto;
+    border-radius: .25em;
+    padding: 1em 0em;
+}
+
+#owner {
+    display: none;
+}
+#name {
+    display: block;
+    font-size: 1.25em;
+    font-weight: bold;
+}
+
+#description {
+    display: block;
+    width: 100%;
+    padding: 0;
+
+    a {
+        color: var(--fg-color);
+    }
+}
+
+#last-commit {
+    display: block;
+    padding: 0em;
+    margin: 0em;
+    padding-left: 0px;
+    font-size: .85em;
+    color: gray;
+    text-align: left;
+    /* margin-bottom: .5em; */
+}
+
+#last-commit a {
+    color: gray;
+}
+
+#index #legends {
+    display: none;
+}
+
+a {
+    text-decoration: none;
+    overflow-wrap: break-word;
+}
+
+#name a {
+    display: block;
+    font-weight: bold;
+    text-decoration: none;
+}
+
+#name a,
+#dir-name a,
+#file-name a,
+#log-summary a {
+    padding: 0;
+    margin: 0;
+}
+
+#log-summary a {
+    color: var(--fg-color);
+}
+
+#log tr:hover {
+    filter: brightness(var(--hover-brightness));
+}
+
+#file-mode a,
+#file-size a,
+#description a,
+#last-commit a,
+#owner a,
+#log-date a,
+#log-author a,
+#log-files a {
+    padding: 0;
+    margin: 0;
+}
+
+#index,
+#refs,
+#files,
+#dir-files,
+#log,
+#commit-summary,
+#commit-diff {
+    /* padding: 1.25em; */
+    padding: 22px;
+    margin-top: 0;
+}
+
+#files #file-mode, #dir-files #file-mode {
+    display: none;
+}
+
+#files td, #dir-files td {
+    padding: 0;
+}
+
+#dir-files #file-size {
+    vertical-align: bottom;
+}
+
+#dir-name {
+    padding-left: 0;
+    padding-right: 0;
+}
+.desc {
+    font-size: 16px;
+}
+
+.main-desc {
+    font-size: 1.25em;
+
+    a:hover {
+        background: var(--hover-bg-color);
+        filter: brightness(var(--hover-brightness));
+    }
+}
+
+#log-author a {
+    color: gray;
+}
+#last-commit a::before {
+    content: "last commit ";
+}
+#log-author a::before {
+    content: "author ";
+}
+#blob {
+    font-size: 16px;
+    overflow: scroll;
+}
+
+#open-file-name, #dir-title {
+    /* padding: 1.25em; */
+    margin-right: auto;
+    word-wrap: anywhere;
+    /* padding: 10px; */
+}
+
+#log thead,
+#log-files {
+    display: none;
+}
+#log-summary,
+#log-date,
+#md-content-hr {
+    display: block;
+}
+
+#log-author {
+    display: block;
+    margin-bottom: 1em;
+}
+
+#log tr:last-child #log-author {
+    margin-bottom: 0;
+}
+
+#commit-summary {
+    white-space: break-spaces;
+}
+#commit-diff {
+    overflow-x: scroll;
+}
+
+#md-content {
+    table {
+        width: 100%;
+        border-collapse: collapse;
+        margin: 1.5rem 0;
+    }
+
+    th,
+    td {
+        padding: 0.8rem 1rem;
+        text-align: left;
+        vertical-align: top;
+        border: 1px solid var(--border-color);
+    }
+
+    th {
+        font-weight: 600;
+    }
+
+    tbody td:first-child {
+        width: 10rem;
+        font-weight: 600;
+        white-space: nowrap;
+    }
+}
+
+#md-content img {
+    max-width: 100%;
+    padding: 0;
+}
+#md-content ul {
+    padding-left: 1em;
+}
+#md-content h1 {
+    padding-top: .25em;
+}
+
+#branches tr:hover,
+#tags tr:hover,
+#index tr:hover,
+#log tr:hover,
+#dir-files tr:hover,
+#files tr:hover {
+    background: var(--hover-bg-color);
+}
+
+#md-checkbox-div {
+    margin-right: 10px;
+}
+
+#line-checkbox-div {
+    text-align: center;
+    width: min-content;
+    white-space: nowrap;
+    margin-right: 10px;
+    margin-left: auto;
+}
+
+@media (hover: hover) and (pointer: fine) {
+
+    a:hover:not(tr a) {
+        filter: brightness(var(--hover-brightness));
+    }
+
+
+    tr:hover {
+        filter: brightness(var(--hover-brightness));
+    }
+
+    #commit-summary,
+    #md-content {
+        tr:hover {
+            filter: brightness(1.0);
+        }
+    }
+
+    #commit-summary a:hover {
+        filter: brightness(var(--hover-brightness));
+        background: var(--hover-bg-color);
+    }
+
+
+    #branches,
+    #tags,
+    #index,
+    #log,
+    #files {
+        a:hover {
+            filter: brightness(1.0);
+            /* background: var(--bg-color); */
+        }
+    }
+}
+
+#legends {
+    a:hover {
+        filter: brightness(1.0);
+        background: var(--bg-color);
+    }
+
+    tr:hover {
+        filter: brightness(1.0);
+        background: var(--bg-color);
+    }
+}
+
+@media (prefers-color-scheme: dark) {
+    #md-content blockquote p {
+        margin: 0;
+        padding: 0;
+    }
+
+    #md-content blockquote {
+        margin: 1em 0;
+        padding: 0.5em 1em;
+        border-left: 4px solid antiquewhite;
+        background-color: rgba(110,118,129,0.2);
+    }
+
+}
+
+@media (max-width: 800px) {
+    body {
+        font-size: 18px;
+        max-width: 98%;
+    }
+    #owner {
+        display: none;
+    }
+    #content table td {
+        padding-left: 0;
+        white-space: break-spaces;
+        vertical-align: top;
+    }
+    #name {
+        display: block;
+        font-size: 1.25em;
+        font-weight: bold;
+    }
+    #description {
+        display: block;
+        width: 100%;
+        padding: 0;
+    }
+    #last-commit {
+        display: block;
+        /* padding: .25em 0 1em 0; */
+        padding: 0em;
+        margin: 0em;
+        font-size: .85em;
+        color: gray;
+        text-align: left;
+        /* margin-bottom: 1em; */
+    }
+    #last-commit a {
+        color: gray;
+    }
+    #index #legends {
+        display: none;
+    }
+    a {
+        text-decoration: none;
+        overflow-wrap: break-word;
+        -webkit-tap-highlight-color: transparent;
+        user-select: none;
+    }
+
+    #name a {
+        display: block;
+        font-weight: bold;
+        text-decoration: none;
+    }
+
+    #name a,
+    #dir-name a,
+    #file-name a,
+    #log-summary a {
+        padding: 0;
+        margin: 0;
+    }
+
+    #file-mode a,
+    #file-size a,
+    #description a,
+    #last-commit a,
+    #owner a,
+    #log-date a,
+    #log-author a,
+    #log-files a {
+        padding: 0;
+        margin: 0;
+    }
+
+    #index,
+    #refs,
+    #files,
+    #dir-files,
+    #log,
+    #commit-summary,
+    #commit-diff {
+        /* padding: .75em; */
+        padding: 10px;
+    }
+
+    #files #file-mode, #dir-files #file-mode {
+        display: none;
+    }
+    #files td, #dir-files td {
+        padding: 0;
+    }
+
+    #repo-name {
+        font-size: 1.5em;
+    }
+
+    #dir-name {
+        padding-left: 0;
+        padding-right: 0;
+    }
+    .desc {
+        font-size: 16px;
+    }
+    .main-desc {
+        font-size: 1.25em;
+    }
+    #log-author a {
+        color: gray;
+    }
+    #last-commit a::before {
+        content: "last commit ";
+    }
+    #log-author a::before {
+        content: "author ";
+    }
+    #blob {
+        font-size: 16px;
+        overflow: scroll;
+    }
+
+    #open-file-name,
+    #dir-title,
+    #binary-file {
+        padding: 10px;
+    }
+
+    #webpage-header-link {
+        padding: 0 10px;
+    }
+
+    #main-header-table {
+        padding-bottom: 14px;
+    }
+
+    #repo-top-buttons {
+        /* padding: 0 .75em .75em .75em; */
+        padding: 0 10px 10px 10px;
+    }
+
+
+    #log thead,
+    #log-files {
+        display: none;
+    }
+    #log-summary,
+    #log-date,
+    #md-content-hr {
+        display: block;
+    }
+
+    #log-author {
+        display: block;
+    }
+
+    #commit-diff {
+        overflow-x: scroll;
+    }
+
+    #md-content {
+        /* padding: 1em; */
+        padding: 10px;
+    }
+    #md-content img {
+        max-width: 100%;
+        padding: 0;
+    }
+    #md-content ul {
+        padding-left: 1em;
+    }
+    #md-content h1 {
+        padding-top: .25em;
+    }
+
+    #repo-header-table {
+        /* padding: .25em .50em .75em .50em; */
+        padding: 10px;
+    }
+
+    #open-file-header {
+        /* padding: .75em; */
+        padding: 10px;
+    }
+
+    #line-checkbox-div {
+        text-align: center;
+        width: min-content;
+        white-space: nowrap;
+    }
+}
diff --git a/css/style.css b/css/style.css
@@ -1,703 +0,0 @@
-@import "/css/colors.css";
-
-* {
-    margin: 0;
-    padding: 0;
-    border: 0;
-    overflow-x: visible;
-    overflow-y: unset;
-}
-
-/* Avoid showing the background of the scrollbar when the content is small enough */
-html {
-    margin-left: calc(100vw - 100%);
-    margin-right: 0;
-    overflow-y: scroll;
-}
-
-::selection {
-    color: var(--selection-fg-color);
-    background: var(--selection-bg-color);
-}
-
-::-moz-selection {
-    color: var(--selection-fg-color);
-    background: var(--selection-bg-color);
-}
-
-body {
-    color: var(--fg-color);
-    background: var(--bg-color);
-    margin-bottom: 15em;
-    margin-left: .5em;
-    margin-right: .5em;
-    font-size: 18px;
-    font-family: "Nimbus Sans", "Nimbus Sans L", "Inter", "Helvetica", "inconsolata", "DejaVu Sans", sans, "Verdana", sans-serif, "Georgia", serif, monospace;
-    font-weight: 500;
-}
-
-header {
-    color: var(--accent-color);
-
-    max-width: 37em;
-
-    margin-left: auto;
-    margin-right: auto;
-    margin-top: .5em;
-    margin-bottom: .5em;
-
-    text-align: center;
-
-    padding-top: .75em;
-    /* padding-bottom: .25em; */
-    padding-left: 0.75em;
-    padding-right: 0.75em;
-
-    border-top: 1em;
-}
-
-table {
-    border-spacing: 0px;
-}
-
-#color-scheme-button-light {
-    display: none;
-}
-
-.header_flex_div {
-    display: flex;
-    justify-content: center;
-    flex-wrap: wrap;
-    align-items: baseline;
-    position: relative;
-    padding: 0 1.25em;
-}
-
-.header_bottom_bar{
-    border: 0;
-    clear:both;
-
-    display: block;
-
-    width: 100%;
-    max-width: 37em;
-    height: 0px;
-    margin-left: auto;
-    margin-right: auto;
-    margin-top: .5em;
-    margin-bottom: .5em;
-    padding-top: 0;
-    padding-bottom: 0;
-    border-top: 1px dashed var(--secondary-accent-color);
-}
-
-.article_top_bar {
-    border: 0;
-    clear:both;
-    display: block;
-    width: 100%;
-    max-width: 37em;
-    height: 0px;
-    margin-left: auto;
-    margin-right: auto;
-    margin-top: 0em;
-    margin-bottom: 1em;
-    padding-top: 0;
-    padding-bottom: 0;
-    border-top: 1px dashed var(--secondary-accent-color);
-}
-
-#header_link, #header_link_short {
-    text-decoration: none;
-    color: inherit;
-    transition: .75;
-
-    font-family: "Nimbus Sans", "Nimbus Sans L", "Inter", "Helvetica", "inconsolata", monospace, "DejaVu Sans", sans, "Verdana", sans-serif, "Georgia", serif;
-}
-
-#color-scheme-button {
-    position: absolute;
-    top: 30px;
-    right: 0;
-    display: inline-block;
-    cursor: pointer;
-    fill: var(--fg-color);
-    opacity: 75%;
-}
-
-#header_link:hover {
-    color: var(--header-hover-fg-color);
-}
-
-#header_title {
-    margin-bottom: .150em;
-    font-size: 2em;
-    width: 100%;
-}
-
-#rss {
-    display: inline-flex;
-    width: 28px;
-    height: 28px;
-    align-items: center;
-    justify-content: center;
-    color: var(--fg-color);
-    margin-left: 8px;
-    margin-bottom: 8px;
-    /* padding-left: 8px; */
-    /* padding-bottom: 8px; */
-    opacity: 60%;
-}
-
-#rss svg {
-    width: 22px;
-    height: 22px;
-    fill: currentColor;
-}
-
-#rss:hover,
-#color-scheme-button:hover {
-    opacity: 100%;
-}
-
-article {
-    color: var(--fg-color);
-
-    max-width: 37em;
-
-    margin-left: auto;
-    margin-right: auto;
-    margin-bottom: .9em;
-
-    text-align: justify;
-
-    -webkit-hyphens: auto;
-    -ms-hyphens: auto;
-    hyphens: auto;
-
-    overflow-wrap: break-word;
-
-    padding-left: 0.5em;
-    padding-right: 0.5em;
-    padding-top: 0.5em;
-    padding-bottom: 1em;
-
-    border-radius: 1em;
-}
-
-a {
-    -webkit-hyphens: auto;
-    -ms-hyphens: auto;
-    hyphens: auto;
-    white-space: normal;
-
-    word-break: auto-phrase;
-}
-
-
-.article_bottom_bar {
-    border: 0;
-    clear: both;
-
-    display: block;
-
-    width: 100%;
-    max-width: 37em;
-    height: 0px;
-
-    margin-left: auto;
-    margin-right: auto;
-    margin-top: .25em;
-    margin-bottom: 0;
-
-    padding-top: 0;
-    padding-bottom: 0;
-    /*! border-bottom: dashed; */
-    border-top: 1px dashed var(--secondary-accent-color);
-}
-
-footer {
-    text-align: center;
-    font-size: 0.75em;
-    a:hover {
-        text-decoration: none;
-    }
-    br {
-        margin-bottom: 3px;
-    }
-}
-
-#footer-buttons {
-    padding: 0;
-    margin: 0;
-    border-width: 0;
-    width: 80px;
-    opacity: 45%;
-}
-
-#footer-buttons:hover {
-    opacity: 100%;
-}
-
-.footer-div {
-    padding: 0em 2em 2.5em 2em;
-    margin-left: auto;
-    margin-right:auto;
-}
-
-#index-title, #blog-title {
-    text-align: center;
-    color: var(--title-color);
-    padding-top: 0em;
-    padding-bottom: .25em;
-    /* animation: zoom-in-zoom-out 5s ease-in-out infinite; */
-    animation: none;
-}
-
-#blog-title {
-    animation: none;
-}
-
-img {
-    overflow: hidden;
-
-    height: 100%;
-    width: 100%;
-
-    color: black;
-    background: transparent;
-}
-
-a:visited, a:active, a:link {
-    color: var(--link-color);
-    text-decoration: none;
-}
-
-a:hover {
-    /* color: var(--link-hover-color); */
-    text-decoration: underline;
-    text-decoration: none;
-    background: var(--hover-bg-color);
-}
-
-ol {
-    list-style-position: inside;
-}
-
-ul {
-    list-style-type: none; /* Remove bullets */
-    list-style-position: inside;
-    list-style: inside;
-    padding: 0;
-    padding-bottom: .5em;
-    margin: 0; /* Remove margins */
-}
-
-.header_buttons {
-    /* margin: 0 0 .100em 0; */
-    margin: 0;
-    padding-bottom: 0em;
-    font-size: 1.65em;
-    display: flex;
-    flex-wrap: wrap;
-    justify-content: center;
-    list-style-type: none;
-}
-
-h1 { font-size: 1.75em; }
-
-h2 {
-    font-size: 1.25em;
-
-    padding-top: .5em;
-    padding-bottom: .5em;
-}
-
-h3 {
-    font-size: 1em;
-    text-align: left;
-
-    padding-top: .5em;
-    padding-bottom: .5em;
-}
-
-h4 { padding-top: .5em; text-align: left; }
-
-h5 {
-    padding-bottom: .25em;
-    font-size: 1em;
-}
-
-p { padding-bottom: 1em; }
-
-code {
-    font-size: 85%;
-    font-family: "Ubuntu Mono", monospace;
-    /* background-color: #656c7633; */
-    background-color: var(--code-bg);
-    padding: 0 .2em;
-    margin: 0;
-    /* border-radius: 6px; */
-    white-space: wrap;
-    word-break: break-all;
-}
-
-pre {
-    text-align: left;
-
-    padding: .75em;
-    border-radius: 0em;
-    background-color: var(--code-bg);
-    width: auto;
-    display: block;
-    margin-left: auto;
-    margin-right: auto;
-    margin-top: 0em;
-    margin-bottom: 1.25em;
-    border-width: 0px;
-    border-color: var(--pre-border-color);
-    border-style: solid;
-    /* box-shadow: 5px 5px 7px black; */
-    overflow: auto;
-    font-size: 90%;
-    scrollbar-color: var(--pre-border-color);
-    scrollbar-width: thin;
-    text-wrap: wrap;
-}
-
-pre code {
-    font-size: 1em;
-    background-color: inherit;
-    padding: 0;
-    margin: 0;
-    border-radius: 0;
-    word-break: normal;
-    overflow-wrap: normal;
-    white-space: pre;
-    hyphens: none;
-}
-
-/* #command { color: #33ff11; } */
-#command_sym { color: #ff1694; }
-#command_red { color: gold; }
-
-a.anchor{
-    display:block;
-    position: relative;
-    top: 150px;
-    visibility: hidden;
-}
-
-hr {
-    border: 0;
-    clear:both;
-
-    display:block;
-
-    width: 90%;
-    height: .1em;
-    margin-left: auto;
-    margin-right: auto;
-    margin-top: 0;
-    margin-bottom: 0;
-    padding-top: 0;
-    padding-bottom: 0;
-}
-
-#go_top {
-    text-decoration: none;
-    color: var(--link-color);
-}
-
-#go_top:hover {
-    color: var(--accent-color);
-}
-
-/* list-style-type: none; /1* Remove bullets *1/ */
-/* padding: 0; */
-/* padding-bottom: .5em; */
-/* text-align: left; */
-
-#latest-uploads {
-    padding: 0;
-    #latest-uploads-title {
-        display: flex;
-        align-items: center;
-        color: var(--fg-color);
-        h2 {
-            padding: 0;
-            font-size: 1.25em;
-            padding-bottom: .25em;
-            text-decoration: underline;
-        }
-        img {
-            margin-bottom: 2px;
-            margin-left: .5em;
-        }
-    }
-    #date {
-        text-wrap: nowrap;
-        vertical-align: top;
-        font-family: "inconsolata", monospace;
-        a {
-            color: var(--fg-color);
-            text-decoration: none;
-            font-family: "inconsolata", monospace;
-            padding-right: .5em;
-        }
-    }
-    #see-all-blog-entries {
-        padding-top: .5em;
-    }
-}
-
-#latest-uploads-blog-entries, #blog_entries {
-    #title a:hover {
-        text-decoration: none;
-    }
-
-    a:hover {
-        filter: brightness(1.0);
-    }
-
-    tr:hover {
-        /* background: #000; */
-        background: var(--hover-bg-color);
-        cursor: pointer;
-    }
-
-    td a {
-        display: block;
-    }
-}
-
-@media (hover: hover) and (pointer: fine) {
-    a:hover {
-        filter: brightness(var(--hover-brightness));
-    }
-
-    #latest-uploads-blog-entries, #blog_entries {
-        tr:hover {
-            filter: brightness(var(--hover-brightness));
-        }
-    }
-}
-
-
-#urgent-announcement {
-    color: var(--fg-color);
-    font-weight: bold;
-    padding: 0.5em 0em 1em 0em;
-    a {
-        color: orangered;
-        text-decoration: underline;
-    }
-}
-
-b-time {
-    font-family: "inconsolata", monospace;
-}
-
-#blog-index-table {
-    width: 100%;
-}
-
-@media (max-width: 800px) {
-    body {
-        margin-left: 0em;
-        margin-right: 0em;
-    }
-    header {
-        padding-top: .25em;
-        padding-bottom: 0;
-        margin-top: .5em;
-    }
-    article {
-        padding-top: 0.25em;
-        padding-bottom: .5em;
-        margin-bottom: .25em;
-    }
-    footer {
-        padding-top: .5em;
-    }
-    a {
-        -webkit-tap-highlight-color: transparent;
-        user-select: none;
-    }
-    .header_flex_div{
-        flex-direction: column;
-        align-items: center;
-    }
-    .header_buttons{
-        margin-top: 0;
-        font-size: 1.50em;
-        align-self: center;
-        padding-top: 0em;
-        padding-bottom: .25em;
-
-        a:hover {
-            color: var(--hover-fg-color);
-        }
-    }
-    .header_bottom_bar{
-        /* width: 55%; */
-    }
-    .article_bottom_bar {
-        /* width: 40%; */
-        padding-top: .5em;
-        margin-top: .5em;
-        margin-bottom: .75em;
-    }
-    #header_title {
-        font-size: 2.20em;
-        line-height: 1.10em;
-        /* padding-bottom: .10em; */
-    }
-    #index-title {
-        padding-top: 0;
-        padding-bottom: .25em;
-        font-size: 1.60em;
-    }
-
-
-    #blog-index-table {
-        a {
-            text-decoration: none;
-            text-align: left;
-        }
-        a:hover {
-            color: var(--link-color);
-            text-decoration: none;
-        }
-        /* border: 1px solid #505050; */
-        /* border-radius: .5em; */
-        /* padding: .5em; */
-        #entry {
-            display: flex;
-            flex-direction: column-reverse;
-            margin-bottom: .5em;
-        }
-        #date {
-            /* padding-top: .10em; */
-            /* padding-bottom: 1em; */
-        }
-        #title {
-            display: block;
-        }
-        #title a {
-            /* color: var(--fg-color); */
-            font-size: 1.00em;
-            display: block;
-        }
-        #date a {
-            display: block;
-            font-size: 1.00em;
-            /* color: var(--article-date); */
-        }
-        #date a:hover {
-            color: var(--fg-color);
-        }
-    }
-
-    #latest-uploads {
-        tr:nth-child(n + 6) {
-            display: none !important;
-        }
-        tr:nth-child(6) #date {
-            padding-bottom: 0;
-        }
-    }
-
-    #latest-uploads-title {
-        padding-bottom: .25em;
-    }
-    #see-all-blog-entries {
-        padding-top: 0em;
-    }
-    #header_link {
-        display: none;
-    }
-    #header_link_short {
-        display: initial !important;
-    }
-}
-
-@media (max-width: 400px) {
-    article {
-        margin-bottom: .25em;
-    }
-    p { padding-bottom: .75em; }
-    #header_title {
-        font-size: 2.00em;
-        padding-bottom: 0;
-    }
-    .header_bottom_bar {
-        margin-top: 0;
-        margin-bottom: 0;
-    }
-    .header_buttons {
-        padding-bottom: .25em;
-    }
-    #index-title {
-        padding-top: .25em;
-        padding-bottom: .5em;
-        font-size: 1.5em;
-    }
-    #latest-uploads-title {
-        padding-bottom: 0;
-    }
-    .article_bottom_bar {
-        padding-top: .25em;
-        margin-top: .5em;
-    }
-    .footer-div {
-        padding: 0em 2em 1.75em 2em;
-    }
-}
-
-/*
-@media (prefers-color-scheme: light) {
-    #header_link:hover {
-        color: #a04a00;
-    }
-    .header_bottom_bar {
-        border-top: 1px dashed;
-    }
-    .article_bottom_bar {
-        border-top: 1px dashed;
-    }
-    a:visited {
-        color: #a04a00;
-    }
-    a:link {
-        color: #a04a00;
-    }
-    a:hover {
-        color: #CC2936;
-    }
-    pre {
-        background-color: #eee;
-        border: 3px solid #aaa;
-        border-radius: 0px;
-        margin-top: 0;
-        box-shadow: 0px 0px 0px;
-    }
-    #command { color: inherit; }
-    #command_sym { color: inherit; }
-    #command_red { color: inherit; }
-
-    #go_top:hover {
-        color: #CC2936;
-    }
-    #go_top {
-        color: #a04a00;
-    }
-    #urgent-announcement {
-        color: #090909;
-    }
-
-    code {
-        background-color: rgba(190,198,219,0.2);
-    }
-}
-*/
diff --git a/css/style_src.css b/css/style_src.css
@@ -0,0 +1,724 @@
+@import "/css/colors.css";
+
+* {
+    margin: 0;
+    padding: 0;
+    border: 0;
+    overflow-x: visible;
+    overflow-y: unset;
+}
+
+/* Avoid showing the background of the scrollbar when the content is small enough */
+html {
+    margin-left: calc(100vw - 100%);
+    margin-right: 0;
+    overflow-y: scroll;
+}
+
+::selection {
+    color: var(--selection-fg-color);
+    background: var(--selection-bg-color);
+}
+
+::-moz-selection {
+    color: var(--selection-fg-color);
+    background: var(--selection-bg-color);
+}
+
+body {
+    color: var(--fg-color);
+    background: var(--bg-color);
+    margin-bottom: 15em;
+    margin-left: .5em;
+    margin-right: .5em;
+    font-size: 18px;
+    font-family: "Nimbus Sans", "Nimbus Sans L", "Inter", "Helvetica", "inconsolata", "DejaVu Sans", sans, "Verdana", sans-serif, "Georgia", serif, monospace;
+    font-weight: 500;
+}
+
+header {
+    color: var(--accent-color);
+
+    max-width: 37em;
+
+    margin-left: auto;
+    margin-right: auto;
+    margin-top: 16px;
+    margin-bottom: 10px;
+
+    text-align: center;
+
+    /* padding-top: 12px; */
+    /* padding-bottom: .25em; */
+    padding-left: 0.75em;
+    padding-right: 0.75em;
+
+    /* border-top: 1em; */
+}
+
+table {
+    border-spacing: 0px;
+}
+
+#color-scheme-button-light {
+    display: none;
+}
+
+.header_flex_div {
+    display: flex;
+    justify-content: center;
+    flex-wrap: wrap;
+    align-items: baseline;
+    position: relative;
+    padding: 0 1.25em;
+}
+
+.header_bottom_bar{
+    border: 0;
+    clear:both;
+
+    display: block;
+
+    width: 100%;
+    max-width: 37em;
+    height: 0px;
+    margin-left: auto;
+    margin-right: auto;
+    margin-top: .5em;
+    margin-bottom: .5em;
+    padding-top: 0;
+    padding-bottom: 0;
+    border-top: 1px dashed var(--secondary-accent-color);
+}
+
+.article_top_bar {
+    border: 0;
+    clear:both;
+    display: block;
+    width: 100%;
+    max-width: 37em;
+    height: 0px;
+    margin-left: auto;
+    margin-right: auto;
+    margin-top: 0em;
+    margin-bottom: 18px;
+    padding-top: 0;
+    padding-bottom: 0;
+    border-top: 1px dashed var(--secondary-accent-color);
+}
+
+#header_link, #header_link_short {
+    text-decoration: none;
+    color: inherit;
+    transition: .75;
+
+    font-family: "Nimbus Sans", "Nimbus Sans L", "Inter", "Helvetica", "inconsolata", monospace, "DejaVu Sans", sans, "Verdana", sans-serif, "Georgia", serif;
+}
+
+#color-scheme-button {
+    position: absolute;
+    top: 30px;
+    right: 0;
+    display: inline-block;
+    cursor: pointer;
+    fill: var(--fg-color);
+    opacity: 75%;
+}
+
+#header_link:hover {
+    color: var(--header-hover-fg-color);
+}
+
+#header_title {
+    /* margin-bottom: .150em; */
+    font-size: 2em;
+    width: 100%;
+    margin-bottom: 4px;
+}
+
+#rss {
+    /* display: inline-flex; */
+    width: 28px;
+    height: 28px;
+    align-items: center;
+    justify-content: center;
+    color: var(--fg-color);
+    /* margin-left: 8px; */
+    /* margin-bottom: 8px; */
+    /* padding-left: 8px; */
+    /* padding-bottom: 8px; */
+    opacity: 20%;
+
+    position: absolute;
+    left: calc(50% + 6rem);
+    top: 40%;
+    transform: translateY(-50%);
+}
+
+#rss svg {
+    width: 22px;
+    height: 22px;
+    fill: currentColor;
+}
+
+#rss:hover,
+#color-scheme-button:hover {
+    opacity: 100%;
+}
+
+article {
+    color: var(--fg-color);
+
+    max-width: 37em;
+
+    margin-left: auto;
+    margin-right: auto;
+    margin-bottom: .9em;
+
+    text-align: left;
+
+    -webkit-hyphens: auto;
+    -ms-hyphens: auto;
+    hyphens: auto;
+
+    overflow-wrap: break-word;
+
+    /* padding-left: 0.5em; */
+    /* padding-right: 0.5em; */
+    /* padding-top: 0.5em; */
+    /* padding-bottom: 1em; */
+    padding: 20px;
+    border: 1px solid var(--hover-bg-color);
+
+    border-radius: 10px;
+}
+
+a {
+    -webkit-hyphens: auto;
+    -ms-hyphens: auto;
+    hyphens: auto;
+    white-space: normal;
+
+    word-break: auto-phrase;
+}
+
+
+.article_bottom_bar {
+    border: 0;
+    clear: both;
+
+    display: block;
+
+    width: 100%;
+    max-width: 37em;
+    height: 0px;
+
+    margin-left: auto;
+    margin-right: auto;
+    margin-top: .25em;
+    margin-bottom: 0;
+
+    padding-top: 0;
+    padding-bottom: 0;
+    /*! border-bottom: dashed; */
+    border-top: 1px dashed var(--secondary-accent-color);
+}
+
+footer {
+    text-align: center;
+    font-size: 0.75em;
+    a:hover {
+        text-decoration: none;
+    }
+    br {
+        margin-bottom: 3px;
+    }
+}
+
+#footer-buttons {
+    padding: 0;
+    margin: 0;
+    border-width: 0;
+    width: 80px;
+    opacity: 45%;
+}
+
+#footer-buttons:hover {
+    opacity: 100%;
+}
+
+.footer-div {
+    padding: 0em 2em 2.5em 2em;
+    margin-left: auto;
+    margin-right:auto;
+}
+
+#index-title, #blog-title {
+    text-align: center;
+    color: var(--title-color);
+    padding-top: 0em;
+    padding-bottom: .25em;
+    /* animation: zoom-in-zoom-out 5s ease-in-out infinite; */
+    animation: none;
+    font-size: 26px;
+}
+
+#blog-title {
+    animation: none;
+}
+
+img {
+    overflow: hidden;
+
+    height: 100%;
+    width: 100%;
+
+    color: black;
+    background: transparent;
+}
+
+a:visited, a:active, a:link {
+    color: var(--link-color);
+    text-decoration: none;
+}
+
+a:hover {
+    /* color: var(--link-hover-color); */
+    text-decoration: underline;
+    text-decoration: none;
+    background: var(--hover-bg-color);
+    /* filter: brightness(var(--hover-brightness)); */
+}
+
+ol {
+    list-style-position: inside;
+}
+
+ul {
+    list-style-type: none; /* Remove bullets */
+    list-style-position: inside;
+    list-style: inside;
+    padding: 0;
+    padding-bottom: .5em;
+    margin: 0; /* Remove margins */
+}
+
+.header_buttons {
+    /* margin: 0 0 .100em 0; */
+    margin: 0;
+    padding-bottom: 0em;
+    font-size: 1.65em;
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: center;
+    list-style-type: none;
+}
+
+/* h1 { font-size: 1.75em; } */
+
+h2 {
+    font-size: 1.25em;
+
+    padding-top: .5em;
+    padding-bottom: .5em;
+}
+
+h3 {
+    font-size: 1em;
+    text-align: left;
+
+    padding-top: .5em;
+    padding-bottom: .5em;
+}
+
+h4 { padding-top: .5em; text-align: left; }
+
+h5 {
+    padding-bottom: .25em;
+    font-size: 1em;
+}
+
+p { padding-bottom: 1em; }
+
+code {
+    font-size: 85%;
+    font-family: "Ubuntu Mono", monospace;
+    /* background-color: #656c7633; */
+    background-color: var(--code-bg);
+    padding: 0 .2em;
+    margin: 0;
+    /* border-radius: 6px; */
+    white-space: wrap;
+    word-break: break-all;
+}
+
+pre {
+    text-align: left;
+
+    padding: .75em;
+    border-radius: 0em;
+    background-color: var(--code-bg);
+    width: auto;
+    display: block;
+    margin-left: auto;
+    margin-right: auto;
+    margin-top: 0em;
+    margin-bottom: 1.25em;
+    border-width: 0px;
+    border-color: var(--pre-border-color);
+    border-style: solid;
+    /* box-shadow: 5px 5px 7px black; */
+    overflow: auto;
+    font-size: 90%;
+    scrollbar-color: var(--pre-border-color);
+    scrollbar-width: thin;
+    text-wrap: wrap;
+}
+
+pre code {
+    font-size: 1em;
+    background-color: inherit;
+    padding: 0;
+    margin: 0;
+    border-radius: 0;
+    word-break: normal;
+    /* word-break: break-all; */
+    overflow-wrap: normal;
+    /* white-space: pre-wrap; */
+    white-space: pre;
+    hyphens: none;
+}
+
+/* #command { color: #33ff11; } */
+#command_sym { color: #ff1694; }
+#command_red { color: gold; }
+
+a.anchor{
+    display:block;
+    position: relative;
+    top: 150px;
+    visibility: hidden;
+}
+
+hr {
+    border: 0;
+    clear:both;
+
+    display:block;
+
+    width: 90%;
+    height: .1em;
+    margin-left: auto;
+    margin-right: auto;
+    margin-top: 0;
+    margin-bottom: 0;
+    padding-top: 0;
+    padding-bottom: 0;
+}
+
+#go_top {
+    text-decoration: none;
+    color: var(--link-color);
+}
+
+#go_top:hover {
+    color: var(--accent-color);
+}
+
+/* list-style-type: none; /1* Remove bullets *1/ */
+/* padding: 0; */
+/* padding-bottom: .5em; */
+/* text-align: left; */
+
+#latest-uploads {
+    padding: 0;
+    #latest-uploads-title {
+        display: flex;
+        align-items: center;
+        color: var(--fg-color);
+        
+        justify-content: center;
+
+        position: relative;
+        text-align: center;
+
+        h2 {
+            padding: 0;
+            font-size: 20px;
+            padding-bottom: .25em;
+            /* text-decoration: underline; */
+        }
+        img {
+            margin-bottom: 2px;
+            margin-left: .5em;
+        }
+    }
+    #date {
+        text-wrap: nowrap;
+        vertical-align: top;
+        font-family: "inconsolata", monospace;
+        a {
+            color: var(--fg-color);
+            text-decoration: none;
+            font-family: "inconsolata", monospace;
+            padding-right: .5em;
+        }
+    }
+    #see-all-blog-entries {
+        padding-top: .5em;
+    }
+}
+
+#latest-uploads-blog-entries, #blog_entries {
+    #title a:hover {
+        text-decoration: none;
+    }
+
+    a:hover {
+        filter: brightness(1.0);
+    }
+
+    tr:hover {
+        /* background: #000; */
+        background: var(--hover-bg-color);
+        /* filter: brightness(var(--hover-brightness)); */
+        cursor: pointer;
+    }
+
+    td a {
+        display: block;
+    }
+}
+
+@media (hover: hover) and (pointer: fine) {
+    a:hover {
+        filter: brightness(var(--hover-brightness));
+    }
+
+    #latest-uploads-blog-entries, #blog_entries {
+        tr:hover {
+            filter: brightness(var(--hover-brightness));
+        }
+    }
+}
+
+
+#urgent-announcement {
+    color: var(--fg-color);
+    font-weight: bold;
+    padding: 0.5em 0em 1em 0em;
+    a {
+        color: orangered;
+        text-decoration: underline;
+    }
+}
+
+b-time {
+    font-family: "inconsolata", monospace;
+}
+
+#blog-index-table {
+    width: 100%;
+}
+
+@media (max-width: 800px) {
+    body {
+        margin-left: 0em;
+        margin-right: 0em;
+    }
+    header {
+        padding-top: .25em;
+        padding-bottom: 0;
+        margin-top: .5em;
+    }
+    article {
+        /* padding-top: 0.25em; */
+        /* padding-bottom: .5em; */
+        /* margin-bottom: .25em; */
+        padding: 20px 10px
+    }
+    footer {
+        padding-top: .5em;
+    }
+    a {
+        -webkit-tap-highlight-color: transparent;
+        user-select: none;
+    }
+    .header_flex_div{
+        flex-direction: column;
+        align-items: center;
+    }
+    .header_buttons{
+        margin-top: 0;
+        font-size: 1.50em;
+        align-self: center;
+        padding-top: 0em;
+        padding-bottom: .25em;
+
+        a:hover {
+            color: var(--hover-fg-color);
+        }
+    }
+    .header_bottom_bar{
+        /* width: 55%; */
+    }
+    .article_bottom_bar {
+        /* width: 40%; */
+        padding-top: .5em;
+        margin-top: .5em;
+        margin-bottom: .75em;
+    }
+    #header_title {
+        font-size: 2.20em;
+        line-height: 1.10em;
+        /* padding-bottom: .10em; */
+    }
+    #index-title {
+        padding-top: 0;
+        padding-bottom: .25em;
+        font-size: 1.60em;
+    }
+
+
+    #blog-index-table {
+        a {
+            text-decoration: none;
+            text-align: left;
+        }
+        a:hover {
+            color: var(--link-color);
+            text-decoration: none;
+        }
+        /* border: 1px solid #505050; */
+        /* border-radius: .5em; */
+        /* padding: .5em; */
+        #entry {
+            display: flex;
+            flex-direction: column-reverse;
+            margin-bottom: .5em;
+        }
+        #date {
+            /* padding-top: .10em; */
+            /* padding-bottom: 1em; */
+        }
+        #title {
+            display: block;
+        }
+        #title a {
+            /* color: var(--fg-color); */
+            font-size: 1.00em;
+            display: block;
+        }
+        #date a {
+            display: block;
+            font-size: 1.00em;
+            /* color: var(--article-date); */
+        }
+        #date a:hover {
+            color: var(--fg-color);
+        }
+    }
+
+    #latest-uploads {
+        tr:nth-child(n + 6) {
+            display: none !important;
+        }
+        tr:nth-child(6) #date {
+            padding-bottom: 0;
+        }
+    }
+
+    #latest-uploads-title {
+        padding-bottom: .25em;
+    }
+    #see-all-blog-entries {
+        padding-top: 0em;
+    }
+    #header_link {
+        display: none;
+    }
+    #header_link_short {
+        display: initial !important;
+    }
+}
+
+@media (max-width: 400px) {
+    article {
+        /* margin-bottom: .25em; */
+        padding: 10px 15px;
+    }
+    p { padding-bottom: .75em; }
+    #header_title {
+        font-size: 2.00em;
+        padding-bottom: 0;
+    }
+    .header_bottom_bar {
+        margin-top: 0;
+        margin-bottom: 0;
+    }
+    .header_buttons {
+        padding-bottom: .25em;
+    }
+    #index-title {
+        padding-top: 10px;
+        padding-bottom: 5px;
+        font-size: 1.5em;
+    }
+    #latest-uploads-title {
+        padding-bottom: 0;
+    }
+    .article_bottom_bar {
+        padding-top: .25em;
+        margin-top: .5em;
+    }
+    .footer-div {
+        padding: 0em 2em 1.75em 2em;
+    }
+}
+
+/*
+@media (prefers-color-scheme: light) {
+    #header_link:hover {
+        color: #a04a00;
+    }
+    .header_bottom_bar {
+        border-top: 1px dashed;
+    }
+    .article_bottom_bar {
+        border-top: 1px dashed;
+    }
+    a:visited {
+        color: #a04a00;
+    }
+    a:link {
+        color: #a04a00;
+    }
+    a:hover {
+        color: #CC2936;
+    }
+    pre {
+        background-color: #eee;
+        border: 3px solid #aaa;
+        border-radius: 0px;
+        margin-top: 0;
+        box-shadow: 0px 0px 0px;
+    }
+    #command { color: inherit; }
+    #command_sym { color: inherit; }
+    #command_red { color: inherit; }
+
+    #go_top:hover {
+        color: #CC2936;
+    }
+    #go_top {
+        color: #a04a00;
+    }
+    #urgent-announcement {
+        color: #090909;
+    }
+
+    code {
+        background-color: rgba(190,198,219,0.2);
+    }
+}
+*/
diff --git a/scripts/css-minificator.py b/scripts/css-minificator.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python3
+
+import os
+import csscompressor
+
+CSS_FOLDER = "css"
+CSS_FILES = ["style_src.css", "git_src.css", "article_src.css", "colors_src.css"]
+
+for src_name in CSS_FILES:
+    src_basename = os.path.splitext(os.path.basename(src_name))[0]
+    dst_basename = src_basename.replace("_src", "")
+
+    with open(f"{CSS_FOLDER}/{src_name}") as src_f:
+        style = src_f.read()
+
+    print(f"Writing {CSS_FOLDER}/{dst_basename}.css")
+    with open(f"{CSS_FOLDER}/{dst_basename}.css", "w") as dst_f:
+        dst_f.write(csscompressor.compress(style))