diff --git a/public/assets/css/theme-darkblue.css b/public/assets/css/theme-darkblue.css
new file mode 100644
index 0000000..50ac1c3
--- /dev/null
+++ b/public/assets/css/theme-darkblue.css
@@ -0,0 +1,163 @@
+:root {
+ --color-nav-bg: #315483;
+ --color-nav-text: #ffffff;
+ --color-text: #414448;
+ --color-body: #f2f2f2;
+ --color-box-body: #ffffff;
+ --color-primary: var(--color-nav-bg);
+ --link-color: #15c;
+ --border-color: #cccccc;
+ --white: #ffffff;
+ --color-primary-contrast: var(--white);
+ --color-primary-hover: #39485d;
+ --color-primary-active: var(--color-primary-hover);
+ --color-menu: var(--white);
+ --color-secondary: var(--border-color);
+ --color-card: var(--white);
+ --color-secondary-alpha-60: var(--border-color);
+}
+
+*, .ui.form input:not([type]), .ui.form input[type=date], .ui.form input[type=datetime-local], .ui.form input[type=email], .ui.form input[type=number], .ui.form input[type=password], .ui.form input[type=search], .ui.form input[type=tel], .ui.form input[type=time], .ui.form input[type=text], .ui.form input[type=file], .ui.form input[type=url], input:-webkit-autofill, input:-webkit-autofill:focus, input:-webkit-autofill:hover, input:-webkit-autofill:active, .ui.form .field.field input:-webkit-autofill, .ui.form .field.field input:-webkit-autofill:focus, .ui.form .field.field input:-webkit-autofill:hover, .ui.form .field.field input:-webkit-autofill:active {
+ border-radius: 0 !important;
+ border-color: var(--border-color) !important;
+ box-shadow: none !important;
+}
+
+#navbar a.item:hover, #navbar button.item:hover {
+ text-decoration: underline;
+}
+
+.home a {
+ color: var(--link-color);
+}
+
+.ui.dropdown .menu,
+.ui.menu {
+ background: var(--white) !important;
+}
+
+#navbar a.item:hover, #navbar button.item:hover {
+ background: var(--color-nav-bg);
+ color: var(--white);
+}
+
+.ui.tabular.menu,
+.overflow-menu-items,
+.ui.secondary.pointing.menu .item {
+ border-bottom: none !important;
+}
+
+.ui.secondary.pointing.menu {
+ border: 1px solid var(--color-secondary) !important;
+ border-bottom: 1px solid var(--color-secondary) !important;
+}
+
+.page-footer {
+ background-color: var(--white);
+ border-top: 1px solid var(--border-color);
+}
+
+/* ===== Minimal Light Syntax Highlighting (White Background) ===== */
+
+code, pre, .code, .chroma {
+ background: #ffffff !important;
+ color: #414448 !important;
+ font-size: 14px !important;
+ line-height: 1.6 !important;
+}
+
+/* Base */
+.chroma {
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
+ font-size: 13px;
+}
+
+/* Comments */
+.chroma .c,
+.chroma .ch,
+.chroma .cm,
+.chroma .c1,
+.chroma .cs {
+ color: #6a737d;
+ font-style: italic;
+}
+
+/* Keywords */
+.chroma .k,
+.chroma .kc,
+.chroma .kd,
+.chroma .kn,
+.chroma .kp,
+.chroma .kr,
+.chroma .kt {
+ color: #315483;
+ font-weight: 600;
+}
+
+/* Strings */
+.chroma .s,
+.chroma .sa,
+.chroma .sb,
+.chroma .sc,
+.chroma .dl,
+.chroma .sd,
+.chroma .s2 {
+ color: #0a7a3c;
+}
+
+/* Numbers */
+.chroma .m,
+.chroma .mb,
+.chroma .mf,
+.chroma .mh,
+.chroma .mi,
+.chroma .il {
+ color: #b35e00;
+}
+
+/* Functions / Names */
+.chroma .nf,
+.chroma .fm {
+ color: #6f42c1;
+}
+
+/* Types / Classes */
+.chroma .nc,
+.chroma .nt {
+ color: #005cc5;
+}
+
+/* Operators */
+.chroma .o,
+.chroma .ow {
+ color: #d73a49;
+}
+
+/* Variables */
+.chroma .nv,
+.chroma .na {
+ color: #e36209;
+}
+
+/* Line numbers (if enabled) */
+.chroma .ln {
+ color: #999;
+}
+
+/* Selection */
+.chroma ::selection {
+ background: #dbe9ff;
+}
+
+.lines-num, .lines-code {
+ font-size: 14px;
+ font-family: var(--fonts-monospace);
+ line-height: 1.6;
+ padding-top: 0;
+ padding-bottom: 0;
+ vertical-align: bottom;
+}
+
+.lines-num:hover {
+ text-decoration: underline;
+}
diff --git a/public/assets/img/favicon.png b/public/assets/img/favicon.png
new file mode 100644
index 0000000..b8960cb
Binary files /dev/null and b/public/assets/img/favicon.png differ
diff --git a/public/assets/img/favicon.svg b/public/assets/img/favicon.svg
new file mode 100644
index 0000000..a492eda
--- /dev/null
+++ b/public/assets/img/favicon.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/public/assets/img/logo.svg b/public/assets/img/logo.svg
new file mode 100644
index 0000000..ce646cb
--- /dev/null
+++ b/public/assets/img/logo.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/public/assets/img/logo_alt.svg b/public/assets/img/logo_alt.svg
new file mode 100644
index 0000000..a492eda
--- /dev/null
+++ b/public/assets/img/logo_alt.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/templates/home.tmpl b/templates/home.tmpl
new file mode 100644
index 0000000..5f51ccf
--- /dev/null
+++ b/templates/home.tmpl
@@ -0,0 +1,92 @@
+{{template "base/head" .}}
+
+
+ {{/* ── Hero ─────────────────────────────────────────────────── */}}
+
+
+
+
+
+
+ Personal source code hosting by
+ mysticmode
+
+
+
+
+
+ {{/* ── Registration notice ──────────────────────────────────── */}}
+
+
+
+
+
+ This instance is not open for public registration.
+ To request access, send an email to
+ tildezero@gmail.com
+ with a brief introduction and your intended use.
+
+
+
+
+
+ {{/* ── Quick links ──────────────────────────────────────────── */}}
+
+
+ {{/* ── About strip ──────────────────────────────────────────── */}}
+
+
+
+
+ This is a self-hosted, invite-only Git service.
+ All repositories are owned and maintained by mysticmode.
+
+
+
+
+
+ Running on Gitea
+ — a lightweight, self-hosted Git service.
+ Fast, reliable, and open source.
+
+
+
+
+
+{{template "base/footer" .}}