noxz-sites

A collection of a builder and various scripts creating the noxz.tech sites
git clone https://noxz.tech/git/noxz-sites.git
noxz-sites

commit: 881ce36d30b39154657e2acfea4d4c14c1fcf20c
parent: 002a266ff42eafcadf86185a2d6852a2484c362e
author: Chris Noxz <chris@noxz.tech>
date:   Fri, 22 Jul 2022 10:12:58 +0200
new mobile friendly theme and automated articles page
Mbuild51+++++++-
Mconfig/main.html3+-
Mnoxz.tech/articles/askpass_implementation_for_doas/index.www13+-
Mnoxz.tech/articles/index.www47+------
Mnoxz.tech/articles/moving_from_my_hacked_readynas_to_a_raspberry_pi/index.www13+-
Mnoxz.tech/articles/simple_way_to_filter_email/index.www13+-
Mnoxz.tech/articles/srfinder/index.www13+-
Mnoxz.tech/articles/the_lenovo_thinkpad_t400/index.www13+-
Mnoxz.tech/articles/vi_indicator_for_loksh/index.www13+-
Mnoxz.tech/pub/.assemble1+
Mnoxz.tech/pub/logo.svg16+--
Anoxz.tech/pub/source.svg33+++++
Mnoxz.tech/pub/style.css133++++++++++++++------
13 files changed, 234 insertions(+), 128 deletions(-)
diff --git a/build b/build
@@ -4,7 +4,6 @@
 SITE_DOMAIN="noxz.tech"
 SITE_TITLE="noxz.tech | noxz.tech - Chris Noxz (aka. z0noxz)"
 SITE_MAIN_TITLE="noxz.tech"
-SITE_SUB_TITLE="- Chris Noxz (aka. z0noxz)"
 SITE_AUTHOR="Chris Noxz"
 SITE_ICON_PNG="//[site]/pub/logo.png"
 SITE_ICON_SVG="//[site]/pub/logo.svg"
