changeset 0:edf035b5437a

It starts with
author yakumo_izuru
date Fri, 30 May 2025 19:26:52 -0300
parents
children 998d5e743163
files Makefile README.md site/.aya/layout.html site/.aya/menu.html site/.aya/upload site/about/index.md site/css/font.css site/css/menu.css site/css/windowmaker.css site/favicon.ico site/fonts/ArialPixel.ttf site/friends/index.md site/img/banners/netbsd.png site/img/banners/yakumolabs.png site/img/close.png site/img/minimize.png site/img/reimu.jpg site/img/reimu_mobile.jpg site/img/yukari.jpg site/img/yukari_mobile.jpg site/index.md site/members/index.md site/privacy/index.md site/register/index.md site/staff/index.md site/terms/index.md
diffstat 26 files changed, 893 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,12 @@
+all:
+	@echo "Available targets"
+.for i in build clean serve
+	@echo "* ${i}"
+.endfor
+build:
+	@cd site; aya build
+clean:
+	@cd site; aya clean
+serve:
+	@cd site; aya serve
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README.md	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,24 @@
+# 〜八雲研究室〜
+
+The place where we revere, praise, and fear Yukari Yakumo.
+
+## Building
+### Prerequisites
+* [aya](https://suzunaan.yakumo.dev/aya)
+
+### Instructions
+```shell
+$ cd site
+$ aya build
+```
+## Caveats
+* Dark mode on smartphones will not trigger the Yukari wallpaper
+
+## Credits
+The primary layout was directly inspired by the Counter-Strike and Half-Life video games, while
+the secondary one was stolen from WindowMaker.
+
+### Artwork
+* [Reimu Hakurei by @Ryogo_PL](https://www.pixiv.net/member_illust.php?mode=medium&illust_id=62937256)
+* [Yukari Yakumo by bakanoe](https://www.pixiv.net/member_illust.php?mode=medium&illust_id=44402951)
+* [Yukari Yakumo by jan@C95日曜東ラ29a](https://www.pixiv.net/member_illust.php?mode=medium&illust_id=71565780)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/site/.aya/layout.html	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <link rel="icon" href="/favicon.ico">
+    <link rel="stylesheet" href="/css/windowmaker.css">
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    <meta name="author" content="Izuru Yakumo (八雲イズル)">
+    <meta name="description" content="{{ description }}">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <title>{{ title }}</title>
+  </head>
+  <body>
+    <div id="wrapper">
+      <article>
+	{{ content }}
+      </article>
+      <div id="titlebar">
+	<div id="minimize"></div>
+	<div id="titlebar-inner">{{ title }}</div>
+	<a href="/"><div id="close"></div></a>
+      </div>
+      <div id="resizebar">
+	<div id="resizebar"></div>
+	<div id="resizebar-inner"></div>
+      </div>
+      <div id="resizer"></div>
+    </div>
+  </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/site/.aya/menu.html	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <link rel="icon" href="/favicon.ico">
+    <link rel="stylesheet" href="/css/menu.css">
+    <meta name="author" content="Izuru Yakumo (八雲イズル)">
+    <meta name="description" content="Where reality blends with fantasy and insanity">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <title>〜八雲研究室〜 [Yakumo Laboratories]</title>
+  </head>
+  <body>
+    <div class="content">
+      <div class="menu">
+	<a href="/about/">About</a><br>
+	<a href="/friends/">Friends</a><br>
+	<a href="/members/">Members</a><br>
+	<a href="/privacy/">Privacy policy</a><br>
+	<a href="/register/">Register</a><br>
+	<a href="https://docs.yakumo.dev/wiki/Services" target="_blank">Services</a><br>
+	<a href="/staff/">Staff</a><br>
+	<a href="/terms/">Terms of service</a>
+	<br>
+	<br>
+	<a href="/">
+	  <img src="/img/banners/yakumolabs.png">
+	</a>
+	<a href="http://www.netbsd.org" target="_blank" class="powered_by">
+	  <img src="/img/banners/netbsd.png" alt="Powered by NetBSD">
+	</a>
+      </div>
+      <div class="footer">
+	<p>
+	  This website has been made using <a href="https://suzunaan.yakumo.dev/aya" target="_blank">Aya</a>, the fastest static site generator
+	  <br>
+	  Source code hosted on <a href="https://svn.yakumo.dev/repo/homepage" target="_blank">Subversion</a>
+	  <br>
+	  Copyright &copy; 2022-2025 Izuru Yakumo (八雲イズル)
+	</p>
+      </div>
+    </div>
+  </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/site/.aya/upload	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,3 @@
+#!/bin/sh
+# $YakumoLabs$
+/usr/bin/env rsync -acv --del ${AYA_OUTDIR}/ www@s1.yakumo.dev:/var/www/yakumo.dev
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/site/about/index.md	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,25 @@
+---
+title: About
+---
+
+This was a box barely maintained beyond a Minecraft server (which has been closed down since), which is hosted on the boundary between
+two somewhat conflicting but coexisting worlds, for the time span of over two years...
+
+...until [Izuru Yakumo](https://mugen-no-ryouiki.yakumo.dev) (at that point in time, going by another nickname no one must know)
+was granted access by the sole dictator of the [Kallist Society Texhnolyzers](https://kalli.st), around March 2023.
+
+It kept running [Arch Linux](https://archlinux.org) until it was migrated to [FreeBSD](https://freebsd.org) in September of that year, 
+in hopes of having more stability, and a well-deserved break from the unbearable madness that Linux systems are.
+
+Around the same month, [the very well-known evil spirit who had repeteadly been sealed away](https://mima-sama.yakumo.dev) by the [Hakurei Shrine](https://hakureishrine.yakumo.dev) [maiden](https://en.touhouwiki.net/wiki/Reimu_Hakurei),
+arrived and became an active member, later promoted to be an administrator in December 8.
+
+By the next year, there were a few major changes, such as migrating [Makai](https://makai.chaotic.ninja) to the now former Minecraft server, and several other people joined and eventually promoted.
+
+As of September 2024, almost a year since the migration to FreeBSD, the server was migrated once again to [NetBSD](https://netbsd.org),
+but its success rate was mixed, because the [hosting provider](https://contabo.com) refuses to fix IPv6 on the datacenter this server lives on, and has been broken since.
+
+Two months later, a new domain name has been acquired, thanks to the [toofast.vip owner](https://the8woodcutter.sh),
+and nearly every subdomain on [chaotic.ninja](https://chaotic.ninja) has been migrated to yakumo.dev, in fears of chaotic.ninja ceasing to exist.
+
+Currently, the chaotic.ninja torch was passed to Mima, who remains as its ruler, while the rest of the crew, moved to yakumo.dev.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/site/css/font.css	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,5 @@
+@font-face {	
+    	font-family: 'ArialPixel';	    
+    	src: url('/fonts/ArialPixel.ttf') format('truetype');	
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/site/css/menu.css	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,99 @@
+/*
+ * ----------------------------------------------------------------------------
+ * "THE BEER-WARE LICENSE" (Revision 42.1+yakumolabs):
+ * <eternal-servant@yakumo.dev> wrote this file. As long as you retain this notice you
+ * can do whatever you want with this stuff. If we meet some day, and you think
+ * this stuff is worth it, you can buy me a Yukari Yakumo fumo (or related merch) in return Izuru Yakumo
+ * ----------------------------------------------------------------------------
+ */
+
+/*
+ * This is a hand-written layout which aims to replicate the user interface of
+ * GoldSrc-based game menus as much as possible.
+ * It contains a lot of hacks just to make stuff work.
+ * Mobile support is a non-goal (it works, but wallpaper doesn't fit for obvious reasons)
+ */
+
+@import "/css/font.css";
+
+/*
+ * Color schemes (Human mode)
+ */
+:root {
+	--bg: #ffffff;
+	--fg: #000000;
+	--link: #000000;
+	--link-hover: #800080;
+	--link-visited: #ff0000;
+	--border: #9d9d9d;
+}
+
+body {
+    background-image: url('/img/reimu.jpg');
+    background-position: 40% 10%;
+    background-repeat: no-repeat;
+    background-color: var(--bg);
+    font-family: 'ArialPixel', sans-serif;
+    font-weight: bold;
+}
+div.content {
+    color: var(--fg);
+}
+.menu {
+    position: absolute;
+    text-align: justified;
+    float: left;
+    bottom: 2px;
+    left: 5px;
+    right: 30px;
+    top: 420px;
+}
+.menu a {
+    color: var(--link);
+}
+.menu a:hover {
+    color: var(--link-hover);
+}
+.menu a:visited {
+    color: var(--link-visited);
+}
+.footer {
+    margin-top: 85ch;
+    position: relative;
+    text-align: center;
+}
+.powered_by {
+	float: right;
+}
+
+@media(prefers-color-scheme: dark) {
+    /*
+     * Color schemes (Youkai mode)
+     */
+    :root {
+	--bg: #000000;
+	--fg: #ffffff;
+	--link: #ffffff;
+	--link-hover: #ffd700;
+	--link-visited: #ffa500;
+	--border: #494949;
+    }
+    body {
+	background-image: url('/img/yukari.jpg');
+	background-position: 35% 35%;
+    }
+}
+@media screen and (max-width: 600px) {
+	body {
+		background-image: url('/img/reimu_mobile.jpg');
+	}
+	.footer {
+		display: none
+	}
+	.menu {
+		font-size: 20px;
+	}
+	.powered_by {
+		display: none;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/site/css/windowmaker.css	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,527 @@
+@import "/css/font.css";
+
+html {
+    margin: 0;
+    padding: 0;
+}
+
+body {
+    margin: 0;
+    padding: 0;
+    background-image: url('/img/reimu.jpg');
+    background-position: 40% 10%;
+    background-color: white;
+    font-family: "ArialPixel";
+}
+
+header {
+    padding: 1em;
+    margin-top: 0;
+    margin-bottom: 0;
+    padding-bottom: 0;
+}
+
+h1 {font-size: 1.7em}
+a:link {color: #1e527e}
+a:hover {color: #2c7abc}
+a:visited {color: #371e7e}
+a:visited {color: #574882}
+img {max-width: 100%}
+
+pre {
+    color: #dddddd;
+    overflow-x: auto;
+    padding: 0.3em;
+}
+
+.caption {
+    font-style: italic;
+    font-size: 0.8em;
+    line-height: 5px;
+    margin-bottom: 3em;
+}
+
+.caption {text-align: center}
+
+.center:not(.section), .center>h1, .center>h2{ text-align: center }
+
+p.screenshot a img {
+    border: 1px solid black;
+    box-shadow: 3px 7px 7px #606060;
+    top: 0;
+    bottom:0;
+    left: 0;
+    right:0;
+    margin: auto;
+}
+
+/* guided tour */
+
+#window-maker h1.title { text-align: center }
+#window-maker #guided-tour img {
+    display:block;
+    margin-left: auto;
+    margin-right: auto;
+}
+
+/* gallery */
+
+p.gallery {
+    float: left;
+    margin: 5px;
+    width: 300px;
+}
+
+p.gallery a img {
+    border: 1px solid black;
+    box-shadow: 3px 7px 7px #606060;
+    top: 0;
+    bottom:0;
+    left: 0;
+    right:0;
+    margin: auto;
+}
+
+div.gallery img {
+    width: 100%;
+    height: auto;
+}
+
+.clear {
+    clear: left;
+}
+
+div.figure img {
+    display: block;
+    border: 1px solid black;
+    box-shadow: 3px 7px 7px #606060;
+    margin: 0 auto;
+}
+
+div.figure.borderless img {
+    border: 0
+}
+
+/* logo */
+header h1 a {
+    font-family: "ArialPixel";
+    text-shadow: 0 4px 4px #666;
+    display: block;
+    padding-left: 1.4em;
+    background-image: url(/img/yukari-sigil.png);
+    background-position: left center;
+    background-repeat: no-repeat;
+    background-size: auto 100%;
+    text-decoration: none;
+    color: black;
+    font-size: 1.8em;
+}
+
+header h1 a:link {text-decoration: none}
+header h1 a span.second {color: white}
+header h1 a span.first {color: black}
+header h1 a.span.third {color: red} 
+
+/* wrapper decorations */
+#minimize, #close {
+    margin: 0;
+    padding: 0;
+    height: 20px;
+    width: 21px;
+    border-left: 1px solid #b6b6b6;
+    border-top: 1px solid #b6b6b6;
+    border-right: 1px solid #616161;
+    border-bottom: 1px solid #616161;
+    background-repeat: no-repeat;
+    background-position: center center;
+}
+
+#minimize {
+    margin-right: 1px;
+    background-image: url(/img/minimize.png);
+}
+
+#close {
+    margin-left: 1px;
+    background-image: url(/img/close.png);
+}
+
+#titlebar {
+    position: absolute;
+    top: 0px;
+    display: inline-flex;
+    width: 100%;
+    margin: 0;
+    margin-top: 0px;
+    padding: 0;
+    background: #016701;
+    height: 23px;
+}
+
+#titlebar-inner {
+    margin: 0;
+    padding: 0;
+    margin-top: 0px;
+    background: #016701;
+    height: 20px;
+    width: 100%;
+    border-left: 1px solid #b6b6b6;
+    border-top: 1px solid #b6b6b6;
+    border-right: 1px solid #616161;
+    border-bottom: 1px solid #616161;
+    font-size: 0.8em;
+    color: white;
+    font-weight: bold;
+    text-align: center;
+    line-height: 19px;
+}
+
+#wrapper {
+    position: relative;
+    width: 800px;
+    margin: 0 auto;
+    margin-top: 1em;
+    margin-bottom: 1em;
+    box-shadow: 0 0 15px #0033aa;
+    background-color: #ddddff;
+    border: 1px solid black;
+}
+
+#resizel, #resizer {
+    margin: 0;
+    padding: 0;
+    height: 6px;
+    width: 28px;
+    border-left: 1px solid white;
+    border-top: 1px solid white;
+    border-right: 1px solid #555555;
+}
+
+#resizebar {
+    position: absolute;
+    bottom: 2px;
+    display: inline-flex;
+    width: 100%;
+    margin: 0;
+    margin-top: 0px;
+    padding: 0;
+    background: #aaaaaa;
+    height: 5px;
+    border-top: 1px solid #555555;
+}
+
+#resizebar-inner {
+    margin: 0;
+    padding: 0;
+    margin-top: 0px;
+    height: 6px;
+    width: 100%;
+    border-left: 1px solid white;
+    border-top: 1px solid white;
+    border-right: 1px solid #555555;
+}
+
+/* TOC */
+.contents p {
+    margin: 0.2em;
+}
+
+/* pre/code highlighted theme - taken from wombat256grf vim colorscheme */
+.highlight { background-color: #242424 }
+.highlight .c { color: #99968b; font-style: italic} /* Comment */
+.highlight .err { color: #dddddd} /* Error */
+.highlight .g { color: #dddddd } /* Generic */
+.highlight .k { color: #87afff } /* Keyword */
+.highlight .l { color: #dddddd } /* Literal */
+.highlight .n { color: #dddddd } /* Name */
+.highlight .o { color: #dddddd } /* Operator */
+.highlight .x { color: #dddddd } /* Other */
+.highlight .p { color: #dddddd } /* Punctuation */
+.highlight .cm { color: #99968b; font-style: italic} /* Comment.Multiline */
+.highlight .cp { color: #e5786d } /* Comment.Preproc */
+.highlight .c1 { color: #99968b; font-style: italic} /* Comment.Single */
+.highlight .cs { color: #99968b; font-style: italic} /* Comment.Special */
+.highlight .gd { color: #dddddd } /* Generic.Deleted */
+.highlight .ge { color: #dddddd } /* Generic.Emph */
+.highlight .gr { color: #dddddd } /* Generic.Error */
+.highlight .gh { color: #f6f3e8; font-weight: bold} /* Generic.Heading */
+.highlight .gi { color: #dddddd } /* Generic.Inserted */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #dddddd } /* Generic.Prompt */
+.highlight .gs { color: #dddddd } /* Generic.Strong */
+.highlight .gu { color: #f6f3e8; font-weight: bold} /* Generic.Subheading */
+.highlight .gt { color: #dddddd } /* Generic.Traceback */
+.highlight .kc { color: #87afff } /* Keyword.Constant */
+.highlight .kd { color: #87afff } /* Keyword.Declaration */
+.highlight .kn { color: #87afff } /* Keyword.Namespace */
+.highlight .kp { color: #87afff } /* Keyword.Pseudo */
+.highlight .kr { color: #87afff } /* Keyword.Reserved */
+.highlight .kt { color: #caeb82 } /* Keyword.Type */
+.highlight .ld { color: #dddddd } /* Literal.Date */
+.highlight .m { color: #e5786d } /* Literal.Number */
+.highlight .s { color: #95e454; font-style: italic} /* Literal.String */
+.highlight .na { color: #caeb82 } /* Name.Attribute */
+.highlight .nb { color: #dddddd } /* Name.Builtin */
+.highlight .nc { color: #dddddd } /* Name.Class */
+.highlight .no { color: #e5786d } /* Name.Constant */
+.highlight .nd { color: #dddddd } /* Name.Decorator */
+.highlight .ni { color: #ffdead } /* Name.Entity */
+.highlight .ne { color: #dddddd } /* Name.Exception */
+.highlight .nf { color: #caeb82 } /* Name.Function */
+.highlight .nl { color: #dddddd } /* Name.Label */
+.highlight .nn { color: #dddddd } /* Name.Namespace */
+.highlight .nx { color: #dddddd } /* Name.Other */
+.highlight .py { color: #dddddd } /* Name.Property */
+.highlight .nt { color: #87afff } /* Name.Tag */
+.highlight .nv { color: #caeb82 } /* Name.Variable */
+.highlight .ow { color: #dddddd } /* Operator.Word */
+.highlight .w { color: #dddddd } /* Text.Whitespace */
+.highlight .mf { color: #e5786d } /* Literal.Number.Float */
+.highlight .mh { color: #e5786d } /* Literal.Number.Hex */
+.highlight .mi { color: #e5786d } /* Literal.Number.Integer */
+.highlight .mo { color: #e5786d } /* Literal.Number.Oct */
+.highlight .sb { color: #95e454; font-style: italic } /* Literal.String.Backtick */
+.highlight .sc { color: #95e454; font-style: italic } /* Literal.String.Char */
+.highlight .sd { color: #95e454; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #95e454; font-style: italic } /* Literal.String.Double */
+.highlight .se { color: #95e454; font-style: italic } /* Literal.String.Escape */
+.highlight .sh { color: #95e454; font-style: italic } /* Literal.String.Heredoc */
+.highlight .si { color: #95e454; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #95e454; font-style: italic } /* Literal.String.Other */
+.highlight .sr { color: #95e454; font-style: italic } /* Literal.String.Regex */
+.highlight .s1 { color: #95e454; font-style: italic } /* Literal.String.Single */
+.highlight .ss { color: #95e454; font-style: italic } /* Literal.String.Symbol */
+.highlight .bp { color: #dddddd } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #caeb82 } /* Name.Variable.Class */
+.highlight .vg { color: #caeb82 } /* Name.Variable.Global */
+.highlight .vi { color: #caeb82 } /* Name.Variable.Instance */
+.highlight .il { color: #e5786d } /* Literal.Number.Integer.Long */
+
+.gutter{
+    background-color: black;
+    color: #857b6f;
+}
+
+.post > .highlight .lineno {
+    display:inline-block;
+    padding: 0 5px;
+    border-right:1px solid #ccc;
+}
+
+.post > .highlight pre code {
+    display: block;
+    white-space: pre;
+    overflow-x: auto;
+    word-wrap: normal;
+}
+
+/* To display a "Command Line" to be typed by user */
+code code.command {
+    display: inline-block;
+    font-family: monospace;
+    border: 1px solid #606085;
+    width: 95%;
+    padding: 2mm 1em;
+}
+/* To highlight arguments that user should adapt */
+code.command > i {
+    font-style: italic;
+    color: #40505A;
+}
+
+/* ********** Table for a list of man pages ********** */
+table.manlist {
+    border: 1px solid black;
+    background-color: #AEAAAE;
+    margin-top:    0mm;
+    margin-bottom: 5mm;
+    margin-left:  10mm;
+    margin-right: 10mm;
+    padding: 1mm;
+}
+table.manlist th {
+    background-color: #545854;
+    color: #E8E8E8;
+    padding: 0.5mm 2mm;
+    border: 1px inset;
+}
+table.manlist tr:hover {
+    /* When the mouse is over a line, we highlight the whole line
+       because it is very convenient for reading */
+    background-color: #AECAAE;
+}
+table.manlist td {
+    color: #000000;
+}
+table.manlist td.name {
+    font-family: monospace;
+    width: 1px;     /* This prevents the column from stretching */
+}
+table.manlist td.name a {
+    display: inline-block;
+    width: 100%;
+}
+table.manlist td.section {
+    text-align: center;
+    width: 1px;     /* This prevents the column from stretching */
+}
+table.manlist a {
+    color: #000040;
+}
+
+/* main content */
+article {padding: 1em}
+
+/*
+ * size specific styles
+ */
+
+/* large screens. size: 64 * 2 + width of the wrapper (800) == 928 + margin */
+@media screen and (min-width: 940px) {
+
+    /* menu as a vertical dock */
+    aside {
+        position: fixed;
+        right: 0;
+        top: 0;
+        width: 64px;
+    }
+
+    nav.menu li#dock {background-image: url(/img/dock_dock.png)}
+    nav.menu li#home {background-image: url(/img/dock_home.png)}
+    nav.menu li#themes {background-image: url(/img/dock_themes.png)}
+
+    nav.menu {padding: 0}
+    nav.menu {background-color: #ddddff}
+
+    nav.menu ul {
+        padding: 0;
+        margin: 0;
+        list-style:none;
+    }
+
+    nav.menu li {
+        float: left;
+        margin: 0;
+        padding: 0;
+        list-style: none;
+        display: inline;
+    }
+
+    nav.menu a {
+        padding: 3px 12px;
+        text-decoration: none;
+        color: #999;
+        line-height: 100%;
+    }
+
+    nav.menu a:hover {color: #BBB}
+
+    nav.menu form {display: inline}
+
+    nav.menu .current a {color: #fff}
+
+    nav.menu li {
+        display: block;
+        width: 64px;
+        height: 64px;
+        border: 0;
+        padding:0;
+    }
+
+    nav.menu li a {
+        display: block;
+        width: 64px;
+        height: 64px;
+        border: 0;
+        padding:0;
+        line-height: 0;
+        font-size: 0;
+        color: transparent;
+    }
+
+}
+
+/* small screens */
+@media screen and (max-width: 939px) {
+
+    #wrapper {
+        width: 100%;
+        margin: 0;
+        border: 0;
+    }
+
+    /* menu as a horizontal, scrollable icon list */
+    article {width: auto}
+
+    nav.menu {padding: 0 1em 0 1em}
+
+    nav.menu ul {
+        border: 3px groove black;
+        padding: 0;
+        margin: 0;
+        list-style:none;
+        display: flex;
+        flex-wrap: nowrap;
+        overflow-x: auto;
+    }
+
+    nav.menu li {
+        float: left;
+        margin: 0;
+        padding: 0;
+        list-style: none;
+        display: inline;
+    }
+
+    nav.menu a {
+        padding: 3px 12px;
+        text-decoration: none;
+        color: #999;
+        line-height: 100%;
+    }
+
+    nav.menu a:hover {color: #BBB}
+    nav.menu form {display: inline}
+    nav.menu .current a {color: #fff}
+
+    nav.menu li {
+        display: block;
+        width: 64px;
+        height: 64px;
+        border: 0;
+        padding:0;
+    }
+
+    nav.menu li a {
+        display: block;
+        width: 64px;
+        height: 64px;
+        border: 0;
+        padding:0;
+        line-height: 0;
+        font-size: 0;
+        color: transparent;
+    }
+
+    nav.menu li#dock {display: none}
+    nav.menu li#home {background-image: url(/img/prefs_home.png)}
+    nav.menu li#themes {background-image: url(/img/prefs_themes.png})}
+    .highlight {
+        padding: 0;
+        margin: 0;
+    }
+}
+
+/* very small - usually mobile phone screens */
+@media screen and (max-width: 600px) {
+	body { background-image: url('/img/reimu_mobile.jpg');
+	header h1 a {font-size: 1.5em}
+}
+@media (prefers-color-scheme: dark) {
+	body {
+		background-image: url('/img/yukari.jpg');
+		background-position: 35% 35%;
+		background-color: black;
+	}
+}
Binary file site/favicon.ico has changed
Binary file site/fonts/ArialPixel.ttf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/site/friends/index.md	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,13 @@
+---
+title: Friends
+---
+
+We may or may not know the people who are running the entities, yet, we find them to be cool, and that's why they're here.
+
+| Name                                 | URL                            |
+|--------------------------------------|--------------------------------|
+| Interkosmos Link                     | https://intkos.link            |
+| Kallist Society Texhnolyzers         | https://kalli.st               |
+| PatchySICP                           | https://patchysicp.xyz         |
+| Prometheus Information Systems Corp. | https://prometheus.systems     |
+| Radioactive                          | https://radioactive.waelk.tech |
Binary file site/img/banners/netbsd.png has changed
Binary file site/img/banners/yakumolabs.png has changed
Binary file site/img/close.png has changed
Binary file site/img/minimize.png has changed
Binary file site/img/reimu.jpg has changed
Binary file site/img/reimu_mobile.jpg has changed
Binary file site/img/yukari.jpg has changed
Binary file site/img/yukari_mobile.jpg has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/site/index.md	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,4 @@
+---
+title: Home
+layout: menu.html
+---
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/site/members/index.md	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,19 @@
+---
+title: Members
+description: A way to call the userbase
+---
+
+* +al1r4d
+* [+alexlehm](http://geidontei.yakumo.dev/usr/alexlehm/) (Alex L.)
+* ~czar
+* [+dre](http://geidontei.yakumo.dev/usr/dre/) (Dr. Dre)
+* +jmjl
+* +kitka
+* +lucie (Lucie Scarlet)
+* [~mima](http://mima-sama.yakumo.dev) (Mima-sama)
+* [~nishi](http://geidontei.yakumo.dev/usr/nishi/) (Nishi)
+* +tocariimaa
+* [+ty3r0x](http://geidontei.yakumo.dev/usr/ty3r0x/) (Ty3r0X)
+* [+vnpower](http://geidontei.yakumo.dev/usr/vnpower/) (VnPower)
+* [~yagokoro](http://hifuu-kurabu.yakumo.dev) (Dr. Yagokoro)
+* [~yakumo_izuru](http://mugen-no-ryouiki.yakumo.dev) (Izuru Yakumo)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/site/privacy/index.md	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,13 @@
+---
+title: Privacy policy
+description: We should have one, therefore we do
+---
+
+## Log files
+We follow a standard procedure of not using log files.\
+We do not keep access logs or usage information for any purpose.
+
+## Cookies
+We use "cookies".\
+These cookies are used to store login information and preferences in some pages.\
+We don't use "cookies" to collect user information.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/site/register/index.md	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,22 @@
+---
+title: Register
+description: 
+---
+
+If you would like to have an account, you need to provide the following information:
+
+* Desired username
+* A comma-separated list of services
+* A valid e-mail address the administration can send the credentials to (i.e. must **not** be a throwaway)
+* SSH public key (must be Ed25519) [^1]
+* A reason why would you like to join
+
+Also, read the [privacy policy](/privacy/) and the [terms of service](/terms/).
+
+Once done with that, e-mail `administration at yakumo dot dev` and wait for an answer.
+In the best case scenario, you'll get it right away, in the worst case, several days.
+
+Do note, in the case the administration approve you, make sure to change your password(s) right away.
+Existing members may be allowed access to other services if so they wish.
+
+[^1]: Only useful for shell accounts
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/site/staff/index.md	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,39 @@
+---
+title: Staff
+---
+
+## Chunk
+_"When everything is working perfectly, nobody knows you exist."_
+
+* Homepage: [~~the8woodcutter~~](https://the8woodcutter.sh)
+
+## Eastern Supreme Kai (東の界王神)
+_"Who are you people!? Don't you see the universe matters more than your meaningless squabble?"_
+
+* Homepage: [&mdash;&gt;k&lt;&mdash; czar](https://czar.kalli.st)
+
+## Izuru Yakumo (八雲イズル)
+_"No one, but absolutely, no one, questions the absolute will of Lady Yukari and gets away with it!"_
+
+* Homepage: [Infinite Realm](https://mugen-no-kyouiki.yakumo.dev)
+    * Diary: [mirror:world](https://mirror-world.yakumo.dev)
+
+## Mima (魅魔)
+_"Oh, who cares about some cheap shrine in the middle of nowhere? My goal is to exact revenge on the entire human race."_
+
+* Homepage: [Mima-sama](https://mima-sama.yakumo.dev)
+
+## Nishi (西)
+_"A random Japanese programmer who does random stuff"_
+
+* Homepage: [nishi.boats](https://nishi.boats)
+
+## Patchouli Knowledge’s Foreign Familiar (パチュリー・ノーレッジの海外使い魔)
+_"Thinks the Shrine fork of TempleOS is illegal"_
+
+* Homepage: [PatchySICP](https://patchysicp.xyz)
+
+## Yagokoro (八意)
+_"Young children like yourself can't stand a chance against me, an eternal being."_
+
+* Homepage: [Secret Sealing Club](https://hifuu-kurabu.yakumo.dev)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/site/terms/index.md	Fri May 30 19:26:52 2025 -0300
@@ -0,0 +1,17 @@
+---
+title: Terms of service
+description: Straight to the point
+---
+
+## Prelude
+Being a user is a privilege, not a right
+
+## Conditions of Use
+This service is provided as-is with no warranty, express or implied. 
+Yakumo Laboratories is under no legal obligation to provide you with services, or keep the services it provides consistent.
+
+## User Account
+You are solely responsible for maintaining the confidentiality of your private user details (username and password). 
+You are responsible for all activities and user generated content that occurs under your account.
+
+We reserve all rights to terminate accounts, edit or remove content in our sole discretion.