commit 7a38f74f3bc155a365afbcd2a75cae829f40e4b8 Author: johnabs Date: Fri Mar 27 14:50:18 2026 -0400 first-commit diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..61b8684 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 bs-sensei + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.org b/README.org new file mode 100644 index 0000000..e69de29 diff --git a/home.tmpl b/home.tmpl new file mode 100644 index 0000000..fe10bd5 --- /dev/null +++ b/home.tmpl @@ -0,0 +1,234 @@ +{{template "base/head" .}} +
+ + + +
+ +
+ +
+
Codex · Archive · Repository
+

{{AppName}}

+

A curated archive of working manuscripts & digital folios

+
+ +
✦ ✦ ✦
+ +
+

+ Here are kept the working manuscripts, unfinished theories,
+ and accumulated experiments of a restless scholar. +

+
+ +
+ Enter the Archive + {{if .IsSigned}} + Open a New Volume + {{end}} +
+ + + +
+ +Photo: Thomas Kelley / Unsplash + +
+{{template "base/footer" .}} diff --git a/theme-custom.css b/theme-custom.css new file mode 100644 index 0000000..4df0596 --- /dev/null +++ b/theme-custom.css @@ -0,0 +1,651 @@ +gitea-theme-meta-info { --theme-display-name: "Codex Obscura"; }\n:root { --is-dark-theme: true; } +/* ============================================================ + CODEX OBSCURA — Gitea Custom Theme + Fall Palette × Dark Academia × Pixel Borders + Matches the Hugo theme aesthetic + ============================================================ */ + +@import url('https://fonts.googleapis.com/css2?family=VT323&family=IM+Fell+English:ital@0;1&family=Josefin+Sans:ital,wght@0,300;0,400;0,600;1,300;1,400&family=Courier+Prime:ital,wght@0,400;0,700;1,400&display=swap'); + +/* ── Core colour overrides ───────────────────────────────── */ +:root { + --color-primary: #d4a228; + --color-primary-dark: #a07818; + --color-primary-light: #f0c040; + --color-secondary: #c4601c; + + --color-bg-primary: #130e07; + --color-bg-secondary: #1c1509; + --color-bg-tertiary: #261c0e; + --color-bg-hover: #312414; + + --color-primary-light-4: #3a2a14; + --color-primary-light-3: #6a4018; + --color-primary-light-2: #a07818; + --color-primary-light-1: #c4881c; + --color-primary: #d4a228; + --color-primary-dark-1: #d4a228; + --color-primary-dark-2: #e8b830; + --color-primary-dark-3: #f0c040; + --color-primary-dark-4: #f0c040; + + --color-text-primary: #e8d5a3; + --color-text-secondary: #c9b07a; + --color-text-tertiary: #8a7050; + + --color-border-primary: #5a4020; + --color-border-secondary: #3a2a14; + --color-border-hover: #8a6030; + + --color-green: #4e7830; + --color-green-light: #6a9e44; + --color-red: #8a2e08; + --color-red-light: #c4601c; + --color-orange: #c4601c; + --color-yellow: #d4a228; + + --color-input-background: #1c1509; + --color-input-border: #5a4020; + + --color-menu-active: #d4a228; + --color-link: #d4a228; + --color-link-hover: #f0c040; + + --color-diff-added-row: rgba(78, 120, 48, 0.15); + --color-diff-removed-row: rgba(138, 46, 8, 0.15); + --color-diff-added-word: rgba(78, 120, 48, 0.3); + --color-diff-removed-word: rgba(138, 46, 8, 0.3); + + /* shadow / glow */ + --shadow-sm: 2px 2px 0 #3a2a14; + --shadow-md: 2px 2px 0 #5c3a18; +} + +/* ── Global typography ───────────────────────────────────── */ +body, +.ui, +input, +textarea, +select, +button { + font-family: 'Josefin Sans', sans-serif !important; +} + +h1, h2, h3, h4, h5, h6, +.header, +.ui.header, +.repository .file-header, +.navbar .item { + font-family: 'VT323', monospace !important; + letter-spacing: 0.05em; +} + +code, pre, .code, tt, +.file-content, +.diff-file-box { + font-family: 'Courier Prime', monospace !important; +} + +/* ── Body & background ───────────────────────────────────── */ +body { + background: #0b0804 !important; + color: #e8d5a3 !important; +} + +/* ── Navbar ──────────────────────────────────────────────── */ +.navbar, +#navbar { + background: #1c1509 !important; + border-bottom: 2px solid #5a4020 !important; + box-shadow: 0 2px 0 #3a2a14 !important; +} + +.navbar .item, +#navbar .item { + color: #c9b07a !important; + font-family: 'VT323', monospace !important; + font-size: 1.1rem !important; + letter-spacing: 0.08em !important; +} + +.navbar .item:hover, +#navbar .item:hover { + color: #d4a228 !important; + background: #261c0e !important; +} + +.navbar .item.active, +#navbar .item.active { + color: #d4a228 !important; + background: #312414 !important; +} + +/* site logo text */ +.navbar .header.item, +#navbar .header.item { + color: #e8d5a3 !important; + font-size: 1.4rem !important; +} + +/* ── Page container ──────────────────────────────────────── */ +.page-content, +.full.height > .left, +.repository, +.user, +.org { + background: #130e07 !important; +} + +/* ── Segments & cards ────────────────────────────────────── */ +.ui.segment, +.ui.segments, +.ui.card, +.ui.cards > .card { + background: #1c1509 !important; + border: 2px solid #5a4020 !important; + box-shadow: 2px 2px 0 #3a2a14 !important; + border-radius: 0 !important; + color: #c9b07a !important; +} + +.ui.segment:hover, +.ui.card:hover { + border-color: #a07818 !important; +} + +/* ── Menus & dropdowns ───────────────────────────────────── */ +.ui.menu, +.ui.dropdown .menu { + background: #1c1509 !important; + border: 2px solid #5a4020 !important; + border-radius: 0 !important; + box-shadow: 2px 2px 0 #3a2a14 !important; +} + +.ui.menu .item, +.ui.dropdown .menu .item { + color: #c9b07a !important; + border-radius: 0 !important; +} + +.ui.menu .item:hover, +.ui.dropdown .menu .item:hover { + background: #261c0e !important; + color: #d4a228 !important; +} + +.ui.menu .active.item, +.ui.menu .item.active { + background: #312414 !important; + color: #d4a228 !important; + border-color: #a07818 !important; +} + +/* tabular menu */ +.ui.tabular.menu .active.item { + background: #130e07 !important; + border-color: #5a4020 !important; + border-bottom-color: #130e07 !important; + color: #d4a228 !important; +} + +/* ── Buttons ─────────────────────────────────────────────── */ +.ui.button, +.ui.buttons .button { + background: #261c0e !important; + color: #c9b07a !important; + border: 2px solid #5a4020 !important; + border-radius: 0 !important; + box-shadow: 2px 2px 0 #3a2a14 !important; + font-family: 'VT323', monospace !important; + font-size: 1rem !important; + letter-spacing: 0.06em !important; + transition: all 150ms ease !important; +} + +.ui.button:hover { + background: #312414 !important; + border-color: #a07818 !important; + color: #d4a228 !important; + transform: translate(-1px, -1px) !important; + box-shadow: 3px 3px 0 #3a2a14 !important; +} + +.ui.primary.button, +.ui.green.button { + background: #a07818 !important; + color: #0b0804 !important; + border-color: #d4a228 !important; +} + +.ui.primary.button:hover, +.ui.green.button:hover { + background: #d4a228 !important; +} + +.ui.red.button, +.ui.negative.button { + background: #5a1a08 !important; + color: #e8d5a3 !important; + border-color: #8a2e08 !important; +} + +.ui.red.button:hover { + background: #8a2e08 !important; +} + +/* ── Inputs & forms ──────────────────────────────────────── */ +.ui.input input, +.ui.form input, +.ui.form textarea, +.ui.form select, +input[type="text"], +input[type="password"], +input[type="email"], +input[type="search"], +textarea, +select { + background: #1c1509 !important; + border: 2px solid #5a4020 !important; + border-radius: 0 !important; + color: #e8d5a3 !important; + font-family: 'Josefin Sans', sans-serif !important; +} + +.ui.input input:focus, +.ui.form input:focus, +.ui.form textarea:focus { + border-color: #a07818 !important; + outline: none !important; + box-shadow: 0 0 0 2px rgba(212, 162, 40, 0.15) !important; +} + +/* ── Labels & badges ─────────────────────────────────────── */ +.ui.label, +.ui.labels .label { + background: #261c0e !important; + border: 2px solid #5a4020 !important; + border-radius: 0 !important; + color: #c9b07a !important; + font-family: 'VT323', monospace !important; + letter-spacing: 0.06em !important; +} + +/* issue labels */ +.label[style] { + border-radius: 0 !important; + font-family: 'VT323', monospace !important; + letter-spacing: 0.06em !important; +} + +/* open/closed badges */ +.ui.green.label, .issue-state-label.open { + background: #2a4a18 !important; + border-color: #4e7830 !important; + color: #6a9e44 !important; +} + +.ui.red.label, .issue-state-label.closed { + background: #3a1008 !important; + border-color: #8a2e08 !important; + color: #c4601c !important; +} + +.ui.purple.label, .ui.violet.label { + background: #2a1a3a !important; + border-color: #5a3a7a !important; + color: #c9b0e8 !important; +} + +/* ── Repository list items ───────────────────────────────── */ +.repository.list .item, +.explore .list .item { + border-bottom: 1px solid #3a2a14 !important; + padding: 1rem !important; + transition: background 150ms ease !important; +} + +.repository.list .item:hover, +.explore .list .item:hover { + background: #1c1509 !important; +} + +/* repo name link */ +.repository.list .item .header a, +.explore .list .item .header a { + color: #d4a228 !important; + font-family: 'VT323', monospace !important; + font-size: 1.2rem !important; +} + +.repository.list .item .header a:hover { + color: #f0c040 !important; +} + +/* ── File tree / code browser ────────────────────────────── */ +.repository .file-list, +.repository .code-view { + background: #130e07 !important; +} + +.repository .file-list .item, +.repository .files tr { + border-bottom: 1px solid #3a2a14 !important; +} + +.repository .files tr:hover { + background: #1c1509 !important; +} + +.repository .files .icon { + color: #8a6030 !important; +} + +.repository .files .name a { + color: #c9b07a !important; +} + +.repository .files .name a:hover { + color: #d4a228 !important; +} + +/* commit message */ +.repository .files .message a { + color: #8a7050 !important; +} + +.repository .files .message a:hover { + color: #c9b07a !important; +} + +/* ── Diff view ───────────────────────────────────────────── */ +.diff-file-box { + border: 2px solid #5a4020 !important; + border-radius: 0 !important; + margin-bottom: 1rem !important; +} + +.diff-file-box .file-header { + background: #261c0e !important; + border-bottom: 2px solid #5a4020 !important; + color: #c9b07a !important; + padding: 0.5rem 1rem !important; +} + +.diff-file-box .file-header .file-header-title { + color: #d4a228 !important; + font-family: 'Courier Prime', monospace !important; +} + +.code-diff tr.added td { + background: rgba(78, 120, 48, 0.12) !important; +} + +.code-diff tr.deleted td { + background: rgba(138, 46, 8, 0.12) !important; +} + +.code-diff td.lines-num { + background: #1c1509 !important; + color: #5a4830 !important; + border-right: 1px solid #3a2a14 !important; +} + +/* ── Code blocks ─────────────────────────────────────────── */ +.code-view .lines-code, +pre, code { + background: #0b0804 !important; + color: #e8d5a3 !important; +} + +/* ── Issue & PR list ─────────────────────────────────────── */ +.issue.list .item, +.pulls.list .item { + border-bottom: 1px solid #3a2a14 !important; + padding: 0.75rem 0 !important; +} + +.issue.list .item:hover { + background: #1c1509 !important; +} + +.issue.list .item .title, +.pulls.list .item .title { + color: #e8d5a3 !important; + font-family: 'Josefin Sans', sans-serif !important; +} + +.issue.list .item .title:hover { + color: #d4a228 !important; +} + +/* ── Comments ────────────────────────────────────────────── */ +.comment .content { + background: #1c1509 !important; + border: 2px solid #5a4020 !important; + border-radius: 0 !important; +} + +.comment .content .header { + background: #261c0e !important; + border-bottom: 2px solid #5a4020 !important; + color: #8a7050 !important; +} + +.comment .content .header .author { + color: #d4a228 !important; + font-family: 'VT323', monospace !important; + font-size: 1.1rem !important; +} + +/* ── Activity feed ───────────────────────────────────────── */ +.feeds .news .desc { + color: #c9b07a !important; +} + +.feeds .news .time { + color: #5a4830 !important; +} + +/* ── User profile ────────────────────────────────────────── */ +.user.profile .ui.card { + background: #1c1509 !important; +} + +.user.profile .ui.card .extra { + border-top: 1px solid #3a2a14 !important; +} + +/* ── Markdown rendered content ───────────────────────────── */ +.markup, +.markdown { + color: #c9b07a !important; +} + +.markup h1, .markup h2, .markup h3, +.markup h4, .markup h5, .markup h6, +.markdown h1, .markdown h2, .markdown h3 { + font-family: 'VT323', monospace !important; + color: #f0c040 !important; + border-bottom: 1px solid #3a2a14 !important; + letter-spacing: 0.05em !important; +} + +.markup a, .markdown a { + color: #d4a228 !important; + border-bottom: 1px solid #a07818 !important; + text-decoration: none !important; +} + +.markup a:hover, .markdown a:hover { + color: #f0c040 !important; +} + +.markup blockquote, .markdown blockquote { + background: #1c1509 !important; + border-left: 4px solid #a07818 !important; + color: #8a7050 !important; + border-radius: 0 !important; +} + +.markup table th, .markdown table th { + background: #261c0e !important; + color: #d4a228 !important; + border: 1px solid #5a4020 !important; + font-family: 'VT323', monospace !important; +} + +.markup table td, .markdown table td { + border: 1px solid #3a2a14 !important; + color: #c9b07a !important; +} + +.markup table tr:nth-child(even) td, +.markdown table tr:nth-child(even) td { + background: #1c1509 !important; +} + +/* ── Dividers ────────────────────────────────────────────── */ +.ui.divider { + border-color: #3a2a14 !important; +} + +/* ── Pagination ──────────────────────────────────────────── */ +.ui.pagination.menu .item { + background: #1c1509 !important; + color: #8a7050 !important; + border: 2px solid #3a2a14 !important; + border-radius: 0 !important; + min-width: 2.5rem !important; + text-align: center !important; +} + +.ui.pagination.menu .item:hover { + background: #261c0e !important; + color: #d4a228 !important; + border-color: #a07818 !important; +} + +.ui.pagination.menu .active.item { + background: #312414 !important; + color: #d4a228 !important; + border-color: #a07818 !important; +} + +/* ── Footer ──────────────────────────────────────────────── */ +#footer { + background: #0b0804 !important; + border-top: 2px solid #3a2a14 !important; + color: #5a4830 !important; +} + +#footer a { + color: #8a7050 !important; +} + +#footer a:hover { + color: #d4a228 !important; +} + +/* ── Scrollbar ───────────────────────────────────────────── */ +::-webkit-scrollbar { width: 8px; height: 8px; } +::-webkit-scrollbar-track { background: #0b0804; } +::-webkit-scrollbar-thumb { background: #5c3a18; border: 2px solid #1c1509; } +::-webkit-scrollbar-thumb:hover { background: #a07818; } + +/* ── Links globally ──────────────────────────────────────── */ +a { + color: #d4a228 !important; +} + +a:hover { + color: #f0c040 !important; +} + +/* ── Statistic numbers ───────────────────────────────────── */ +.ui.statistic .value { + color: #d4a228 !important; + font-family: 'VT323', monospace !important; +} + +.ui.statistic .label { + color: #8a7050 !important; + font-family: 'Josefin Sans', sans-serif !important; +} + +/* ── Flash/alert messages ────────────────────────────────── */ +.ui.positive.message, .ui.success.message { + background: #1a3010 !important; + border-color: #4e7830 !important; + color: #6a9e44 !important; +} + +.ui.negative.message, .ui.error.message { + background: #2a0e08 !important; + border-color: #8a2e08 !important; + color: #c4601c !important; +} + +.ui.warning.message { + background: #2a1e08 !important; + border-color: #a07818 !important; + color: #d4a228 !important; +} + +.ui.info.message { + background: #0e1a2a !important; + border-color: #2a5a8a !important; + color: #7ab0d4 !important; +} + +/* ── Selection ───────────────────────────────────────────── */ +::selection { + background: #a07818 !important; + color: #0b0804 !important; +} +/* Clone panel / dropdown background */ +.clone-panel, +.clone-panel-tab, +.clone-panel-field, +.clone-panel-list, +.flex-items-block { + background: var(--color-box-body, #1c1509) !important; + color: var(--color-text, #e8d5a3) !important; +} + +.clone-panel .item, +.clone-panel-tab .item { + color: var(--color-text, #c9b07a) !important; +} + +.clone-panel-tab .item.active { + color: var(--color-primary, #d4a228) !important; + border-bottom: 2px solid var(--color-primary, #d4a228) !important; +} + +.clone-panel input { + background: var(--color-input-background, #130e07) !important; + color: var(--color-text, #e8d5a3) !important; + border: 1px solid var(--color-border-primary, #3a2a14) !important; +} + +.divider { + border-color: var(--color-border-primary, #3a2a14) !important; +} + +.clone-panel-popup { + background: #1c1509 !important; + border: 1px solid #3a2a14 !important; + box-shadow: 2px 2px 0 #0b0804 !important; +} +.tippy-content, +.tippy-box { + background: #1c1509 !important; + border: 1px solid #3a2a14 !important; + box-shadow: 2px 2px 0 #0b0804 !important; + color: #e8d5a3 !important; +} + +.tippy-arrow { + color: #1c1509 !important; +}