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: 486a3d2eb21599fdb78aa7c3ead2288f205dec6c
parent: 5ef7495fece308c26e8153c300664e6edd228d95
author: Chris Noxz <chris@noxz.tech>
date:   Wed, 24 Aug 2022 13:56:53 +0200
design changes to article header and tags
Mbuild20++-
Mconfig/www.conf7+-
Mnoxz.tech/articles/askpass_implementation_for_doas/.metadata1+
Mnoxz.tech/articles/crossing_out_expressions_in_eqn/.metadata1+
Mnoxz.tech/articles/deduplication_of_my_nas/.metadata1+
Mnoxz.tech/articles/divisibility_theorems_and_fraction_flipping/.metadata1+
Mnoxz.tech/articles/missing_gui_in_geogebra/.metadata1+
Mnoxz.tech/articles/moving_from_my_hacked_readynas_to_a_raspberry_pi/.metadata1+
Mnoxz.tech/articles/sic_collection_of_papers_on_troff_and_its_companions/.metadata1+
Mnoxz.tech/articles/sic_free_software_in_education/.metadata1+
Mnoxz.tech/articles/simple_groff_compiler_for_vim/.metadata1+
Mnoxz.tech/articles/simple_way_to_filter_email/.metadata1+
Mnoxz.tech/articles/srfinder/.metadata1+
Mnoxz.tech/articles/the_lenovo_thinkpad_t400/.metadata1+
Mnoxz.tech/articles/vi_indicator_for_loksh/.metadata1+
Mnoxz.tech/articles/writing_a_resume_in_groff/.metadata1+
Mnoxz.tech/articles/your_disk_is_full_and_empty/.metadata1+
Mnoxz.tech/pub/.assemble2+
Anoxz.tech/pub/author.svg113++++++++++++++++
Anoxz.tech/pub/date.svg138++++++++++++++++++++
Mnoxz.tech/pub/style.css71+++++++++-
21 files changed, 354 insertions(+), 12 deletions(-)
diff --git a/build b/build
@@ -290,19 +290,29 @@ render_articles() {
 prerender() {
 	base_path="${SITE_WWW%/*}"
 	title=""
+	author=""
 	date=""
 
 	[ -f "${base_path}"/.metadata ] && while read -r line; do
 		case "$line" in
 		\.ds\ TITLE*)   title="$(echo ${line#*TITLE})";;
 		\.ds\ DATE*)    date="$(echo ${line#*DATE})";;
+		\.ds\ AUTHOR*)  author="$(echo ${line#*AUTHOR})";;
 		esac
 		printf '%s\n' "${line}"
 	done < "${base_path}"/.metadata
 
 	[ -n "$title" ] && printf '.HnS 0\n\\*[TITLE]\n.HnE\n\n'
+	[ -n "$author" ] && printf '.P article-author\n\\*[AUTHOR]\n\n'
 	[ -n "$date" ] && printf '.P article-date\n\\*[DATE]\n\n'
 
+	# print tags, if existing, at bottom of page
+	[ -f "${base_path}"/.tags ] \
+		&& printf '\n.DIVS wrap-list\n.ULS\n' \
+		&& while read -r tag; do
+		printf '.LI\n.CLURL "../tags/%s" art-tag "%s"\n' "${tag}" "${tag}"
+	done < "${base_path}"/.tags && printf '.ULE\n.DIVE\n'
+
 	cat - | while read -r line; do
 		if echo "${line}" | grep -E '\{:articles(#[^#]*)?:\}' 2>/dev/null 1>&2; then
 			render_articles "$1"                                            \