@@ -216,6 +215,7 @@ render_main_menu() {
 render_main_menu_extra() {
 	printf '<li><a class="%s" href="%s">%s</a></li>\n'                      \
 		"twtxt" "//[site]/twtxt.txt" "twtxt"                                \
+		"source" "//[site]/git/" "source"                                   \
 	| awk                                                                   \
 	'
 		BEGIN {
@@ -232,6 +232,46 @@ render_main_menu_extra() {
 	'
 }
 
+render_articles() {
+	echo .DIVS articles
+	find noxz.tech/articles -name index.www | while read -r article
+	do
+		grep "^.ds YEAR" "$article" | sed 's/^.ds YEAR[^0-9]*//g'
+	done | sort -ru | while read -r year
+	do
+		printf '.HnS 1\n%s\n.HnE\n.ULS\n' "$year";
+		grep -l "^.ds YEAR.*$year" noxz.tech/articles/*/index.www \
+		| xargs -I{} awk -v name="{}" '
+			BEGIN {
+			title = ""
+				month = ""
+				day = ""
+				gsub(/\/index.www/,"",name)
+				gsub(/^([^\/]|\/)*\//,"",name)
+				printf ".LI\\n "
+			}
+			/^\.ds TITLE.*$/ {
+				for(i=3;i<=NF;i++) {
+					title = title$i
+					if (i != NF)
+					title = title" "
+				}
+			}
+			/^\.ds MONTH.*$/ {
+				month = substr($3,1,3)
+			}
+			/^\.ds DAY.*$/ {
+				day = $3
+			}
+			END {
+				printf "%s %s \\(em\\n .URL \"%s\" \"%s\"\n", day, month, name, title
+			}
+		' {} | sort -k 3Mr -k 2nr | sed 's/\\n /\n/g'
+		printf '.ULE\n' "$year";
+	done
+	echo .DIVE
+}
+
 render_main_content() {
 	awk '
 		# Grohtml (post-html.cpp) has a hard coded max length:
@@ -283,7 +323,13 @@ render_main_content() {
 		}
 	' "${SITE_WWW}"                                                         \
 	| cat "${CFG_GROFF_WWW_MACRO}" -                                        \
-	| groff                                                                 \
+	| while read -r line; do
+		if [ "${line}" = "{:articles:}" ]; then
+			render_articles
+		else
+			printf '%s\n' "${line}"
+		fi
+	done | groff                                                            \
 		-Thtml -e -mwww -k                                                  \
 		-I"${SITE_WWW%/*}/grohtml-"                                         \
 	| awk '
@@ -396,7 +442,6 @@ render_main() {
 		-v var_stylesheet="$(awk_safe "${SITE_CSS}")"                       \
 		-v var_logo="$(awk_safe "${SITE_ICON_SVG}")"                        \
 		-v var_main_title="$(awk_safe "${SITE_MAIN_TITLE}")"                \
-		-v var_sub_title="$(awk_safe "${SITE_SUB_TITLE}")"                  \
 		-v var_menu="$(render_main_menu "$1" "$2" | awk_safe)"              \
 		-v var_menu_extra="$(render_main_menu_extra | awk_safe)"            \
 		-v var_content="$(render_main_content 2>/dev/null | awk_safe)"      \
diff --git a/config/main.html b/config/main.html
@@ -6,7 +6,7 @@
 	<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/>
 	<meta http-equiv="Pragma" content="no-cache"/>
 	<meta http-equiv="Expires" content="0"/>
-	<meta name="viewport" content="width=device-width, initial-scale=0.6">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
 	<title>{:title:}</title>
 	<link rel="icon" type="image/png" href="{:favicon:}"/>
 	<link rel="stylesheet" type="text/css" href="{:stylesheet:}">
@@ -16,7 +16,6 @@
 		<div>
 		<a id="header-logo" href="//noxz.tech/"><img src="{:logo:}" alt="logo"/></a>
 		<a id="header-link" href="//noxz.tech/">{:main_title:}</a>
-		<span id="header-subtitle">{:sub_title:}</span>
 		<a id="header-source" href="//noxz.tech/git">source</a>
 		</div>
 	</div>
diff --git a/noxz.tech/articles/askpass_implementation_for_doas/index.www b/noxz.tech/articles/askpass_implementation_for_doas/index.www
@@ -1,11 +1,14 @@
+.ds YEAR    2021
+.ds MONTH   January
+.ds DAY     20
+.ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
+.ds TITLE   Askpass implementation for doas
+.
 .HnS 0
-Askpass implementation for doas
+\*[TITLE]
 .HnE
 
-posted on
-.B "2021-01-20"
-by
-.B "Chris Noxz"
+.B "\*[DATE]"
 
 As I was trying to move away from using
 .ICD sudo
diff --git a/noxz.tech/articles/index.www b/noxz.tech/articles/index.www
@@ -2,49 +2,4 @@
 Articles
 .HnE
 
-.DIVS articles
-.ULS
-.LI
-.URL "moving_from_my_hacked_readynas_to_a_raspberry_pi" \
-"Moving from my hacked ReadyNAS to a Raspberry Pi"
-posted on
-.B "2022-06-27"
-by
-.B "Chris Noxz"
-
-.LI
-.URL "simple_way_to_filter_email" "Simple way to filter email"
-posted on
-.B "2022-06-11"
-by
-.B "Chris Noxz"
-
-.LI
-.URL "askpass_implementation_for_doas" "Askpass implementation for doas"
-posted on
-.B "2021-01-20"
-by
-.B "Chris Noxz"
-
-.LI
-.URL "srfinder" "Srfinder"
-posted on
-.B "2020-09-04"
-by
-.B "Chris Noxz"
-
-.LI
-.URL "vi_indicator_for_loksh" "Vi indicator for loksh"
-posted on
-.B "2019-10-09"
-by
-.B "Chris Noxz"
-
-.LI
-.URL "the_lenovo_thinkpad_t400" "The Lenovo Thinkpad T400"
-posted on
-.B "2018-01-14"
-by
-.B "Chris Noxz"
-.ULE
-.DIVE
+{:articles:}
diff --git a/noxz.tech/articles/moving_from_my_hacked_readynas_to_a_raspberry_pi/index.www b/noxz.tech/articles/moving_from_my_hacked_readynas_to_a_raspberry_pi/index.www
@@ -1,11 +1,14 @@
+.ds YEAR    2022
+.ds MONTH   June
+.ds DAY     27
+.ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
+.ds TITLE   Moving from my hacked ReadyNAS to a Raspberry Pi
+.
 .HnS 0
-Moving from my hacked ReadyNAS to a Raspberry Pi
+\*[TITLE]
 .HnE
 
-posted on
-.B "2022-06-27"
-by
-.B "Chris Noxz"
+.B "\*[DATE]"
 
 I used to have a hacked/rooted RNRX4000 (ReadyNAS 2100) in which I had replaced
 the original operating system with VoidLinux, having the boot partition on the
diff --git a/noxz.tech/articles/simple_way_to_filter_email/index.www b/noxz.tech/articles/simple_way_to_filter_email/index.www
@@ -1,11 +1,14 @@
+.ds YEAR    2022
+.ds MONTH   June
+.ds DAY     11
+.ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
+.ds TITLE   Simple way to filter email
+.
 .HnS 0
-Simple way to filter email
+\*[TITLE]
 .HnE
 
-posted on
-.B "2022-06-11"
-by
-.B "Chris Noxz"
+.B "\*[DATE]"
 
 Having a lot of different types of email had bugged me for some time, so I 
 sought to find a solution to this problem. The logical way of solving this would
diff --git a/noxz.tech/articles/srfinder/index.www b/noxz.tech/articles/srfinder/index.www
@@ -1,11 +1,14 @@
+.ds YEAR    2020
+.ds MONTH   September
+.ds DAY     04
+.ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
+.ds TITLE   Srfinder
+.
 .HnS 0
-Srfinder
+\*[TITLE]
 .HnE
 
-posted on
-.B "2020-09-04"
-by
-.B "Chris Noxz"
+.B "\*[DATE]"
 
 During some laboratory work I was given the task to measure distance over time 
 using a tool called PASCO Capstone. Unfortunately this tool is neither free 
diff --git a/noxz.tech/articles/the_lenovo_thinkpad_t400/index.www b/noxz.tech/articles/the_lenovo_thinkpad_t400/index.www
@@ -1,11 +1,14 @@
+.ds YEAR    2018
+.ds MONTH   January
+.ds DAY     14
+.ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
+.ds TITLE   The Lenovo Thinkpad T400
+.
 .HnS 0
-The Lenovo Thinkpad T400
+\*[TITLE]
 .HnE
 
-posted on
-.B "2018-01-14"
-by
-.B "Chris Noxz"
+.B "\*[DATE]"
 
 After being tired of being tied to my stationary workstation I finally got
 myself into buying a laptop. I didn't want a new fancy laptop I would have to
diff --git a/noxz.tech/articles/vi_indicator_for_loksh/index.www b/noxz.tech/articles/vi_indicator_for_loksh/index.www
@@ -1,11 +1,14 @@
+.ds YEAR    2019
+.ds MONTH   October
+.ds DAY     09
+.ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
+.ds TITLE   Vi indicator for loksh
+.
 .HnS 0
-Vi indicator for loksh
+\*[TITLE]
 .HnE
 
-posted on
-.B "2019-10-09"
-by
-.B "Chris Noxz"
+.B "\*[DATE]"
 
 When I switched from bash to (lo)ksh I did so because of bash being too bloated
 and prone to become slow under certain circumstances. However, there was a
diff --git a/noxz.tech/pub/.assemble b/noxz.tech/pub/.assemble
@@ -1,6 +1,7 @@
 logo.black.svg
 logo.svg
 twtxt.svg
+source.svg
 logo.png
 style.css
 chrisnoxz.pub
diff --git a/noxz.tech/pub/logo.svg b/noxz.tech/pub/logo.svg
@@ -9,8 +9,8 @@
    xmlns="http://www.w3.org/2000/svg"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25px"
-   height="25px"
+   width="32px"
+   height="32px"
    viewBox="0 0 40 40"
    version="1.1"
    id="svg5995"
@@ -61,7 +61,7 @@
          transform="matrix(4.5481071,0,0,4.5481071,128.69855,246.91874)">
         <path
            id="path1435-6"
-           style="fill:none;stroke:#ffffff;stroke-width:0.1;stroke-opacity:1"
+           style="fill:none;stroke:#000000;stroke-width:0.1;stroke-opacity:1"
            d="M 0,0 H 6 V 6 H 0 Z M 0,2 H 6 M 0,4 H 6 M 2,0 V 6 M 4,0 v 6"
            inkscape:connector-curvature="0" />
       </g>
@@ -72,7 +72,7 @@
          height="5.1449485"
          width="5.1449485"
          id="rect4878"
-         style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.20321889;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" />
+         style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.20321889;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" />
       <rect
          transform="rotate(-45)"
          y="288.75497"
@@ -80,7 +80,7 @@
          height="5.1449485"
          width="5.1449485"
          id="rect4878-2"
-         style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.20321889;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" />
+         style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.20321889;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" />
       <rect
          transform="rotate(-45)"
          y="295.18683"
@@ -88,7 +88,7 @@
          height="5.1449485"
          width="5.1449485"
          id="rect4878-2-9"
-         style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.20321889;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" />
+         style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.20321889;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" />
       <rect
          transform="rotate(-45)"
          y="288.75497"
@@ -96,7 +96,7 @@
          height="5.1449485"
          width="5.1449485"
          id="rect4878-2-9-2"
-         style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.20321889;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" />
+         style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.20321889;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" />
       <rect
          transform="rotate(-45)"
          y="282.31039"
@@ -104,7 +104,7 @@
          height="5.1449485"
          width="5.1449485"
          id="rect4878-2-9-2-7"
-         style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.20321889;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" />
+         style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.20321889;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:fill markers stroke" />
     </g>
   </g>
 </svg>
diff --git a/noxz.tech/pub/source.svg b/noxz.tech/pub/source.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   enable-background="new 0 0 30 30"
+   width="12"
+   height="12"
+   version="1.1"
+   viewBox="0 0 30 30"
+   xml:space="preserve"
+   id="svg118"
+   sodipodi:docname="source.svg"
+   inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"><defs
+   id="defs122" /><sodipodi:namedview
+   id="namedview120"
+   pagecolor="#ffffff"
+   bordercolor="#999999"
+   borderopacity="1"
+   inkscape:pageshadow="0"
+   inkscape:pageopacity="0"
+   inkscape:pagecheckerboard="0"
+   showgrid="false"
+   inkscape:zoom="53"
+   inkscape:cx="5.8867925"
+   inkscape:cy="7.5188679"
+   inkscape:current-layer="svg118" />
+<path
+   d="M 29.40037,13.667 16.332708,0.599857 c -0.752221,-0.752746 -1.972798,-0.752746 -2.72603,0 l -2.713295,2.713779 3.441967,3.442087 c 0.800071,-0.270109 1.71743,-0.08879 2.35487,0.548743 0.641281,0.641555 0.820915,1.566794 0.543922,2.369625 l 3.317671,3.31729 c 0.802839,-0.27674 1.728476,-0.09789 2.369756,0.544314 0.895736,0.89547 0.895736,2.347108 0,3.243334 -0.896385,0.896265 -2.347737,0.896265 -3.244514,0 -0.67369,-0.674337 -0.840362,-1.664328 -0.498743,-2.494435 l -3.094358,-3.0941 v 8.142042 c 0.218203,0.108198 0.424316,0.252158 0.606266,0.4336 0.895734,0.895629 0.895734,2.347109 0,3.244107 -0.895734,0.895351 -2.348127,0.895351 -3.24321,0 -0.895735,-0.896998 -0.895735,-2.348478 0,-3.244107 0.221392,-0.221133 0.477766,-0.388432 0.751309,-0.500416 V 11.04839 C 13.924776,10.936405 13.669021,10.770513 13.44701,10.547854 12.768596,9.869661 12.605345,8.873804 12.953344,8.04054 L 9.5599771,4.646674 0.59944705,13.606439 c -0.752596,0.753367 -0.752596,1.973949 0,2.726643 L 13.667751,29.400255 c 0.752353,0.752596 1.972538,0.752596 2.726029,0 L 29.40037,16.393643 c 0.75284,-0.752836 0.75284,-1.974032 0,-2.726644"
+   style="fill:#f03c2e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.0325723"
+   id="path35" />
+</svg>
diff --git a/noxz.tech/pub/style.css b/noxz.tech/pub/style.css
@@ -1,9 +1,9 @@
 body {
-	background-color: #eee;
+	background-color: #fff;
 	color           : #222;
-	font-family     : monospace, sans-serif;
-	font-size       : 1rem;
-	line-height     : 1.8;
+	font-family     : serif;
+	font-size       : 1.2em;
+	line-height     : 1.6;
 	padding         : 0;
 	margin          : 0;
 	overflow-y      : scroll;
@@ -18,9 +18,7 @@ body {
 #content > div {
 	max-width       : 1000px;
 	background-color: #ffffff;
-	border          : solid 1px #ddd;
-	border-top      : none;
-	border-bottom   : none;
+	border          : none;
 }
 /* end: setup centered theme */
 
@@ -37,16 +35,20 @@ hr.hidden-ruler {
 	display         : none;
 }
 
+img {
+	max-width       : 100%;
+}
+
 #header {
 	clear           : both;
-	color           : #ffffff;
-	border-bottom   : solid 2px #526587;
-	background      : #333a56;
-	background      : linear-gradient(to right, #000000, #333a56);
+	color           : #000;
+	background      : #fff;
 	height          : 2.75em;
 	font-size       : 1.3em;
+	font-family     : monospace;
 	line-height     : 2.75em;
 	padding         : 0 1em;
+	border-bottom   : 1px solid #f4f4f4;
 }
 
 #header-logo img {
@@ -75,6 +77,10 @@ hr.hidden-ruler {
 	float           : right;
 }
 
+h1, h2, h3, h4 {
+	font-family     : sans-serif;
+}
+
 h1 {
 	border-bottom   : 1px solid #cacaca;
 	margin          : 1em 0 1em 0;
@@ -82,18 +88,19 @@ h1 {
 	font-size       : 1.4rem;
 }
 
+h2, h3, h4 {
+	margin          : 1em 0 0em 0;
+}
+
 h2 {
-	margin          : 1em 0 0.25em 0;
 	font-size       : 1.3rem;
 }
 
 h3 {
-	margin          : 1em 0 0.25em 0;
 	font-size       : 1.0rem;
 }
 
 h4 {
-	margin          : 1em 0 0.25em 0;
 	font-size       : 0.9rem;
 }
 
@@ -103,6 +110,14 @@ p, li {
 
 #main p, #main li {
 	text-align      : justify;
+	overflow-wrap   : break-word;
+	word-wrap       : break-word;
+	-ms-word-break  : break-word;
+	word-break      : break-word;
+	-ms-hyphens     : auto;
+	-moz-hyphens    : auto;
+	-webkit-hyphens : auto;
+	hyphens         : auto;
 }
 
 code {
@@ -113,14 +128,14 @@ code {
 }
 
 pre {
-	background-color: #efefef;
+	background-color: #fafafa;
 	padding         : 1em;
 	overflow        : auto;
 }
 
 pre code {
 	font-size       : 0.9rem;
-	background-color: none;
+	background-color: inherit !important;
 	padding         : 0;
 }
 
@@ -133,11 +148,9 @@ pre code {
 
 #nav {
 	background-color: #ffffff;
-/*	float           : left;*/
 	margin          : 0 1px 0 0;
 	padding         : 1em 0;
-	line-height     : 1.5em;
-	border-right    : 1px dotted #ccc;
+	border-right    : 1px solid #f4f4f4;
 	width           : 15em;
 }
 
@@ -168,7 +181,8 @@ pre code {
 	display         : block;
 	margin          : 0;
 	padding         : 0.2em 2em;
-	line-height     : 1.65em;
+	font-family     : sans-serif;
+	font-size       : .9em;
 }
 
 /* keep link hover over full width, first level */
@@ -187,7 +201,7 @@ pre code {
 }
 
 #nav li a:hover {
-	background-color: #eee;
+	background-color: #f4f4f4;
 	text-decoration : none;
 }
 
@@ -197,16 +211,17 @@ pre code {
 }
 
 #main {
-	margin          : 0 0 0 200px;
-	padding         : 1.5em;
-	max-width       : 50em;
+/*	margin          : 0 0 0 200px;*/
+	padding         : 0 1.5em;
+/*	max-width       : 50em;*/
 }
 
 #footer {
 	clear           : both;
 	color           : #666;
-	border-top      : 1px solid #ccc;
+	border-top      : 1px solid #f4f4f4;
 	font-size       : 0.85em;
+	font-family     : monospace;
 	line-height     : 1.7em;
 	padding         : 1em;
 	margin          : 0 0 1.5em 0;
@@ -261,7 +276,7 @@ span.right {
 }
 
 .articles ul {
-	width           : 50em;
+/*	width           : 50em;*/
 	margin          : 0;
 	padding         : 0;
 }
@@ -270,17 +285,12 @@ span.right {
 	list-style      : none;
 	padding         : 0;
 	margin          : 0;
-	font-size       : small;
-	color           : #999;
-}
-
-.articles li a {
-	font-size       : initial;
 }
 
-a.twtxt {
+a.twtxt, a.source {
 	display         : block;
 	background      : none no-repeat 0.7em center;
+	background-size : 0.95em;
 	padding         : 0.2em 0 0.2em 2em !important;
 	margin          : 0;
 }
@@ -289,11 +299,15 @@ a.twtxt {
 	background-image: url("./twtxt.svg");
 }
 
+a.source {
+	display         : none !important;
+	background-image: url("./source.svg");
+}
+
 ul.repo-log {
 	list-style-type : none;
-	margin          : 0;
+	margin          : 1em 0;
 	padding         : 0;
-	line-height     : 1.5em;
 }
 
 ul.repo-log li {
@@ -309,9 +323,10 @@ ul.repo-log li .log-date {
 
 /* table of contents */
 .toc {
-	background-color: #f3f1f9;
+	background-color: #f6f7fa;
 	padding         : 0.5em 2em 2em;
 	overflow        : auto;
+	font-family     : sans-serif;
 }
 
 .toc .toc-title {
@@ -375,10 +390,19 @@ dl>dt {
 #hamburger { display: none; }
 #hamburger ~ label { display: none; }
 @media screen and (max-width: 768px) {
+	table,
+	table tbody,
+	table tr,
+	table tr td { display: block !important; }
 	#burger-wrapper { display: none; }
 	#nav {
 		width       : auto;
 		max-width   : 15em;
+		border      : none;
+		padding     : 0;
+	}
+	#main {
+		padding         : 0 0.5em;
 	}
 	#hamburger ~ label {
 		display     : block;
@@ -386,12 +410,17 @@ dl>dt {
 		background  : white;
 		font-style  : normal;
 		text-align  : center;
-		font-size   : 1.2em;
-		padding     : 10px;
+		font-size   : 1.4rem;
+		padding     : .45em .6em;
 		user-select : none;
 		cursor      : pointer;
-	}
 
+		position    : absolute;
+		position    : fixed;
+		top         : 0;
+		right       : 0;
+		z-index     : 999;
+	}
 	#hamburger ~ label:before { content: "\2630" }
 	#hamburger:checked ~ label:before { content: "\2A09" }
 	#hamburger:checked ~ #burger-wrapper { display: block; }
@@ -399,4 +428,30 @@ dl>dt {
 		color       : white;
 		background  : black;
 	}
+	#hamburger ~ #burger-wrapper {
+		width       : 100%;
+		position    : fixed;
+		font-size   : 1.4rem;
+		top         : 2.3em;
+		bottom      : 0;
+		left        : 0;
+		padding     : 0.5em 0;
+		background  : #fff;
+		overflow-x  : scroll;
+	}
+	#header {
+		width       : 100%;
+		position    : fixed;
+		top         : 0;
+		z-index     : 998;
+	}
+	#content {
+		margin      : 2.75em 0 0 0;
+	}
+	#header-source {
+		display     : none;
+	}
+	a.twtxt, a.source {
+		display         : block !important;
+	}
 }