@@ -311,11 +321,6 @@ prerender() {
 			printf '%s\n' "${line}"
 		fi
 	done
-
-	# print tags, if existing, at bottom of page
-	[ -f "${base_path}"/.tags ] && printf '\ntags:\n' && while read -r tag; do
-		printf '.URL "../tags/%s" "#%s"\n' "${tag}" "${tag}"
-	done < "${base_path}"/.tags
 }
 
 render_main_content() {
@@ -976,6 +981,7 @@ main() {
 		echo "index.html" > "${1}"/articles/tags/.assemble
 		echo ".ds TITLE   Tags" > "${1}"/articles/tags/.metadata
 
+		printf '.DIVS wrap-list\n.ULS\n' > "${1}"/articles/tags/index.www
 		# manage tags
 		find "${1}"/articles -name .tags -exec cat {} \; | sort -u | while read -r tag
 		do
@@ -987,10 +993,12 @@ main() {
 			echo ".ds TITLE   #${tag}" > "${1}"/articles/tags/${tag}/.metadata
 
 			# append tag to tags page
-			printf '.ARTTAG %s %s\n'                                           \
+			printf '.LI\n.ARTTAG %s %s\n'                                           \
 				"${tag}" "$(grep ^${tag}$ "${1}"/articles/*/.tags | wc -l)" \
 				>> "${1}"/articles/tags/index.www
 		done
+		printf '.ULE\n' >> "${1}"/articles/tags/index.www
+		printf '.DIVE\n' >> "${1}"/articles/tags/index.www
 		print_done
 
 		# main render, executes sub render (see below)
diff --git a/config/www.conf b/config/www.conf
@@ -16,6 +16,11 @@
 .       www-emit-ltag dd
 .   \}
 ..
+.de CLURL
+.   ie \\n[www-html] \{\
+.       HTML <a href="\\$1" class="\\$2">\\$3</a>
+.   \}
+..
 .de UIMG
 .   ie \\n[www-html] \{\
 .       HTML <a href="\\$1"><img src="\\$2" alt="\\$3" /></a>
@@ -76,7 +81,7 @@
 ..
 .de ARTTAG
 .   ie \\n[www-html] \{\
-.       HTML <span class="art-tag"><a href="\\$1">\\$1</a> (\\$2)</span>\\$3
+.       HTML <a class="art-tag" href="\\$1">\\$1 <span>\\$2</span></a>\\$3
 .   \}
 ..
 .\" --------------------------------------------------------------------------
diff --git a/noxz.tech/articles/askpass_implementation_for_doas/.metadata b/noxz.tech/articles/askpass_implementation_for_doas/.metadata
@@ -3,3 +3,4 @@
 .ds DAY     20
 .ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
 .ds TITLE   Askpass implementation for doas
+.ds AUTHOR  Chris Noxz
diff --git a/noxz.tech/articles/crossing_out_expressions_in_eqn/.metadata b/noxz.tech/articles/crossing_out_expressions_in_eqn/.metadata
@@ -3,3 +3,4 @@
 .ds DAY     29
 .ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
 .ds TITLE   Crossing out expressions in eqn
+.ds AUTHOR  Chris Noxz
diff --git a/noxz.tech/articles/deduplication_of_my_nas/.metadata b/noxz.tech/articles/deduplication_of_my_nas/.metadata
@@ -3,3 +3,4 @@
 .ds DAY     22
 .ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
 .ds TITLE   Deduplication of my NAS
+.ds AUTHOR  Chris Noxz
diff --git a/noxz.tech/articles/divisibility_theorems_and_fraction_flipping/.metadata b/noxz.tech/articles/divisibility_theorems_and_fraction_flipping/.metadata
@@ -3,3 +3,4 @@
 .ds DAY     21
 .ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
 .ds TITLE   Divisibility theorems and fraction flipping
+.ds AUTHOR  Chris Noxz
diff --git a/noxz.tech/articles/missing_gui_in_geogebra/.metadata b/noxz.tech/articles/missing_gui_in_geogebra/.metadata
@@ -3,3 +3,4 @@
 .ds DAY     25
 .ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
 .ds TITLE   Missing GUI in GeoGebra
+.ds AUTHOR  Chris Noxz
diff --git a/noxz.tech/articles/moving_from_my_hacked_readynas_to_a_raspberry_pi/.metadata b/noxz.tech/articles/moving_from_my_hacked_readynas_to_a_raspberry_pi/.metadata
@@ -3,3 +3,4 @@
 .ds DAY     27
 .ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
 .ds TITLE   Moving from my hacked ReadyNAS to a Raspberry Pi
+.ds AUTHOR  Chris Noxz
diff --git a/noxz.tech/articles/sic_collection_of_papers_on_troff_and_its_companions/.metadata b/noxz.tech/articles/sic_collection_of_papers_on_troff_and_its_companions/.metadata
@@ -3,3 +3,4 @@
 .ds DAY     16
 .ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
 .ds TITLE   SiC: Collection of papers on troff and its companions
+.ds AUTHOR  Chris Noxz
diff --git a/noxz.tech/articles/sic_free_software_in_education/.metadata b/noxz.tech/articles/sic_free_software_in_education/.metadata
@@ -3,3 +3,4 @@
 .ds DAY     24
 .ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
 .ds TITLE   SiC: Free Software in education
+.ds AUTHOR  Chris Noxz
diff --git a/noxz.tech/articles/simple_groff_compiler_for_vim/.metadata b/noxz.tech/articles/simple_groff_compiler_for_vim/.metadata
@@ -3,3 +3,4 @@
 .ds DAY     26
 .ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
 .ds TITLE   Simple groff compiler for vim
+.ds AUTHOR  Chris Noxz
diff --git a/noxz.tech/articles/simple_way_to_filter_email/.metadata b/noxz.tech/articles/simple_way_to_filter_email/.metadata
@@ -3,3 +3,4 @@
 .ds DAY     11
 .ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
 .ds TITLE   Simple way to filter email
+.ds AUTHOR  Chris Noxz
diff --git a/noxz.tech/articles/srfinder/.metadata b/noxz.tech/articles/srfinder/.metadata
@@ -3,3 +3,4 @@
 .ds DAY     04
 .ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
 .ds TITLE   Srfinder
+.ds AUTHOR  Chris Noxz
diff --git a/noxz.tech/articles/the_lenovo_thinkpad_t400/.metadata b/noxz.tech/articles/the_lenovo_thinkpad_t400/.metadata
@@ -3,3 +3,4 @@
 .ds DAY     14
 .ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
 .ds TITLE   The Lenovo Thinkpad T400
+.ds AUTHOR  Chris Noxz
diff --git a/noxz.tech/articles/vi_indicator_for_loksh/.metadata b/noxz.tech/articles/vi_indicator_for_loksh/.metadata
@@ -3,3 +3,4 @@
 .ds DAY     09
 .ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
 .ds TITLE   Vi indicator for loksh
+.ds AUTHOR  Chris Noxz
diff --git a/noxz.tech/articles/writing_a_resume_in_groff/.metadata b/noxz.tech/articles/writing_a_resume_in_groff/.metadata
@@ -3,3 +3,4 @@
 .ds DAY     23
 .ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
 .ds TITLE   Writing a resume in groff
+.ds AUTHOR  Chris Noxz
diff --git a/noxz.tech/articles/your_disk_is_full_and_empty/.metadata b/noxz.tech/articles/your_disk_is_full_and_empty/.metadata
@@ -3,3 +3,4 @@
 .ds DAY     14
 .ds DATE    \*[MONTH] \*[DAY], \*[YEAR]
 .ds TITLE   Your disk is full and empty
+.ds AUTHOR  Chris Noxz
diff --git a/noxz.tech/pub/.assemble b/noxz.tech/pub/.assemble
@@ -2,6 +2,8 @@ logo.black.svg
 logo.svg
 twtxt.svg
 source.svg
+author.svg
+date.svg
 logo.png
 style.css
 chrisnoxz.pub
diff --git a/noxz.tech/pub/author.svg b/noxz.tech/pub/author.svg
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   enable-background="new 0 0 30 30"
+   width="16"
+   height="16"
+   version="1.1"
+   viewBox="0 0 40 40"
+   xml:space="preserve"
+   id="svg189"
+   sodipodi:docname="author.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="defs193"><inkscape:path-effect
+     effect="powermask"
+     id="path-effect7381"
+     is_visible="true"
+     lpeversion="1"
+     uri="#mask-powermask-path-effect7381"
+     invert="false"
+     hide_mask="false"
+     background="true"
+     background_color="#ffffffff" /><inkscape:path-effect
+     effect="powermask"
+     id="path-effect6659"
+     is_visible="true"
+     lpeversion="1"
+     uri="#mask-powermask-path-effect6659"
+     invert="false"
+     hide_mask="false"
+     background="true"
+     background_color="#ffffffff" /><inkscape:path-effect
+     effect="powermask"
+     id="path-effect5929"
+     is_visible="true"
+     lpeversion="1"
+     uri="#mask-powermask-path-effect5929"
+     invert="false"
+     hide_mask="false"
+     background="true"
+     background_color="#ffffffff" /><mask
+     maskUnits="userSpaceOnUse"
+     id="mask-powermask-path-effect7381"><g
+       id="g7379"
+       style=""><rect
+         style="fill:#000000;fill-opacity:1;stroke-width:8.56105;stroke-dasharray:25.6834, 8.56105"
+         id="rect7367"
+         width="5"
+         height="5"
+         x="5"
+         y="15" /><rect
+         style="fill:#000000;fill-opacity:1;stroke-width:8.56105;stroke-dasharray:25.6834, 8.56105"
+         id="rect7369"
+         width="5"
+         height="5"
+         x="15"
+         y="15" /><rect
+         style="fill:#000000;fill-opacity:1;stroke-width:8.56105;stroke-dasharray:25.6834, 8.56105"
+         id="rect7371"
+         width="5"
+         height="5"
+         x="25"
+         y="15" /><rect
+         style="fill:#000000;fill-opacity:1;stroke-width:8.56105;stroke-dasharray:25.6834, 8.56105"
+         id="rect7373"
+         width="5"
+         height="5"
+         x="5"
+         y="25" /><rect
+         style="fill:#000000;fill-opacity:1;stroke-width:8.56105;stroke-dasharray:25.6834, 8.56105"
+         id="rect7375"
+         width="5"
+         height="5"
+         x="15"
+         y="25" /><rect
+         style="fill:#000000;fill-opacity:1;stroke-width:8.56105;stroke-dasharray:25.6834, 8.56105"
+         id="rect7377"
+         width="5"
+         height="5"
+         x="25"
+         y="25" /></g></mask></defs><sodipodi:namedview
+   id="namedview191"
+   pagecolor="#ffffff"
+   bordercolor="#999999"
+   borderopacity="1"
+   inkscape:pageshadow="0"
+   inkscape:pageopacity="0"
+   inkscape:pagecheckerboard="0"
+   showgrid="false"
+   inkscape:zoom="22.627417"
+   inkscape:cx="1.6572815"
+   inkscape:cy="4.7287766"
+   inkscape:current-layer="g187"
+   width="16px" />
+<g
+   id="g187">
+
+
+
+
+<g
+   style="fill:none"
+   id="g7524"
+   transform="matrix(0.08239531,0,0,0.08239531,-1.0916935,-1.0539653)"><path
+     d="m 270.397,234.64 c 59.287,0 107.35,-48.049 107.35,-107.32 C 377.747,68.0488 329.684,20 270.397,20 c -59.288,0 -107.35,48.0488 -107.35,107.32 0,59.271 48.062,107.32 107.35,107.32 z"
+     fill="#000000"
+     id="path7512" /><path
+     d="m 404.867,290.98 c -18.637,-19.604 -43.929,-31.535 -70.91,-33.45 -52.471,-3.31 -105.099,-3.31 -157.57,0 -26.57,1.931 -51.46,13.719 -69.79,33.05 -18.0007,18.987 -27.8968,44.239 -27.5901,70.4 0,81.77 94.5001,127.06 178.7101,129.74 h 6.08 c 82.16,4.63 169.16,-40.03 169.16,-119.87 v -8.37 c 0.299,-26.581 -9.778,-52.231 -28.09,-71.5 z"
+     fill="#000000"
+     id="path7514" /></g></g>
+</svg>
diff --git a/noxz.tech/pub/date.svg b/noxz.tech/pub/date.svg
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   enable-background="new 0 0 30 30"
+   width="16"
+   height="16"
+   version="1.1"
+   viewBox="0 0 40 40"
+   xml:space="preserve"
+   id="svg189"
+   sodipodi:docname="date.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="defs193"><inkscape:path-effect
+     effect="powermask"
+     id="path-effect7381"
+     is_visible="true"
+     lpeversion="1"
+     uri="#mask-powermask-path-effect7381"
+     invert="false"
+     hide_mask="false"
+     background="true"
+     background_color="#ffffffff" /><inkscape:path-effect
+     effect="powermask"
+     id="path-effect6659"
+     is_visible="true"
+     lpeversion="1"
+     uri="#mask-powermask-path-effect6659"
+     invert="false"
+     hide_mask="false"
+     background="true"
+     background_color="#ffffffff" /><inkscape:path-effect
+     effect="powermask"
+     id="path-effect5929"
+     is_visible="true"
+     lpeversion="1"
+     uri="#mask-powermask-path-effect5929"
+     invert="false"
+     hide_mask="false"
+     background="true"
+     background_color="#ffffffff" /><mask
+     maskUnits="userSpaceOnUse"
+     id="mask-powermask-path-effect7381"><path
+       id="mask-powermask-path-effect7381_box"
+       style="fill:#ffffff;fill-opacity:1"
+       d="M -1,9 H 36 V 36 H -1 Z" /><g
+       id="g7379"
+       style=""><rect
+         style="fill:#000000;fill-opacity:1;stroke-width:8.56105;stroke-dasharray:25.6834, 8.56105"
+         id="rect7367"
+         width="5"
+         height="5"
+         x="5"
+         y="15"
+         d="m 5,15 h 5 v 5 H 5 Z" /><rect
+         style="fill:#000000;fill-opacity:1;stroke-width:8.56105;stroke-dasharray:25.6834, 8.56105"
+         id="rect7369"
+         width="5"
+         height="5"
+         x="15"
+         y="15"
+         d="m 15,15 h 5 v 5 h -5 z" /><rect
+         style="fill:#000000;fill-opacity:1;stroke-width:8.56105;stroke-dasharray:25.6834, 8.56105"
+         id="rect7371"
+         width="5"
+         height="5"
+         x="25"
+         y="15"
+         d="m 25,15 h 5 v 5 h -5 z" /><rect
+         style="fill:#000000;fill-opacity:1;stroke-width:8.56105;stroke-dasharray:25.6834, 8.56105"
+         id="rect7373"
+         width="5"
+         height="5"
+         x="5"
+         y="25"
+         d="m 5,25 h 5 v 5 H 5 Z" /><rect
+         style="fill:#000000;fill-opacity:1;stroke-width:8.56105;stroke-dasharray:25.6834, 8.56105"
+         id="rect7375"
+         width="5"
+         height="5"
+         x="15"
+         y="25"
+         d="m 15,25 h 5 v 5 h -5 z" /><rect
+         style="fill:#000000;fill-opacity:1;stroke-width:8.56105;stroke-dasharray:25.6834, 8.56105"
+         id="rect7377"
+         width="5"
+         height="5"
+         x="25"
+         y="25"
+         d="m 25,25 h 5 v 5 h -5 z" /></g></mask><filter
+     id="mask-powermask-path-effect7381_inverse"
+     inkscape:label="filtermask-powermask-path-effect7381"
+     style="color-interpolation-filters:sRGB"
+     height="100"
+     width="100"
+     x="-50"
+     y="-50"><feColorMatrix
+       id="mask-powermask-path-effect7381_primitive1"
+       values="1"
+       type="saturate"
+       result="fbSourceGraphic" /><feColorMatrix
+       id="mask-powermask-path-effect7381_primitive2"
+       values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
+       in="fbSourceGraphic" /></filter></defs><sodipodi:namedview
+   id="namedview191"
+   pagecolor="#ffffff"
+   bordercolor="#999999"
+   borderopacity="1"
+   inkscape:pageshadow="0"
+   inkscape:pageopacity="0"
+   inkscape:pagecheckerboard="0"
+   showgrid="false"
+   inkscape:zoom="32"
+   inkscape:cx="1.015625"
+   inkscape:cy="7.40625"
+   inkscape:current-layer="g187"
+   width="16px" />
+<g
+   id="g187">
+
+
+
+
+<path
+   style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+   d="M 0,7.5 V 2.4999999 H 5 V 1.3e-7 L 10,0 V 2.5 H 25 V 0 l 5,1.3e-7 V 2.4999999 h 5 V 7.5 Z"
+   id="path818"
+   sodipodi:nodetypes="ccccccccccccc" /><path
+   style="fill:#000000;fill-opacity:0.80000001;stroke:none;stroke-width:2.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+   d="M 0,10 V 35 H 35 V 10 Z"
+   id="path2505"
+   mask="url(#mask-powermask-path-effect7381)"
+   sodipodi:nodetypes="ccccc"
+   inkscape:path-effect="#path-effect7381"
+   inkscape:original-d="M 0,10 V 35 H 35 V 10 Z" /></g>
+</svg>
diff --git a/noxz.tech/pub/style.css b/noxz.tech/pub/style.css
@@ -263,16 +263,77 @@ span.right {
 	text-align      : right;
 }
 
+#main p.article-author, #main p.article-date {
+	background      : none no-repeat 0rem center;
+	padding-left    : 1.5rem;
+	display         : inline-block;
+	font-family     : sans-serif;
+	font-size       : 90%;
+	line-height     : 1.5;
+	margin          : 0 1.5rem 0 0;
+}
+
 #main p.article-date {
-	color           : #666;
-	font-size       : .8em;
-	line-height     : 0;
-	margin-bottom   : 2em;
+	background-image: url("./date.svg");
+}
+
+#main p.article-author {
+	background-image: url("./author.svg");
+}
+
+#main p.article-date ~ .wrap-list {
+	margin-top      : -.5em;
+}
+
+.wrap-list>ul {
+	flex-wrap       : wrap !important;
+	display         : flex !important;
+	padding-left    : 0;
+	list-style      : none;
+	box-sizing      : border-box;
+}
+
+.wrap-list>ul>li {
+	margin-right    : 0.5rem !important;
+	margin-top      : 0.5rem !important;
+	box-sizing      : border-box;
 }
 
 .art-tag {
+	display         : inline-block;
 	background      : #fafafa;
-	padding         : 0.2em 0.4em;
+	padding         : 0.25rem 0.5rem;
+	font-family     : sans-serif;
+	font-size       : 90%;
+	line-height     : 1.5;
+	border-radius   : 0.25rem;
+	text-align      : center;
+	vertical-align  : middle;
+}
+
+.art-tag>span {
+	display         : inline-block;
+	background      : #444;
+	color           : #fafafa;
+	padding         : 0.25em 0.4em;
+	font-size       : 65%;
+	font-weight     : 700;
+	line-height     : 1;
+	text-align      : center;
+	white-space     : nowrap;
+	vertical-align  : middle;
+	border-radius   : 0.25rem;
+}
+
+.art-tag:hover {
+	text-decoration : none;
+	background      : #005386;
+	color           : #fafafa;
+}
+
+.art-tag:hover>span {
+	background      : #fafafa;
+	color           : #444;
 }
 
 .spoiler {