diff --git a/conf/app.ini b/conf/app.ini
index 6a8fe36..7ad2c85 100644
--- a/conf/app.ini
+++ b/conf/app.ini
@@ -9,6 +9,7 @@ DISABLE_REGULAR_ORG_CREATION=true
[repository]
ROOT = /data/git/repositories
MAX_CREATION_LIMIT = 0
+ALLOW_FORK_WITHOUT_MAXIMUM_LIMIT = false
[repository.local]
LOCAL_COPY_PATH = /data/gitea/tmp/local-repo
@@ -66,7 +67,7 @@ INSTALL_LOCK = true
SECRET_KEY =
REVERSE_PROXY_LIMIT = 1
REVERSE_PROXY_TRUSTED_PROXIES = *
-INTERNAL_TOKEN =
+INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3Mzc1NzgzMzl9.RU-_Fbr2ONiw-F2mADFaWwvXXVsQezy5jjgSQNE61sg
PASSWORD_HASH_ALGO = pbkdf2
[service]
@@ -96,7 +97,7 @@ PROTOCOL = smtps
SMTP_ADDR = mail.nhcarrigan.com
SMTP_PORT = 465
USER = noreply@nhcarrigan.com
-PASSWD =
+PASSWD = `PhBY8Ag4XcNh`
[openid]
ENABLE_OPENID_SIGNIN = false
@@ -115,5 +116,5 @@ DEFAULT_TRUST_MODEL = committer
JWT_SECRET =
[ui]
-DEFAULT_THEME = trans-pride
-THEMES = trans-pride,trans-pride-dark
\ No newline at end of file
+DEFAULT_THEME = witch
+THEMES = trans-pride,trans-pride-dark,witch
\ No newline at end of file
diff --git a/public/assets/css/theme-trans-pride-dark.css b/public/assets/css/theme-trans-pride-dark.css
index 206b9f3..74e475c 100644
--- a/public/assets/css/theme-trans-pride-dark.css
+++ b/public/assets/css/theme-trans-pride-dark.css
@@ -1,468 +1,468 @@
/* Trans Wrath - A dark mode variant of Trans Pride for Gitea */
@font-face {
- font-family: 'Vampyr';
- src: url('https://cdn.nhcarrigan.com/fonts/vampyr.ttf') format('truetype');
- }
-
- :root {
- --fonts-regular: "Vampyr" !important;
- --fonts-proportional: "Vampyr" !important;
- --fonts-monospace: "Vampyr" !important;
- --fonts-emoji: "Vampyr" !important;
- --is-dark-theme: true;
-
- /* Primary (pinks) */
- --color-primary: #ff6b94; /* flag pink pop */
- --color-primary-dark: #ff3b6f; /* deeper pink for hover/active */
- --color-primary-light: #ffb6c1; /* soft pink for subtle accents */
- --color-primary-very-light: #3a1a2a; /* dim pink-plum for muted fills */
-
- /* Main Text & Background */
- --color-text: #ffe6ee; /* near-white with pink warmth */
- --color-text-light: #ffd1dc; /* lighter/paler text */
- --color-text-dark: #ffc0cb; /* headings/links emphasis */
- --color-body: #2a0a18; /* your existing plum base */
-
- /* UI (blues for contrast = trans stripes!) */
- --color-secondary: #3b6ea8; /* medium trans-blue */
- --color-secondary-dark: #2d5a8b; /* hover/active */
- --color-secondary-light: #4f84c2; /* borders/badges */
-
- /* State Colors */
- --color-success: #87cefa; /* sky blue success */
- --color-success-dark: #5dade2;
- --color-success-light: #add8e6;
- --color-danger: #ff4f7a; /* pinkish red */
- --color-danger-dark: #ff2f66;
- --color-danger-light: #ff7fa1;
- --color-warning: #ffc3a0; /* peach pairs nicely */
- --color-warning-dark: #ffb78f;
- --color-warning-light: #ffd4b7;
- --color-info: #5dade2; /* bright info blue */
- --color-info-dark: #3f8ecb;
- --color-info-light: #87c7f1;
-
- /* Other UI Elements */
- --color-menu: #2a0a18;
- --color-card: #241624; /* slightly darker than body */
- --color-markup-table-row: #2f1b30; /* alternating rows */
- --color-markup-code-block: #2f1b30; /* code blocks */
- --color-button: #ff6b94; /* primary buttons = pink */
- --color-border: #3a2847; /* muted plum border */
- --color-input-border: #4f84c2; /* blue focus ring vibe */
- --color-input-background: #241624;
- --color-small-accent: #add8e6; /* tiny blue sparkles */
-
- /* Diff Colors (trans-tinted, still readable) */
- --color-diff-add-line: #162235; /* blue-tinted add */
- --color-diff-add-word: #203149;
- --color-diff-del-line: #2a1620; /* pink-tinted delete */
- --color-diff-del-word: #3b2030;
- --color-diff-section: #1e1b2a; /* neutral section bg */
-
- /* Code Syntax Highlighting (blue + pink duo) */
- --color-code-keyword: #1e90ff; /* keywords = trans blue */
- --color-code-function: #ff3b6f; /* functions = deep pink */
- --color-code-string: #ff9aac; /* strings = soft pink */
- --color-code-number: #5dade2; /* numbers = bright blue */
- --color-code-comment: #c79bb1; /* gentle mauve comment */
- --color-code-type: #87cefa; /* types = sky blue */
-
- --vscode-editor-background: #151a28; /* cooler dark editor well */
- --color-footer: #2a0a18;
- --color-nav-bg: #2a0a18;
- }
-
-
- /* Header */
- .ui.menu.inverted {
- background-color: var(--color-secondary);
- color: var(--color-text);
- }
-
- .ui.secondary.menu .item {
- color: var(--color-text);
- }
-
- .ui.secondary.menu .active.item {
- background-color: var(--color-primary-very-light);
- }
-
- /* Repository header */
- .repository.header {
- background-color: var(--color-menu);
- }
-
- /* Buttons */
- .ui.primary.button {
- background-color: var(--color-primary);
- }
-
- .ui.primary.button:hover {
- background-color: var(--color-primary-dark);
- }
-
- .ui.basic.button {
- box-shadow: 0 0 0 1px var(--color-border) inset;
- color: var(--color-text) !important;
- }
-
- .ui.basic.button:hover {
- background-color: var(--color-primary-very-light) !important;
- color: var(--color-text-dark) !important;
- }
-
- /* Tabs */
- .ui.tabular.menu .item {
- color: var(--color-text-light);
- }
-
- .ui.tabular.menu .active.item {
- background-color: var(--color-primary-very-light);
- color: var(--color-text);
- border-color: var(--color-border);
- }
-
- /* Tables */
- .ui.table thead th {
- background: var(--color-menu);
- color: var(--color-text);
- }
-
- .ui.table {
- border-color: var(--color-border);
- }
-
- /* Form inputs */
- .ui.input input {
- background-color: var(--color-input-background);
- border-color: var(--color-input-border);
- color: var(--color-text);
- }
-
- .ui.input input:focus {
- border-color: var(--color-primary);
- }
-
- /* Labels */
- .ui.label {
- background-color: var(--color-primary-very-light);
- color: var(--color-text);
- }
-
- /* Markdown Content */
- .markdown:not(code) {
- color: var(--color-text);
- }
-
- .markdown code, .markdown pre {
- background-color: var(--color-markup-code-block);
- border-color: var(--color-border);
- }
-
- /* Sidebar */
- .ui.vertical.menu {
- background-color: var(--color-menu);
- }
-
- .ui.vertical.menu .item {
- color: var(--color-text);
- }
-
- .ui.vertical.menu .active.item {
- background-color: var(--color-primary-very-light);
- }
-
- /* Status tags */
- .ui.green.label {
- background-color: var(--color-success) !important;
- color: var(--color-body) !important;
- }
-
- .ui.red.label {
- background-color: var(--color-danger) !important;
- color: var(--color-body) !important;
- }
-
- .ui.yellow.label {
- background-color: var(--color-warning) !important;
- color: var(--color-text-dark) !important;
- }
-
- .ui.blue.label {
- background-color: var(--color-info) !important;
- color: var(--color-body) !important;
- }
-
- /* Dashboard cards */
- .dashboard-card {
- background-color: var(--color-card);
- border-color: var(--color-border);
- }
-
- /* Timeline and activities */
- .timeline-item {
- border-color: var(--color-border);
- }
-
- .timeline-item .badge {
- background-color: var(--color-primary-very-light);
- color: var(--color-text);
- }
-
- /* Code diff view */
- .diff-file-box .code-diff-split .add-code {
- background-color: var(--color-diff-add-line);
- }
-
- .diff-file-box .code-diff-split .del-code {
- background-color: var(--color-diff-del-line);
- }
-
- .diff-file-box .code-diff-split .add-code .add-line {
- background-color: var(--color-diff-add-word);
- }
-
- .diff-file-box .code-diff-split .del-code .del-line {
- background-color: var(--color-diff-del-word);
- }
-
- .monaco-editor, .monaco-diff-editor, .monaco-component, .monaco-editor-background, .monaco-editor .margin {
- background: var(--vscode-editor-background) !important;
- }
-
- .monaco-editor {
- --vscode-editor-selectionBackground: var(--color-primary) !important;
- --vscode-editor-inactiveSelectionBackground: var(--color-primary) !important;
- --vscode-editor-lineHighlightBackground: var(--color-primary) !important;
- }
-
- .monaco-editor .view-overlays .current-line {
- background-color: var(--color-primary) !important;
- }
-
- .monaco-editor .margin {
- background-color: transparent !important;
- }
-
- .monaco-editor .margin-view-overlays .current-line-margin {
- background-color: var(--color-primary) !important;
- }
-
- .active-line-number {
- background-color: transparent !important;
- }
- /* Scrollbar */
- ::-webkit-scrollbar-thumb {
- background: var(--color-primary-light);
- }
-
- ::-webkit-scrollbar-thumb:hover {
- background: var(--color-primary);
- }
-
- ::-webkit-scrollbar-track {
- background: var(--color-primary-very-light);
- }
-
- body::before {
- background: url(https://cdn.nhcarrigan.com/background.png);
- background-size: cover;
- background-position: center;
- width: 100%;
- height: 100%;
- z-index: -100;
- content: "";
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- opacity: 1;
- pointer-events: none;
- }
-
- body::after {
- background: var(--color-body);
- opacity: 0.8;
- width: 100%;
- height: 100%;
- z-index: -50;
- content: "";
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- pointer-events: none;
- }
-
- html {
- cursor: url('https://cdn.nhcarrigan.com/cursors/cursor.cur'), auto;
- font-family: "Vampyr";
- }
-
- a, button, .button, .dropdown {
- cursor: url('https://cdn.nhcarrigan.com/cursors/pointer.cur'), pointer !important;
- }
-
+ font-family: 'Vampyr';
+ src: url('https://cdn.nhcarrigan.com/fonts/vampyr.ttf') format('truetype');
+}
+
+:root {
+ --fonts-regular: "Vampyr" !important;
+ --fonts-proportional: "Vampyr" !important;
+ --fonts-monospace: "Vampyr" !important;
+ --fonts-emoji: "Vampyr" !important;
+ --is-dark-theme: true;
+
+ /* Primary (pinks) */
+ --color-primary: #ff6b94; /* flag pink pop */
+ --color-primary-dark: #ff3b6f; /* deeper pink for hover/active */
+ --color-primary-light: #ffb6c1; /* soft pink for subtle accents */
+ --color-primary-very-light: #3a1a2a; /* dim pink-plum for muted fills */
+
+ /* Main Text & Background */
+ --color-text: #ffe6ee; /* near-white with pink warmth */
+ --color-text-light: #ffd1dc; /* lighter/paler text */
+ --color-text-dark: #ffc0cb; /* headings/links emphasis */
+ --color-body: #2a0a18; /* your existing plum base */
+
+ /* UI (blues for contrast = trans stripes!) */
+ --color-secondary: #3b6ea8; /* medium trans-blue */
+ --color-secondary-dark: #2d5a8b; /* hover/active */
+ --color-secondary-light: #4f84c2; /* borders/badges */
+
+ /* State Colors */
+ --color-success: #87cefa; /* sky blue success */
+ --color-success-dark: #5dade2;
+ --color-success-light: #add8e6;
+ --color-danger: #ff4f7a; /* pinkish red */
+ --color-danger-dark: #ff2f66;
+ --color-danger-light: #ff7fa1;
+ --color-warning: #ffc3a0; /* peach pairs nicely */
+ --color-warning-dark: #ffb78f;
+ --color-warning-light: #ffd4b7;
+ --color-info: #5dade2; /* bright info blue */
+ --color-info-dark: #3f8ecb;
+ --color-info-light: #87c7f1;
+
+ /* Other UI Elements */
+ --color-menu: #2a0a18;
+ --color-card: #241624; /* slightly darker than body */
+ --color-markup-table-row: #2f1b30; /* alternating rows */
+ --color-markup-code-block: #2f1b30; /* code blocks */
+ --color-button: #ff6b94; /* primary buttons = pink */
+ --color-border: #3a2847; /* muted plum border */
+ --color-input-border: #4f84c2; /* blue focus ring vibe */
+ --color-input-background: #241624;
+ --color-small-accent: #add8e6; /* tiny blue sparkles */
+
+ /* Diff Colors (trans-tinted, still readable) */
+ --color-diff-add-line: #162235; /* blue-tinted add */
+ --color-diff-add-word: #203149;
+ --color-diff-del-line: #2a1620; /* pink-tinted delete */
+ --color-diff-del-word: #3b2030;
+ --color-diff-section: #1e1b2a; /* neutral section bg */
+
+ /* Code Syntax Highlighting (blue + pink duo) */
+ --color-code-keyword: #1e90ff; /* keywords = trans blue */
+ --color-code-function: #ff3b6f; /* functions = deep pink */
+ --color-code-string: #ff9aac; /* strings = soft pink */
+ --color-code-number: #5dade2; /* numbers = bright blue */
+ --color-code-comment: #c79bb1; /* gentle mauve comment */
+ --color-code-type: #87cefa; /* types = sky blue */
+
+ --vscode-editor-background: #151a28; /* cooler dark editor well */
+ --color-footer: #2a0a18;
+ --color-nav-bg: #2a0a18;
+}
+
+
+/* Header */
+.ui.menu.inverted {
+ background-color: var(--color-secondary);
+ color: var(--color-text);
+}
+
+.ui.secondary.menu .item {
+ color: var(--color-text);
+}
+
+.ui.secondary.menu .active.item {
+ background-color: var(--color-primary-very-light);
+}
+
+/* Repository header */
+.repository.header {
+ background-color: var(--color-menu);
+}
+
+/* Buttons */
+.ui.primary.button {
+ background-color: var(--color-primary);
+}
+
+.ui.primary.button:hover {
+ background-color: var(--color-primary-dark);
+}
+
+.ui.basic.button {
+ box-shadow: 0 0 0 1px var(--color-border) inset;
+ color: var(--color-text) !important;
+}
+
+.ui.basic.button:hover {
+ background-color: var(--color-primary-very-light) !important;
+ color: var(--color-text-dark) !important;
+}
+
+/* Tabs */
+.ui.tabular.menu .item {
+ color: var(--color-text-light);
+}
+
+.ui.tabular.menu .active.item {
+ background-color: var(--color-primary-very-light);
+ color: var(--color-text);
+ border-color: var(--color-border);
+}
+
+/* Tables */
+.ui.table thead th {
+ background: var(--color-menu);
+ color: var(--color-text);
+}
+
+.ui.table {
+ border-color: var(--color-border);
+}
+
+/* Form inputs */
+.ui.input input {
+ background-color: var(--color-input-background);
+ border-color: var(--color-input-border);
+ color: var(--color-text);
+}
+
+.ui.input input:focus {
+ border-color: var(--color-primary);
+}
+
+/* Labels */
+.ui.label {
+ background-color: var(--color-primary-very-light);
+ color: var(--color-text);
+}
+
+/* Markdown Content */
+.markdown:not(code) {
+ color: var(--color-text);
+}
+
+.markdown code, .markdown pre {
+ background-color: var(--color-markup-code-block);
+ border-color: var(--color-border);
+}
+
+/* Sidebar */
+.ui.vertical.menu {
+ background-color: var(--color-menu);
+}
+
+.ui.vertical.menu .item {
+ color: var(--color-text);
+}
+
+.ui.vertical.menu .active.item {
+ background-color: var(--color-primary-very-light);
+}
+
+/* Status tags */
+.ui.green.label {
+ background-color: var(--color-success) !important;
+ color: var(--color-body) !important;
+}
+
+.ui.red.label {
+ background-color: var(--color-danger) !important;
+ color: var(--color-body) !important;
+}
+
+.ui.yellow.label {
+ background-color: var(--color-warning) !important;
+ color: var(--color-text-dark) !important;
+}
+
+.ui.blue.label {
+ background-color: var(--color-info) !important;
+ color: var(--color-body) !important;
+}
+
+/* Dashboard cards */
+.dashboard-card {
+ background-color: var(--color-card);
+ border-color: var(--color-border);
+}
+
+/* Timeline and activities */
+.timeline-item {
+ border-color: var(--color-border);
+}
+
+.timeline-item .badge {
+ background-color: var(--color-primary-very-light);
+ color: var(--color-text);
+}
+
+/* Code diff view */
+.diff-file-box .code-diff-split .add-code {
+ background-color: var(--color-diff-add-line);
+}
+
+.diff-file-box .code-diff-split .del-code {
+ background-color: var(--color-diff-del-line);
+}
+
+.diff-file-box .code-diff-split .add-code .add-line {
+ background-color: var(--color-diff-add-word);
+}
+
+.diff-file-box .code-diff-split .del-code .del-line {
+ background-color: var(--color-diff-del-word);
+}
+
+.monaco-editor, .monaco-diff-editor, .monaco-component, .monaco-editor-background, .monaco-editor .margin {
+ background: var(--vscode-editor-background) !important;
+}
+
+.monaco-editor {
+ --vscode-editor-selectionBackground: var(--color-primary) !important;
+ --vscode-editor-inactiveSelectionBackground: var(--color-primary) !important;
+ --vscode-editor-lineHighlightBackground: var(--color-primary) !important;
+}
+
+.monaco-editor .view-overlays .current-line {
+ background-color: var(--color-primary) !important;
+}
+
+.monaco-editor .margin {
+ background-color: transparent !important;
+}
+
+.monaco-editor .margin-view-overlays .current-line-margin {
+ background-color: var(--color-primary) !important;
+}
+
+.active-line-number {
+ background-color: transparent !important;
+}
+/* Scrollbar */
+::-webkit-scrollbar-thumb {
+ background: var(--color-primary-light);
+}
+
+::-webkit-scrollbar-thumb:hover {
+ background: var(--color-primary);
+}
+
+::-webkit-scrollbar-track {
+ background: var(--color-primary-very-light);
+}
+
+body::before {
+ background: url(https://cdn.nhcarrigan.com/background.png);
+ background-size: cover;
+ background-position: center;
+ width: 100%;
+ height: 100%;
+ z-index: -100;
+ content: "";
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ opacity: 1;
+ pointer-events: none;
+}
+
+body::after {
+ background: var(--color-body);
+ opacity: 0.8;
+ width: 100%;
+ height: 100%;
+ z-index: -50;
+ content: "";
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ pointer-events: none;
+}
+
+html {
+ cursor: url('https://cdn.nhcarrigan.com/cursors/cursor.cur'), auto;
+ font-family: "Vampyr";
+}
+
+a, button, .button, .dropdown {
+ cursor: url('https://cdn.nhcarrigan.com/cursors/pointer.cur'), pointer !important;
+}
+
+#tree-nation-offset-website {
+ display: flex;
+ align-items: center;
+}
+@media screen and (max-width: 885px) {
#tree-nation-offset-website {
- display: flex;
- align-items: center;
- }
- @media screen and (max-width: 885px) {
- #tree-nation-offset-website {
- display: none;
- }
- }
-
- footer {
- width: 100%;
- display: flex;
- justify-content: space-between;
- align-items: center;
- color: var(--foreground);
- background-color: var(--background);
- position: fixed;
- bottom: 0;
- height: 75px;
- padding: 0 10px;
- }
-
- @media (max-width: 880px) {
- .page-footer {
- flex-direction: row;
- }
- }
-
- #navbar {
- position: fixed;
- top: 0;
- height: 50px;
- width: 100%;
- z-index: 1;
- }
-
- .page-content {
- margin-top: 50px;
- }
-
- *::selection {
- color: var(--color-body) !important;
- background: var(--color-text) !important;
- }
-
- @media screen and (max-width: 768px) {
-
- .navbar-right > .item {
- justify-content: right !important;
- width: 50% !important;
- right: 0 !important;
- margin-right: 0 !important;
- margin-left: auto !important;
- background: var(--color-nav-bg) !important;
- }
-
- .navbar-left > .item {
- justify-content: left !important;
- width: 50% !important;
- left: 0 !important;
- margin-left: 0 !important;
- margin-right: auto !important;
- background: var(--color-nav-bg) !important;
- }
- }
-
- .home a {
- text-decoration: underline !important;
- }
-
- .home ul {
- list-style-type: none !important;
- padding-left: 0 !important;
- }
-
-
- #show-socials-button {
- background: none;
- border: none;
- cursor: url('https://cdn.nhcarrigan.com/cursors/pointer.cur'), pointer;
- color: var(--color-text);
- font-size: 1rem;
- }
- #show-socials-button > i {
- font-size: 1.5rem;
- }
- #social-list {
- position: absolute;
- bottom: 75px;
- left: 0;
- right: 0;
- width: 100vw;
- max-width: 400px;
- padding: 10px;
- background-color: var(--header_background);
- color: var(--color-text);
- border-radius: 10px;
- border: 1px solid var(--color-text);
display: none;
- z-index: 1000;
}
- .social-list-item {
- padding: 10px;
+}
+
+footer {
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ color: var(--foreground);
+ background-color: var(--background);
+ position: fixed;
+ bottom: 0;
+ height: 75px;
+ padding: 0 10px;
+}
+
+@media (max-width: 880px) {
+ .page-footer {
+ flex-direction: row;
}
- .social-list-item > a {
- display: flex;
- align-items: center;
- justify-content: space-between;
- text-decoration: none;
- }
- .social-list-divider {
- border: 0.5px solid var(--color-text);
- }
- .social-list-item:hover {
- background-color: var(--color-text);
- color: var(--header_background);
- }
- #show-socials-button {
- background: none;
- border: none;
- cursor: url('https://cdn.nhcarrigan.com/cursors/pointer.cur'), pointer;
- color: var(--color-text);
- font-size: 1rem;
- }
- #show-socials-button > i {
- font-size: 1.5rem;
- }
- #social-list {
- position: absolute;
- bottom: 75px;
- left: 0;
- right: 0;
- width: 100vw;
- max-width: 400px;
- padding: 10px;
- background-color: var(--header_background);
- color: var(--color-text);
- border-radius: 10px;
- border: 1px solid var(--color-text);
- display: none;
- z-index: 1000;
- }
- .social-list-item {
- padding: 10px;
- }
- .social-list-item > a {
- display: flex;
- align-items: center;
- justify-content: space-between;
- text-decoration: none;
- }
- .social-list-divider {
- border: 0.5px solid var(--color-text);
- }
- .social-list-item:hover {
- background-color: var(--color-text);
- color: var(--header_background);
- }
\ No newline at end of file
+}
+
+#navbar {
+ position: fixed;
+ top: 0;
+ height: 50px;
+ width: 100%;
+ z-index: 1;
+}
+
+.page-content {
+ margin-top: 50px;
+}
+
+*::selection {
+ color: var(--color-body) !important;
+ background: var(--color-text) !important;
+}
+
+@media screen and (max-width: 768px) {
+
+.navbar-right > .item {
+ justify-content: right !important;
+ width: 50% !important;
+ right: 0 !important;
+ margin-right: 0 !important;
+ margin-left: auto !important;
+ background: var(--color-nav-bg) !important;
+}
+
+.navbar-left > .item {
+ justify-content: left !important;
+ width: 50% !important;
+ left: 0 !important;
+ margin-left: 0 !important;
+ margin-right: auto !important;
+ background: var(--color-nav-bg) !important;
+}
+}
+
+.home a {
+ text-decoration: underline !important;
+}
+
+.home ul {
+ list-style-type: none !important;
+ padding-left: 0 !important;
+}
+
+
+#show-socials-button {
+ background: none;
+ border: none;
+ cursor: url('https://cdn.nhcarrigan.com/cursors/pointer.cur'), pointer;
+ color: var(--color-text);
+ font-size: 1rem;
+}
+#show-socials-button > i {
+ font-size: 1.5rem;
+}
+#social-list {
+ position: absolute;
+ bottom: 75px;
+ left: 0;
+ right: 0;
+ width: 100vw;
+ max-width: 400px;
+ padding: 10px;
+ background-color: var(--header_background);
+ color: var(--color-text);
+ border-radius: 10px;
+ border: 1px solid var(--color-text);
+ display: none;
+ z-index: 1000;
+}
+.social-list-item {
+ padding: 10px;
+}
+.social-list-item > a {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ text-decoration: none;
+}
+.social-list-divider {
+ border: 0.5px solid var(--color-text);
+}
+.social-list-item:hover {
+ background-color: var(--color-text);
+ color: var(--header_background);
+}
+#show-socials-button {
+ background: none;
+ border: none;
+ cursor: url('https://cdn.nhcarrigan.com/cursors/pointer.cur'), pointer;
+ color: var(--color-text);
+ font-size: 1rem;
+}
+#show-socials-button > i {
+ font-size: 1.5rem;
+}
+#social-list {
+ position: absolute;
+ bottom: 75px;
+ left: 0;
+ right: 0;
+ width: 100vw;
+ max-width: 400px;
+ padding: 10px;
+ background-color: var(--header_background);
+ color: var(--color-text);
+ border-radius: 10px;
+ border: 1px solid var(--color-text);
+ display: none;
+ z-index: 1000;
+}
+.social-list-item {
+ padding: 10px;
+}
+.social-list-item > a {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ text-decoration: none;
+}
+.social-list-divider {
+ border: 0.5px solid var(--color-text);
+}
+.social-list-item:hover {
+ background-color: var(--color-text);
+ color: var(--header_background);
+}
\ No newline at end of file
diff --git a/public/assets/css/theme-trans-pride.css b/public/assets/css/theme-trans-pride.css
index 731a2d7..be521cd 100644
--- a/public/assets/css/theme-trans-pride.css
+++ b/public/assets/css/theme-trans-pride.css
@@ -1,468 +1,468 @@
/* Trans Pride - A light theme for Gitea */
@font-face {
- font-family: 'Vampyr';
- src: url('https://cdn.nhcarrigan.com/fonts/vampyr.ttf') format('truetype');
- }
-
- :root {
- --is-dark-theme: false;
- --fonts-regular: "Vampyr" !important;
- --fonts-proportional: "Vampyr" !important;
- --fonts-monospace: "Vampyr" !important;
- --fonts-emoji: "Vampyr" !important;
- /* Primary (pinks) */
- --color-primary: #ff6b94; /* flag pink pop */
- --color-primary-dark: #db7093; /* medium pink for hover/active */
- --color-primary-light: #ffc0cb; /* soft pastel pink */
- --color-primary-very-light: #ffe6ee;/* pale pink background fills */
-
- /* Main Text & Background */
- --color-text: #2a0a18; /* deep plum text */
- --color-text-light: #4d2037; /* muted variant */
- --color-text-dark: #000000; /* headings/strong */
- --color-body: #DAFFFC; /* almost white with pink tint */
-
- /* UI (trans blues for balance) */
- --color-secondary: #87cefa; /* sky blue */
- --color-secondary-dark: #5dade2; /* medium bright blue */
- --color-secondary-light: #add8e6; /* pastel blue */
-
- /* State Colors */
- --color-success: #5dade2; /* success = strong blue */
- --color-success-dark: #1e90ff;
- --color-success-light: #87cefa;
- --color-danger: #ff4f7a; /* pinkish red */
- --color-danger-dark: #ff2f66;
- --color-danger-light: #ff7fa1;
- --color-warning: #ffb347; /* warm orange */
- --color-warning-dark: #ff9f1a;
- --color-warning-light: #ffd699;
- --color-info: #1e90ff; /* crisp blue */
- --color-info-dark: #187bcd;
- --color-info-light: #87cefa;
-
- /* Other UI Elements */
- --color-menu: #fff9fb;
- --color-card: #ffffff; /* pure white cards */
- --color-markup-table-row: #f5f9ff; /* faint blue row */
- --color-markup-code-block: #fff0f6; /* faint pink block */
- --color-button: #ff6b94; /* primary = pink */
- --color-border: #ffd1dc; /* pale pink border */
- --color-input-border: #add8e6; /* soft blue border */
- --color-input-background: #ffffff;
- --color-small-accent: #87cefa; /* tiny blue accent */
-
- /* Diff Colors (soft pink/blue tints) */
- --color-diff-add-line: #e6f6ff; /* pale blue add */
- --color-diff-add-word: #cceeff;
- --color-diff-del-line: #ffe6f0; /* pale pink delete */
- --color-diff-del-word: #ffccd9;
- --color-diff-section: #f0f6ff;
-
- /* Code Syntax Highlighting (balanced) */
- --color-code-keyword: #1e90ff; /* keywords = bright blue */
- --color-code-function: #ff3b6f; /* functions = hot pink */
- --color-code-string: #db7093; /* strings = medium pink */
- --color-code-number: #5dade2; /* numbers = medium blue */
- --color-code-comment: #8a6b78; /* muted plum comment */
- --color-code-type: #87cefa; /* types = sky blue */
-
- --vscode-editor-background: #fff9fb;/* soft background */
- --color-footer: #DAFFFC;
- --color-nav-bg: #DAFFFC;
- }
-
-
- /* Header */
- .ui.menu.inverted {
- background-color: var(--color-secondary);
- color: var(--color-text);
- }
-
- .ui.secondary.menu .item {
- color: var(--color-text);
- }
-
- .ui.secondary.menu .active.item {
- background-color: var(--color-primary-very-light);
- }
-
- /* Repository header */
- .repository.header {
- background-color: var(--color-menu);
- }
-
- /* Buttons */
- .ui.primary.button {
- background-color: var(--color-primary);
- }
-
- .ui.primary.button:hover {
- background-color: var(--color-primary-dark);
- }
-
- .ui.basic.button {
- box-shadow: 0 0 0 1px var(--color-border) inset;
- color: var(--color-text) !important;
- }
-
- .ui.basic.button:hover {
- background-color: var(--color-primary-very-light) !important;
- color: var(--color-text-dark) !important;
- }
-
- /* Tabs */
- .ui.tabular.menu .item {
- color: var(--color-text-light);
- }
-
- .ui.tabular.menu .active.item {
- background-color: var(--color-primary-very-light);
- color: var(--color-text);
- border-color: var(--color-border);
- }
-
- /* Tables */
- .ui.table thead th {
- background: var(--color-menu);
- color: var(--color-text);
- }
-
- .ui.table {
- border-color: var(--color-border);
- }
-
- /* Form inputs */
- .ui.input input {
- background-color: var(--color-input-background);
- border-color: var(--color-input-border);
- color: var(--color-text);
- }
-
- .ui.input input:focus {
- border-color: var(--color-primary);
- }
-
- /* Labels */
- .ui.label {
- background-color: var(--color-primary-very-light);
- color: var(--color-text);
- }
-
- /* Markdown Content */
- .markdown:not(code) {
- color: var(--color-text);
- }
-
- .markdown code, .markdown pre {
- background-color: var(--color-markup-code-block);
- border-color: var(--color-border);
- }
-
- /* Sidebar */
- .ui.vertical.menu {
- background-color: var(--color-menu);
- }
-
- .ui.vertical.menu .item {
- color: var(--color-text);
- }
-
- .ui.vertical.menu .active.item {
- background-color: var(--color-primary-very-light);
- }
-
- /* Status tags */
- .ui.green.label {
- background-color: var(--color-success) !important;
- color: var(--color-body) !important;
- }
-
- .ui.red.label {
- background-color: var(--color-danger) !important;
- color: var(--color-body) !important;
- }
-
- .ui.yellow.label {
- background-color: var(--color-warning) !important;
- color: var(--color-text-dark) !important;
- }
-
- .ui.blue.label {
- background-color: var(--color-info) !important;
- color: var(--color-body) !important;
- }
-
- /* Dashboard cards */
- .dashboard-card {
- background-color: var(--color-card);
- border-color: var(--color-border);
- }
-
- /* Timeline and activities */
- .timeline-item {
- border-color: var(--color-border);
- }
-
- .timeline-item .badge {
- background-color: var(--color-primary-very-light);
- color: var(--color-text);
- }
-
- /* Code diff view */
- .diff-file-box .code-diff-split .add-code {
- background-color: var(--color-diff-add-line);
- }
-
- .diff-file-box .code-diff-split .del-code {
- background-color: var(--color-diff-del-line);
- }
-
- .diff-file-box .code-diff-split .add-code .add-line {
- background-color: var(--color-diff-add-word);
- }
-
- .diff-file-box .code-diff-split .del-code .del-line {
- background-color: var(--color-diff-del-word);
- }
-
- .monaco-editor, .monaco-diff-editor, .monaco-component, .monaco-editor-background, .monaco-editor .margin {
- background: #fff5f8 !important;
- }
-
- .monaco-editor {
- --vscode-editor-selectionBackground: var(--color-primary) !important;
- --vscode-editor-inactiveSelectionBackground: var(--color-primary) !important;
- --vscode-editor-lineHighlightBackground: var(--color-primary) !important;
- }
-
- .monaco-editor .view-overlays .current-line {
- background-color: var(--color-primary) !important;
- }
-
- .monaco-editor .margin {
- background-color: transparent !important;
- }
-
- .monaco-editor .margin-view-overlays .current-line-margin {
- background-color: var(--color-primary) !important;
- }
-
- .active-line-number {
- background-color: transparent !important;
- }
-
- /* Scrollbar */
- ::-webkit-scrollbar-thumb {
- background: var(--color-primary-light);
- }
-
- ::-webkit-scrollbar-thumb:hover {
- background: var(--color-primary);
- }
-
- ::-webkit-scrollbar-track {
- background: var(--color-primary-very-light);
- }
-
- body::before {
- background: url(https://cdn.nhcarrigan.com/background.png);
- background-size: cover;
- background-position: center;
- width: 100%;
- height: 100%;
- z-index: -100;
- content: "";
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- opacity: 1;
- pointer-events: none;
- }
-
- body::after {
- background: var(--color-body);
- opacity: 0.8;
- width: 100%;
- height: 100%;
- z-index: -50;
- content: "";
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- pointer-events: none;
- }
-
- html {
- cursor: url('https://cdn.nhcarrigan.com/cursors/cursor.cur'), auto;
- font-family: "Vampyr";
- }
-
- a, button, .button, .dropdown {
- cursor: url('https://cdn.nhcarrigan.com/cursors/pointer.cur'), pointer !important;
- }
-
+ font-family: 'Vampyr';
+ src: url('https://cdn.nhcarrigan.com/fonts/vampyr.ttf') format('truetype');
+}
+
+:root {
+ --is-dark-theme: false;
+ --fonts-regular: "Vampyr" !important;
+ --fonts-proportional: "Vampyr" !important;
+ --fonts-monospace: "Vampyr" !important;
+ --fonts-emoji: "Vampyr" !important;
+ /* Primary (pinks) */
+ --color-primary: #ff6b94; /* flag pink pop */
+ --color-primary-dark: #db7093; /* medium pink for hover/active */
+ --color-primary-light: #ffc0cb; /* soft pastel pink */
+ --color-primary-very-light: #ffe6ee;/* pale pink background fills */
+
+ /* Main Text & Background */
+ --color-text: #2a0a18; /* deep plum text */
+ --color-text-light: #4d2037; /* muted variant */
+ --color-text-dark: #000000; /* headings/strong */
+ --color-body: #DAFFFC; /* almost white with pink tint */
+
+ /* UI (trans blues for balance) */
+ --color-secondary: #87cefa; /* sky blue */
+ --color-secondary-dark: #5dade2; /* medium bright blue */
+ --color-secondary-light: #add8e6; /* pastel blue */
+
+ /* State Colors */
+ --color-success: #5dade2; /* success = strong blue */
+ --color-success-dark: #1e90ff;
+ --color-success-light: #87cefa;
+ --color-danger: #ff4f7a; /* pinkish red */
+ --color-danger-dark: #ff2f66;
+ --color-danger-light: #ff7fa1;
+ --color-warning: #ffb347; /* warm orange */
+ --color-warning-dark: #ff9f1a;
+ --color-warning-light: #ffd699;
+ --color-info: #1e90ff; /* crisp blue */
+ --color-info-dark: #187bcd;
+ --color-info-light: #87cefa;
+
+ /* Other UI Elements */
+ --color-menu: #fff9fb;
+ --color-card: #ffffff; /* pure white cards */
+ --color-markup-table-row: #f5f9ff; /* faint blue row */
+ --color-markup-code-block: #fff0f6; /* faint pink block */
+ --color-button: #ff6b94; /* primary = pink */
+ --color-border: #ffd1dc; /* pale pink border */
+ --color-input-border: #add8e6; /* soft blue border */
+ --color-input-background: #ffffff;
+ --color-small-accent: #87cefa; /* tiny blue accent */
+
+ /* Diff Colors (soft pink/blue tints) */
+ --color-diff-add-line: #e6f6ff; /* pale blue add */
+ --color-diff-add-word: #cceeff;
+ --color-diff-del-line: #ffe6f0; /* pale pink delete */
+ --color-diff-del-word: #ffccd9;
+ --color-diff-section: #f0f6ff;
+
+ /* Code Syntax Highlighting (balanced) */
+ --color-code-keyword: #1e90ff; /* keywords = bright blue */
+ --color-code-function: #ff3b6f; /* functions = hot pink */
+ --color-code-string: #db7093; /* strings = medium pink */
+ --color-code-number: #5dade2; /* numbers = medium blue */
+ --color-code-comment: #8a6b78; /* muted plum comment */
+ --color-code-type: #87cefa; /* types = sky blue */
+
+ --vscode-editor-background: #fff9fb;/* soft background */
+ --color-footer: #DAFFFC;
+ --color-nav-bg: #DAFFFC;
+}
+
+
+/* Header */
+.ui.menu.inverted {
+ background-color: var(--color-secondary);
+ color: var(--color-text);
+}
+
+.ui.secondary.menu .item {
+ color: var(--color-text);
+}
+
+.ui.secondary.menu .active.item {
+ background-color: var(--color-primary-very-light);
+}
+
+/* Repository header */
+.repository.header {
+ background-color: var(--color-menu);
+}
+
+/* Buttons */
+.ui.primary.button {
+ background-color: var(--color-primary);
+}
+
+.ui.primary.button:hover {
+ background-color: var(--color-primary-dark);
+}
+
+.ui.basic.button {
+ box-shadow: 0 0 0 1px var(--color-border) inset;
+ color: var(--color-text) !important;
+}
+
+.ui.basic.button:hover {
+ background-color: var(--color-primary-very-light) !important;
+ color: var(--color-text-dark) !important;
+}
+
+/* Tabs */
+.ui.tabular.menu .item {
+ color: var(--color-text-light);
+}
+
+.ui.tabular.menu .active.item {
+ background-color: var(--color-primary-very-light);
+ color: var(--color-text);
+ border-color: var(--color-border);
+}
+
+/* Tables */
+.ui.table thead th {
+ background: var(--color-menu);
+ color: var(--color-text);
+}
+
+.ui.table {
+ border-color: var(--color-border);
+}
+
+/* Form inputs */
+.ui.input input {
+ background-color: var(--color-input-background);
+ border-color: var(--color-input-border);
+ color: var(--color-text);
+}
+
+.ui.input input:focus {
+ border-color: var(--color-primary);
+}
+
+/* Labels */
+.ui.label {
+ background-color: var(--color-primary-very-light);
+ color: var(--color-text);
+}
+
+/* Markdown Content */
+.markdown:not(code) {
+ color: var(--color-text);
+}
+
+.markdown code, .markdown pre {
+ background-color: var(--color-markup-code-block);
+ border-color: var(--color-border);
+}
+
+/* Sidebar */
+.ui.vertical.menu {
+ background-color: var(--color-menu);
+}
+
+.ui.vertical.menu .item {
+ color: var(--color-text);
+}
+
+.ui.vertical.menu .active.item {
+ background-color: var(--color-primary-very-light);
+}
+
+/* Status tags */
+.ui.green.label {
+ background-color: var(--color-success) !important;
+ color: var(--color-body) !important;
+}
+
+.ui.red.label {
+ background-color: var(--color-danger) !important;
+ color: var(--color-body) !important;
+}
+
+.ui.yellow.label {
+ background-color: var(--color-warning) !important;
+ color: var(--color-text-dark) !important;
+}
+
+.ui.blue.label {
+ background-color: var(--color-info) !important;
+ color: var(--color-body) !important;
+}
+
+/* Dashboard cards */
+.dashboard-card {
+ background-color: var(--color-card);
+ border-color: var(--color-border);
+}
+
+/* Timeline and activities */
+.timeline-item {
+ border-color: var(--color-border);
+}
+
+.timeline-item .badge {
+ background-color: var(--color-primary-very-light);
+ color: var(--color-text);
+}
+
+/* Code diff view */
+.diff-file-box .code-diff-split .add-code {
+ background-color: var(--color-diff-add-line);
+}
+
+.diff-file-box .code-diff-split .del-code {
+ background-color: var(--color-diff-del-line);
+}
+
+.diff-file-box .code-diff-split .add-code .add-line {
+ background-color: var(--color-diff-add-word);
+}
+
+.diff-file-box .code-diff-split .del-code .del-line {
+ background-color: var(--color-diff-del-word);
+}
+
+.monaco-editor, .monaco-diff-editor, .monaco-component, .monaco-editor-background, .monaco-editor .margin {
+ background: #fff5f8 !important;
+}
+
+.monaco-editor {
+ --vscode-editor-selectionBackground: var(--color-primary) !important;
+ --vscode-editor-inactiveSelectionBackground: var(--color-primary) !important;
+ --vscode-editor-lineHighlightBackground: var(--color-primary) !important;
+}
+
+.monaco-editor .view-overlays .current-line {
+ background-color: var(--color-primary) !important;
+}
+
+.monaco-editor .margin {
+ background-color: transparent !important;
+}
+
+.monaco-editor .margin-view-overlays .current-line-margin {
+ background-color: var(--color-primary) !important;
+}
+
+.active-line-number {
+ background-color: transparent !important;
+}
+
+/* Scrollbar */
+::-webkit-scrollbar-thumb {
+ background: var(--color-primary-light);
+}
+
+::-webkit-scrollbar-thumb:hover {
+ background: var(--color-primary);
+}
+
+::-webkit-scrollbar-track {
+ background: var(--color-primary-very-light);
+}
+
+body::before {
+ background: url(https://cdn.nhcarrigan.com/background.png);
+ background-size: cover;
+ background-position: center;
+ width: 100%;
+ height: 100%;
+ z-index: -100;
+ content: "";
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ opacity: 1;
+ pointer-events: none;
+}
+
+body::after {
+ background: var(--color-body);
+ opacity: 0.8;
+ width: 100%;
+ height: 100%;
+ z-index: -50;
+ content: "";
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ pointer-events: none;
+}
+
+html {
+ cursor: url('https://cdn.nhcarrigan.com/cursors/cursor.cur'), auto;
+ font-family: "Vampyr";
+}
+
+a, button, .button, .dropdown {
+ cursor: url('https://cdn.nhcarrigan.com/cursors/pointer.cur'), pointer !important;
+}
+
+#tree-nation-offset-website {
+ display: flex;
+ align-items: center;
+}
+@media screen and (max-width: 885px) {
#tree-nation-offset-website {
- display: flex;
- align-items: center;
- }
- @media screen and (max-width: 885px) {
- #tree-nation-offset-website {
- display: none;
- }
- }
-
- footer {
- width: 100%;
- display: flex;
- justify-content: space-between;
- align-items: center;
- color: var(--foreground);
- background-color: var(--background);
- position: fixed;
- bottom: 0;
- height: 75px;
- padding: 0 10px;
- }
-
- @media (max-width: 880px) {
- .page-footer {
- flex-direction: row;
- }
- }
-
- #navbar {
- position: fixed;
- top: 0;
- height: 50px;
- width: 100%;
- z-index: 1;
- }
-
- .page-content {
- margin-top: 50px;
- }
-
- *::selection {
- color: var(--color-body) !important;
- background: var(--color-text) !important;
- }
-
- @media screen and (max-width: 768px) {
-
- .navbar-right > .item {
- justify-content: right !important;
- width: 50% !important;
- right: 0 !important;
- margin-right: 0 !important;
- margin-left: auto !important;
- background: var(--color-nav-bg) !important;
- }
-
- .navbar-left > .item {
- justify-content: left !important;
- width: 50% !important;
- left: 0 !important;
- margin-left: 0 !important;
- margin-right: auto !important;
- background: var(--color-nav-bg) !important;
- }
- }
-
- .home a {
- text-decoration: underline !important;
- }
-
- .home ul {
- list-style-type: none !important;
- padding-left: 0 !important;
- }
-
-
- #show-socials-button {
- background: none;
- border: none;
- cursor: url('https://cdn.nhcarrigan.com/cursors/pointer.cur'), pointer;
- color: var(--color-text);
- font-size: 1rem;
- }
- #show-socials-button > i {
- font-size: 1.5rem;
- }
- #social-list {
- position: absolute;
- bottom: 75px;
- left: 0;
- right: 0;
- width: 100vw;
- max-width: 400px;
- padding: 10px;
- background-color: var(--header_background);
- color: var(--color-text);
- border-radius: 10px;
- border: 1px solid var(--color-text);
display: none;
- z-index: 1000;
}
- .social-list-item {
- padding: 10px;
+}
+
+footer {
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ color: var(--foreground);
+ background-color: var(--background);
+ position: fixed;
+ bottom: 0;
+ height: 75px;
+ padding: 0 10px;
+}
+
+@media (max-width: 880px) {
+ .page-footer {
+ flex-direction: row;
}
- .social-list-item > a {
- display: flex;
- align-items: center;
- justify-content: space-between;
- text-decoration: none;
- }
- .social-list-divider {
- border: 0.5px solid var(--color-text);
- }
- .social-list-item:hover {
- background-color: var(--color-text);
- color: var(--header_background);
- }
- #show-socials-button {
- background: none;
- border: none;
- cursor: url('https://cdn.nhcarrigan.com/cursors/pointer.cur'), pointer;
- color: var(--color-text);
- font-size: 1rem;
- }
- #show-socials-button > i {
- font-size: 1.5rem;
- }
- #social-list {
- position: absolute;
- bottom: 75px;
- left: 0;
- right: 0;
- width: 100vw;
- max-width: 400px;
- padding: 10px;
- background-color: var(--header_background);
- color: var(--color-text);
- border-radius: 10px;
- border: 1px solid var(--color-text);
- display: none;
- z-index: 1000;
- }
- .social-list-item {
- padding: 10px;
- }
- .social-list-item > a {
- display: flex;
- align-items: center;
- justify-content: space-between;
- text-decoration: none;
- }
- .social-list-divider {
- border: 0.5px solid var(--color-text);
- }
- .social-list-item:hover {
- background-color: var(--color-text);
- color: var(--header_background);
- }
\ No newline at end of file
+}
+
+#navbar {
+ position: fixed;
+ top: 0;
+ height: 50px;
+ width: 100%;
+ z-index: 1;
+}
+
+.page-content {
+ margin-top: 50px;
+}
+
+*::selection {
+ color: var(--color-body) !important;
+ background: var(--color-text) !important;
+}
+
+@media screen and (max-width: 768px) {
+
+.navbar-right > .item {
+ justify-content: right !important;
+ width: 50% !important;
+ right: 0 !important;
+ margin-right: 0 !important;
+ margin-left: auto !important;
+ background: var(--color-nav-bg) !important;
+}
+
+.navbar-left > .item {
+ justify-content: left !important;
+ width: 50% !important;
+ left: 0 !important;
+ margin-left: 0 !important;
+ margin-right: auto !important;
+ background: var(--color-nav-bg) !important;
+}
+}
+
+.home a {
+ text-decoration: underline !important;
+}
+
+.home ul {
+ list-style-type: none !important;
+ padding-left: 0 !important;
+}
+
+
+#show-socials-button {
+ background: none;
+ border: none;
+ cursor: url('https://cdn.nhcarrigan.com/cursors/pointer.cur'), pointer;
+ color: var(--color-text);
+ font-size: 1rem;
+}
+#show-socials-button > i {
+ font-size: 1.5rem;
+}
+#social-list {
+ position: absolute;
+ bottom: 75px;
+ left: 0;
+ right: 0;
+ width: 100vw;
+ max-width: 400px;
+ padding: 10px;
+ background-color: var(--header_background);
+ color: var(--color-text);
+ border-radius: 10px;
+ border: 1px solid var(--color-text);
+ display: none;
+ z-index: 1000;
+}
+.social-list-item {
+ padding: 10px;
+}
+.social-list-item > a {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ text-decoration: none;
+}
+.social-list-divider {
+ border: 0.5px solid var(--color-text);
+}
+.social-list-item:hover {
+ background-color: var(--color-text);
+ color: var(--header_background);
+}
+#show-socials-button {
+ background: none;
+ border: none;
+ cursor: url('https://cdn.nhcarrigan.com/cursors/pointer.cur'), pointer;
+ color: var(--color-text);
+ font-size: 1rem;
+}
+#show-socials-button > i {
+ font-size: 1.5rem;
+}
+#social-list {
+ position: absolute;
+ bottom: 75px;
+ left: 0;
+ right: 0;
+ width: 100vw;
+ max-width: 400px;
+ padding: 10px;
+ background-color: var(--header_background);
+ color: var(--color-text);
+ border-radius: 10px;
+ border: 1px solid var(--color-text);
+ display: none;
+ z-index: 1000;
+}
+.social-list-item {
+ padding: 10px;
+}
+.social-list-item > a {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ text-decoration: none;
+}
+.social-list-divider {
+ border: 0.5px solid var(--color-text);
+}
+.social-list-item:hover {
+ background-color: var(--color-text);
+ color: var(--header_background);
+}
\ No newline at end of file
diff --git a/public/assets/css/theme-witch.css b/public/assets/css/theme-witch.css
new file mode 100644
index 0000000..f4b9be1
--- /dev/null
+++ b/public/assets/css/theme-witch.css
@@ -0,0 +1,940 @@
+/* Witchy Purple Rose - A mystical theme for Gitea */
+
+@font-face {
+ font-family: 'Vampyr';
+ src: url('https://cdn.nhcarrigan.com/fonts/vampyr.ttf') format('truetype');
+ }
+
+ @import url('https://fonts.googleapis.com/css2?family=Kalam:wght@300;400;700&family=Creepster&family=Griffy&family=Henny+Penny&display=swap');
+
+ :root {
+ --is-dark-theme: false;
+ --fonts-regular: "Kalam", cursive !important;
+ --fonts-proportional: "Griffy", cursive !important;
+ --fonts-monospace: "Courier New", monospace !important;
+ --fonts-emoji: "Apple Color Emoji", "Segoe UI Emoji" !important;
+
+ /* Witchy Purple Rose Palette */
+ --witch-purple: #2B1B3D;
+ --witch-plum: #44275A;
+ --witch-rose: #A8577E;
+ --witch-mauve: #D4A5C7;
+ --witch-lavender: #E8D5E8;
+ --witch-black: #0A0009;
+ --witch-silver: #C0C0C0;
+ --witch-moon: #F5F5F5;
+ --witch-shadow: rgba(10, 0, 9, 0.7);
+
+ /* Primary (roses) */
+ --color-primary: #A8577E;
+ --color-primary-dark: #8B4567;
+ --color-primary-light: #D4A5C7;
+ --color-primary-very-light: #F0E0EC;
+
+ /* Main Text & Background */
+ --color-text: #2B1B3D;
+ --color-text-light: #44275A;
+ --color-text-dark: #0A0009;
+ --color-body: #F5F5F5;
+
+ /* UI (mystical purples) */
+ --color-secondary: #44275A;
+ --color-secondary-dark: #2B1B3D;
+ --color-secondary-light: #6B4C7A;
+
+ /* State Colors */
+ --color-success: #5D7A5C;
+ --color-success-dark: #4A614A;
+ --color-success-light: #7A9779;
+ --color-danger: #8B3A3A;
+ --color-danger-dark: #6B2C2C;
+ --color-danger-light: #A85555;
+ --color-warning: #8B6914;
+ --color-warning-dark: #6B5010;
+ --color-warning-light: #B8902B;
+ --color-info: #4C5B8B;
+ --color-info-dark: #3A4669;
+ --color-info-light: #6B7AA8;
+
+ /* Other UI Elements */
+ --color-menu: #FBF9FC;
+ --color-card: #FFFFFF;
+ --color-markup-table-row: #F8F5FA;
+ --color-markup-code-block: #FCF8FB;
+ --color-button: #A8577E;
+ --color-border: #E8D5E8;
+ --color-input-border: #D4A5C7;
+ --color-input-background: #FFFFFF;
+ --color-small-accent: #D4A5C7;
+
+ /* Diff Colors (rose/plum tints) */
+ --color-diff-add-line: #E8F0E8;
+ --color-diff-add-word: #D0E0D0;
+ --color-diff-del-line: #F8E8F0;
+ --color-diff-del-word: #F0D0E0;
+ --color-diff-section: #F0E8F8;
+
+ /* Code Syntax Highlighting */
+ --color-code-keyword: #44275A;
+ --color-code-function: #A8577E;
+ --color-code-string: #8B4567;
+ --color-code-number: #6B4C7A;
+ --color-code-comment: #8A6B78;
+ --color-code-type: #5B4A6B;
+
+ --vscode-editor-background: #FCF9FB;
+ --color-footer: #2B1B3D;
+ --color-nav-bg: #44275A;
+
+ /* Editor selection colors - this is what Gitea uses */
+ --color-editor-line-highlight: var(--witch-lavender);
+ --color-code-bg: #FDF9FC;
+ }
+
+ /* Custom Cursors */
+ html {
+ cursor: url('data:image/svg+xml;utf8,') 0 0, auto;
+ font-family: "Kalam", cursive;
+ }
+
+ a, button, .button, .dropdown, .ui.button, .ui.dropdown {
+ cursor: url('data:image/svg+xml;utf8,') 0 0, pointer !important;
+ }
+
+ input[type="text"], input[type="email"], input[type="password"], textarea {
+ cursor: url('data:image/svg+xml;utf8,') 12 24, text !important;
+ }
+
+ /* Body base styling - color NOT set here to preserve syntax highlighting */
+ body {
+ font-family: "Kalam", cursive !important;
+ font-size: 16px;
+ line-height: 1.6;
+ }
+
+ /* Set default text color on specific containers, not body/code */
+ .ui.container:not(.file-view):not(.code-view),
+ .ui.segment:not(.file-view):not(.code-view),
+ .ui.card,
+ .ui.message,
+ .repository-summary,
+ .activity-container {
+ color: var(--witch-purple);
+ }
+
+ /* Typography */
+ h1, h2, h3, h4, h5, h6, .ui.header {
+ font-family: "Griffy", cursive !important;
+ font-weight: 400 !important;
+ letter-spacing: 1px !important;
+ color: var(--witch-plum) !important;
+ }
+
+ /* Ensure all text is readable - but NOT code syntax highlighting */
+ p, li, label {
+ color: var(--witch-purple);
+ }
+
+ /* Table cells - but not in code views */
+ td:not(.lines-code td):not(.lines-num td),
+ th:not(.lines-code th) {
+ color: var(--witch-purple);
+ }
+
+ a {
+ color: var(--witch-rose) !important;
+ transition: all 0.3s ease;
+ }
+
+ a:hover {
+ color: var(--witch-plum) !important;
+ text-decoration: underline;
+ }
+
+ h1, .ui.huge.header {
+ text-shadow: 2px 2px 0px var(--witch-rose),
+ 3px 3px 6px rgba(168, 87, 126, 0.3);
+ }
+
+ /* Background Effects */
+ body::before {
+ content: "";
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: url(https://cdn.nhcarrigan.com/background.png);
+ background-size: cover;
+ background-position: center;
+ z-index: -2;
+ pointer-events: none;
+ }
+
+ body::after {
+ content: "";
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background:
+ radial-gradient(circle at 20% 50%, rgba(168, 87, 126, 0.15) 0%, transparent 60%),
+ radial-gradient(circle at 80% 80%, rgba(68, 39, 90, 0.15) 0%, transparent 60%),
+ linear-gradient(180deg,
+ rgba(10, 0, 9, 0.3) 0%,
+ rgba(43, 27, 61, 0.1) 50%,
+ rgba(43, 27, 61, 0.2) 100%
+ );
+ z-index: -1;
+ pointer-events: none;
+ }
+
+ /* Main Content - with margins for fixed nav/footer */
+ body {
+ padding-top: 52px !important;
+ padding-bottom: 75px !important;
+ }
+
+ .page-content, .home, .full.height {
+ background: transparent !important;
+ padding-top: 10px !important;
+ padding-bottom: 10px !important;
+ min-height: calc(100vh - 145px) !important;
+ }
+
+ /* Main container backgrounds - TRANSLUCENT so background shows */
+ .ui.container {
+ background: rgba(255, 255, 255, 0.75) !important;
+ backdrop-filter: blur(8px) !important;
+ border-radius: 10px !important;
+ padding: 20px !important;
+ margin-top: 10px !important;
+ margin-bottom: 10px !important;
+ box-shadow: 0 0 40px rgba(168, 87, 126, 0.15) !important;
+ }
+
+ /* Grid columns should be transparent */
+ .ui.grid > .column, .ui.grid > .row > .column {
+ background: transparent !important;
+ }
+
+ /* Repository/user pages */
+ .repository, .user {
+ background: transparent !important;
+ }
+
+ /* Header/Navigation - FIXED at top */
+ #navbar, .ui.top.secondary.menu.navbar {
+ position: fixed !important;
+ top: 0 !important;
+ left: 0 !important;
+ right: 0 !important;
+ z-index: 1000 !important;
+ height: 52px !important;
+ background: linear-gradient(135deg, var(--witch-plum) 0%, var(--witch-purple) 100%) !important;
+ box-shadow: 0 5px 20px var(--witch-shadow) !important;
+ border: none !important;
+ }
+
+ /* Nav items - LIGHT text on dark background */
+ #navbar .item, #navbar a.item, .ui.secondary.menu .item, .navbar .item {
+ color: var(--witch-moon) !important;
+ transition: all 0.3s ease;
+ }
+
+ #navbar .item:hover, #navbar a.item:hover, .ui.secondary.menu .item:hover {
+ background-color: rgba(212, 165, 199, 0.3) !important;
+ color: white !important;
+ }
+
+ #navbar .active.item, .ui.secondary.menu .active.item {
+ background-color: rgba(212, 165, 199, 0.4) !important;
+ color: white !important;
+ }
+
+ /* Icons in navbar should also be light */
+ #navbar .item i, #navbar .item svg, #navbar .item .icon {
+ color: var(--witch-moon) !important;
+ }
+
+ /* Repository header */
+ .repository.header {
+ background: linear-gradient(to right,
+ var(--color-menu) 0%,
+ rgba(232, 213, 232, 0.5) 100%);
+ border-bottom: 2px solid var(--witch-mauve);
+ }
+
+ /* Buttons */
+ .ui.primary.button, .ui.green.button {
+ background: linear-gradient(135deg,
+ var(--witch-plum) 0%,
+ var(--witch-purple) 100%) !important;
+ color: var(--witch-moon) !important;
+ border: none !important;
+ font-family: "Griffy", cursive !important;
+ letter-spacing: 1px;
+ transition: all 0.3s ease !important;
+ box-shadow: 0 4px 15px rgba(68, 39, 90, 0.3);
+ }
+
+ .ui.primary.button:hover, .ui.green.button:hover {
+ transform: translateY(-2px) scale(1.05) !important;
+ box-shadow: 0 6px 20px rgba(68, 39, 90, 0.4),
+ 0 0 25px rgba(168, 87, 126, 0.3) !important;
+ }
+
+ .ui.basic.button {
+ border: 2px solid var(--witch-plum) !important;
+ color: var(--witch-plum) !important;
+ background: transparent !important;
+ transition: all 0.3s ease !important;
+ }
+
+ .ui.basic.button:hover {
+ background: var(--witch-lavender) !important;
+ color: var(--witch-purple) !important;
+ border-color: var(--witch-rose) !important;
+ transform: translateY(-1px);
+ }
+
+ /* Cards & Panels */
+ .ui.card, .ui.segment, .dashboard-card {
+ background: rgba(255, 255, 255, 0.95) !important;
+ border: 1px solid var(--witch-mauve) !important;
+ box-shadow: 0 4px 20px rgba(168, 87, 126, 0.1),
+ 0 0 40px rgba(68, 39, 90, 0.05) !important;
+ transition: all 0.3s ease;
+ }
+
+ .ui.card:hover, .dashboard-card:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 6px 25px rgba(168, 87, 126, 0.15),
+ 0 0 50px rgba(68, 39, 90, 0.08) !important;
+ }
+
+ /* Tabs - NOT the main nav styling */
+ .ui.tabular.menu {
+ background: transparent !important;
+ box-shadow: none !important;
+ }
+
+ .ui.tabular.menu .item {
+ color: var(--witch-plum) !important;
+ background: transparent !important;
+ font-family: "Kalam", cursive !important;
+ font-weight: 700;
+ transition: all 0.3s ease;
+ }
+
+ .ui.tabular.menu .item:hover {
+ background: rgba(232, 213, 232, 0.3) !important;
+ color: var(--witch-purple) !important;
+ }
+
+ .ui.tabular.menu .active.item {
+ background: rgba(255, 255, 255, 0.8) !important;
+ color: var(--witch-purple) !important;
+ border-color: var(--witch-rose) !important;
+ border-bottom: 3px solid var(--witch-rose) !important;
+ }
+
+ /* Vertical menu should not be dark either */
+ .ui.vertical.menu {
+ background: rgba(255, 255, 255, 0.85) !important;
+ }
+
+ .ui.vertical.menu .item {
+ color: var(--witch-purple) !important;
+ }
+
+ /* Forms */
+ .ui.input input, .ui.form input, .ui.form textarea {
+ background: rgba(255, 255, 255, 0.95) !important;
+ border: 2px solid var(--witch-mauve) !important;
+ color: var(--witch-purple) !important;
+ font-family: "Kalam", cursive !important;
+ border-radius: 10px !important;
+ transition: all 0.3s ease !important;
+ }
+
+ .ui.input input:focus, .ui.form input:focus, .ui.form textarea:focus {
+ border-color: var(--witch-rose) !important;
+ box-shadow: 0 0 0 3px rgba(168, 87, 126, 0.2) !important;
+ background: white !important;
+ }
+
+ /* Labels & Tags */
+ .ui.label {
+ background: linear-gradient(135deg,
+ var(--witch-mauve) 0%,
+ var(--witch-lavender) 100%) !important;
+ color: var(--witch-purple) !important;
+ font-family: "Kalam", cursive !important;
+ font-weight: 700;
+ border: 1px solid var(--witch-rose);
+ }
+
+ /* Status Colors */
+ .ui.green.label {
+ background: linear-gradient(135deg, #7A9779 0%, #5D7A5C 100%) !important;
+ color: white !important;
+ border: 1px solid #5D7A5C;
+ }
+
+ .ui.red.label {
+ background: linear-gradient(135deg, #A85555 0%, #8B3A3A 100%) !important;
+ color: white !important;
+ border: 1px solid #8B3A3A;
+ }
+
+ /* Code Blocks - preserve syntax highlighting */
+
+ /* IMPORTANT: Do NOT set color on code elements - let Chroma/Monaco handle it */
+ .code-view, .file-view, .lines-code, .code-inner {
+ color: unset !important;
+ }
+
+ /* Gitea's code syntax CSS variables */
+ :root {
+ /* Code highlighting colors (witchy theme) */
+ --color-code-bg: #FDF9FC;
+ --color-code-fg: #2B1B3D;
+ --color-code-keyword: #44275A;
+ --color-code-constant: #4C5B8B;
+ --color-code-string: #5D7A5C;
+ --color-code-comment: #8A6B78;
+ --color-code-number: #4C5B8B;
+ --color-code-tag: #A8577E;
+ --color-code-attribute: #6B4C7A;
+ --color-code-symbol: #8B4567;
+ --color-code-class: #8B4567;
+ --color-code-function: #A8577E;
+ --color-code-variable: #6B4C7A;
+ --color-code-operator: #44275A;
+ --color-code-builtin: #A8577E;
+ --color-code-inserted: #5D7A5C;
+ --color-code-deleted: #8B3A3A;
+ }
+
+ /* Monaco editor (code editing) - light background */
+ .monaco-editor,
+ .monaco-diff-editor,
+ .monaco-component,
+ .monaco-editor .monaco-editor-background,
+ .monaco-editor .margin,
+ .monaco-editor .inputarea.ime-input,
+ .monaco-editor .overflow-guard,
+ .monaco-editor .lines-content,
+ .monaco-editor .view-lines,
+ .monaco-editor .minimap,
+ .monaco-editor .minimap-slider {
+ background: #FDF9FC !important;
+ background-color: #FDF9FC !important;
+ }
+
+ /* Monaco editor text - do NOT set color, let Monaco handle syntax */
+ .monaco-editor .view-line {
+ background: transparent !important;
+ }
+
+ /* Monaco editor CSS variables for syntax highlighting */
+ .monaco-editor {
+ --vscode-editor-background: #FDF9FC !important;
+ --vscode-editor-foreground: #2B1B3D !important;
+ --vscode-editorLineNumber-foreground: #8A6B78 !important;
+ --vscode-editorLineNumber-activeForeground: #44275A !important;
+ --vscode-editor-selectionBackground: rgba(168, 87, 126, 0.5) !important;
+ --vscode-editor-inactiveSelectionBackground: rgba(168, 87, 126, 0.3) !important;
+ --vscode-editor-lineHighlightBackground: rgba(232, 213, 232, 0.4) !important;
+ --vscode-editorGutter-background: #FDF9FC !important;
+ }
+
+ /* ========================================
+ CODE EDITOR SELECTION STYLES
+ Gitea uses CodeMirror, not Monaco!
+ ======================================== */
+
+ /* CodeMirror selection - this is what Gitea actually uses */
+ .CodeMirror-selected,
+ .CodeMirror-focused .CodeMirror-selected,
+ .CodeMirror-line::selection,
+ .CodeMirror-line > span::selection,
+ .CodeMirror-line > span > span::selection {
+ background: #A8577E !important;
+ color: #FFFFFF !important;
+ }
+
+ /* CodeMirror cursor */
+ .CodeMirror-cursor {
+ border-left-color: var(--witch-purple) !important;
+ }
+
+ /* CodeMirror active line */
+ .CodeMirror-activeline-background {
+ background: var(--witch-lavender) !important;
+ }
+
+ /* CodeMirror gutter */
+ .CodeMirror-gutters {
+ background: #FDF9FC !important;
+ border-right-color: var(--witch-mauve) !important;
+ }
+
+ .CodeMirror-linenumber {
+ color: var(--witch-rose) !important;
+ }
+
+ /* Monaco editor fallback (in case some views use it) */
+ .monaco-editor {
+ --vscode-editor-selectionBackground: #A8577E !important;
+ --vscode-editor-inactiveSelectionBackground: rgba(168, 87, 126, 0.5) !important;
+ --vscode-editor-selectionForeground: #FFFFFF !important;
+ --vscode-editor-selectionHighlightBackground: rgba(168, 87, 126, 0.4) !important;
+ }
+
+ /* Monaco selection overlay */
+ .monaco-editor .view-overlays .selected-text,
+ .monaco-editor .selected-text {
+ background-color: #A8577E !important;
+ background: #A8577E !important;
+ opacity: 1 !important;
+ }
+
+ /* Native selection fallback for all editors */
+ .monaco-editor *::selection,
+ .CodeMirror *::selection,
+ .code-editor *::selection {
+ background-color: #A8577E !important;
+ color: #FFFFFF !important;
+ }
+
+ /* Fix current line highlight in the main content area */
+ .monaco-editor .view-overlays .current-line,
+ .monaco-editor .current-line {
+ background-color: rgba(232, 213, 232, 0.4) !important;
+ border: none !important;
+ }
+
+ /* Fix margin/gutter area - prevent black background on selected line */
+ .monaco-editor .margin,
+ .monaco-editor .margin-view-overlays {
+ background-color: #FDF9FC !important;
+ }
+
+ .monaco-editor .margin-view-overlays .current-line-margin,
+ .monaco-editor .current-line-margin {
+ background-color: rgba(232, 213, 232, 0.4) !important;
+ border: none !important;
+ }
+
+ /* Active line number row background */
+ .monaco-editor .margin-view-overlays .line-numbers.active-line-number {
+ background-color: rgba(232, 213, 232, 0.4) !important;
+ }
+
+ /* Monaco syntax token colors */
+ .monaco-editor .mtk1 { color: #2B1B3D !important; } /* Default text */
+ .monaco-editor .mtk2 { color: #8A6B78 !important; } /* Comments */
+ .monaco-editor .mtk3 { color: #5D7A5C !important; } /* Strings */
+ .monaco-editor .mtk4 { color: #4C5B8B !important; } /* Numbers */
+ .monaco-editor .mtk5 { color: #44275A !important; } /* Keywords */
+ .monaco-editor .mtk6 { color: #A8577E !important; } /* Functions */
+ .monaco-editor .mtk7 { color: #6B4C7A !important; } /* Variables */
+ .monaco-editor .mtk8 { color: #8B4567 !important; } /* Types/Classes */
+ .monaco-editor .mtk9 { color: #44275A !important; } /* Operators */
+ .monaco-editor .mtk10 { color: #A8577E !important; } /* Built-ins */
+ .monaco-editor .mtk11 { color: #6B4C7A !important; } /* Attributes */
+ .monaco-editor .mtk12 { color: #5D7A5C !important; } /* String escape */
+
+ /* Monaco editor gutter/margin */
+ .monaco-editor .margin-view-overlays .line-numbers {
+ color: #8A6B78 !important;
+ }
+
+ .monaco-editor .current-line ~ .line-numbers {
+ color: #44275A !important;
+ }
+
+ /* Only style inline code in markdown, not code blocks */
+ .markup code,
+ .markdown code {
+ background: rgba(232, 213, 232, 0.3) !important;
+ color: var(--witch-purple) !important;
+ font-family: 'Courier New', monospace !important;
+ border: 1px solid var(--witch-lavender);
+ border-radius: 5px;
+ padding: 2px 6px;
+ }
+
+ /* Code view container - add bottom margin for fixed footer */
+ .code-view, .file-view {
+ background: rgba(255, 255, 255, 0.95) !important;
+ margin-bottom: 80px !important;
+ padding-bottom: 20px !important;
+ }
+
+ /* File content wrapper needs space too */
+ .file-content, .view-raw {
+ padding-bottom: 100px !important;
+ }
+
+ /* ========================================
+ CHROMA SYNTAX HIGHLIGHTING (Gitea uses this)
+ Witchy purple/rose theme
+ ======================================== */
+
+ /* Code block container - let child elements have their own colors */
+ .chroma {
+ background: rgba(252, 248, 251, 0.95) !important;
+ }
+
+ /* Lines of code container */
+ .lines-code, .lines-num, .code-inner, .file-view .code {
+ background: transparent !important;
+ }
+
+ /* Individual code cells */
+ .lines-code td, .code-inner code {
+ color: inherit !important;
+ }
+
+ /* Error */
+ .chroma .err { color: #8B3A3A !important; }
+
+ /* Line link, line highlight, line numbers, line table */
+ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit; }
+ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
+ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
+ .chroma .hl { background-color: rgba(212, 165, 199, 0.3) !important; }
+ .chroma .ln, .chroma .lnt { color: #8A6B78 !important; padding: 0 8px; }
+
+ /* Keyword */
+ .chroma .k { color: #44275A !important; font-weight: bold; }
+ .chroma .kc { color: #44275A !important; font-weight: bold; } /* Keyword.Constant */
+ .chroma .kd { color: #44275A !important; font-weight: bold; } /* Keyword.Declaration */
+ .chroma .kn { color: #44275A !important; font-weight: bold; } /* Keyword.Namespace */
+ .chroma .kp { color: #44275A !important; } /* Keyword.Pseudo */
+ .chroma .kr { color: #44275A !important; font-weight: bold; } /* Keyword.Reserved */
+ .chroma .kt { color: #5B4A6B !important; } /* Keyword.Type */
+
+ /* Name */
+ .chroma .n { color: var(--witch-purple) !important; }
+ .chroma .na { color: #6B4C7A !important; } /* Name.Attribute */
+ .chroma .nb { color: #A8577E !important; } /* Name.Builtin */
+ .chroma .nc { color: #8B4567 !important; font-weight: bold; } /* Name.Class */
+ .chroma .no { color: #6B4C7A !important; } /* Name.Constant */
+ .chroma .nd { color: #A8577E !important; } /* Name.Decorator */
+ .chroma .ni { color: var(--witch-purple) !important; font-weight: bold; } /* Name.Entity */
+ .chroma .ne { color: #8B3A3A !important; font-weight: bold; } /* Name.Exception */
+ .chroma .nf { color: #A8577E !important; } /* Name.Function */
+ .chroma .nl { color: var(--witch-purple) !important; } /* Name.Label */
+ .chroma .nn { color: #44275A !important; } /* Name.Namespace */
+ .chroma .nt { color: #44275A !important; font-weight: bold; } /* Name.Tag */
+ .chroma .nv { color: #6B4C7A !important; } /* Name.Variable */
+ .chroma .bp { color: #A8577E !important; } /* Name.Builtin.Pseudo */
+ .chroma .vc { color: #6B4C7A !important; } /* Name.Variable.Class */
+ .chroma .vg { color: #6B4C7A !important; } /* Name.Variable.Global */
+ .chroma .vi { color: #6B4C7A !important; } /* Name.Variable.Instance */
+ .chroma .vm { color: #6B4C7A !important; } /* Name.Variable.Magic */
+
+ /* Literal */
+ .chroma .l { color: #8B4567 !important; }
+ .chroma .ld { color: #5D7A5C !important; } /* Literal.Date */
+ .chroma .s { color: #5D7A5C !important; } /* String */
+ .chroma .sa { color: #5D7A5C !important; } /* String.Affix */
+ .chroma .sb { color: #5D7A5C !important; } /* String.Backtick */
+ .chroma .sc { color: #5D7A5C !important; } /* String.Char */
+ .chroma .dl { color: #5D7A5C !important; } /* String.Delimiter */
+ .chroma .sd { color: #5D7A5C !important; font-style: italic; } /* String.Doc */
+ .chroma .s2 { color: #5D7A5C !important; } /* String.Double */
+ .chroma .se { color: #8B4567 !important; font-weight: bold; } /* String.Escape */
+ .chroma .sh { color: #5D7A5C !important; } /* String.Heredoc */
+ .chroma .si { color: #8B4567 !important; } /* String.Interpol */
+ .chroma .sx { color: #5D7A5C !important; } /* String.Other */
+ .chroma .sr { color: #A8577E !important; } /* String.Regex */
+ .chroma .s1 { color: #5D7A5C !important; } /* String.Single */
+ .chroma .ss { color: #A8577E !important; } /* String.Symbol */
+
+ /* Number */
+ .chroma .m { color: #4C5B8B !important; } /* Number */
+ .chroma .mb { color: #4C5B8B !important; } /* Number.Bin */
+ .chroma .mf { color: #4C5B8B !important; } /* Number.Float */
+ .chroma .mh { color: #4C5B8B !important; } /* Number.Hex */
+ .chroma .mi { color: #4C5B8B !important; } /* Number.Integer */
+ .chroma .il { color: #4C5B8B !important; } /* Number.Integer.Long */
+ .chroma .mo { color: #4C5B8B !important; } /* Number.Oct */
+
+ /* Operator */
+ .chroma .o { color: #44275A !important; } /* Operator */
+ .chroma .ow { color: #44275A !important; font-weight: bold; } /* Operator.Word */
+
+ /* Punctuation */
+ .chroma .p { color: var(--witch-purple) !important; }
+
+ /* Comment */
+ .chroma .c { color: #8A6B78 !important; font-style: italic; }
+ .chroma .ch { color: #8A6B78 !important; font-style: italic; } /* Comment.Hashbang */
+ .chroma .cm { color: #8A6B78 !important; font-style: italic; } /* Comment.Multiline */
+ .chroma .cp { color: #6B4C7A !important; } /* Comment.Preproc */
+ .chroma .cpf { color: #8A6B78 !important; font-style: italic; } /* Comment.PreprocFile */
+ .chroma .c1 { color: #8A6B78 !important; font-style: italic; } /* Comment.Single */
+ .chroma .cs { color: #8A6B78 !important; font-style: italic; font-weight: bold; } /* Comment.Special */
+
+ /* Generic */
+ .chroma .gd { color: #8B3A3A !important; background-color: rgba(255, 200, 200, 0.3); } /* Generic.Deleted */
+ .chroma .ge { font-style: italic; } /* Generic.Emph */
+ .chroma .gr { color: #8B3A3A !important; } /* Generic.Error */
+ .chroma .gh { color: #44275A !important; font-weight: bold; } /* Generic.Heading */
+ .chroma .gi { color: #5D7A5C !important; background-color: rgba(200, 255, 200, 0.3); } /* Generic.Inserted */
+ .chroma .go { color: #8A6B78 !important; } /* Generic.Output */
+ .chroma .gp { color: #A8577E !important; font-weight: bold; } /* Generic.Prompt */
+ .chroma .gs { font-weight: bold; } /* Generic.Strong */
+ .chroma .gu { color: #6B4C7A !important; font-weight: bold; } /* Generic.Subheading */
+ .chroma .gt { color: #8B3A3A !important; } /* Generic.Traceback */
+ .chroma .gl { text-decoration: underline; } /* Generic.Underline */
+
+ /* Also style highlight.js classes in case Gitea uses those */
+ .hljs { background: rgba(252, 248, 251, 0.95) !important; }
+ .hljs-keyword, .hljs-selector-tag, .hljs-literal { color: #44275A !important; font-weight: bold; }
+ .hljs-string, .hljs-doctag { color: #5D7A5C !important; }
+ .hljs-number, .hljs-literal { color: #4C5B8B !important; }
+ .hljs-comment { color: #8A6B78 !important; font-style: italic; }
+ .hljs-function, .hljs-title { color: #A8577E !important; }
+ .hljs-class, .hljs-type { color: #8B4567 !important; font-weight: bold; }
+ .hljs-variable, .hljs-attr { color: #6B4C7A !important; }
+ .hljs-built_in, .hljs-builtin-name { color: #A8577E !important; }
+
+ /* Gitea's code-lines styling */
+ .code-line {
+ background: transparent !important;
+ }
+
+ /* Make sure span elements INSIDE code views inherit color from parent */
+ .code-view span,
+ .file-view span,
+ .lines-code span,
+ .chroma span,
+ .hljs span {
+ color: inherit;
+ }
+
+ /* Tables */
+ .ui.table {
+ border: 1px solid var(--witch-mauve) !important;
+ }
+
+ .ui.table thead th {
+ background: linear-gradient(to right,
+ var(--witch-lavender) 0%,
+ rgba(232, 213, 232, 0.7) 100%) !important;
+ color: var(--witch-purple) !important;
+ font-family: "Griffy", cursive !important;
+ font-weight: 400;
+ letter-spacing: 1px;
+ }
+
+ .ui.table tbody tr:hover {
+ background: rgba(212, 165, 199, 0.1) !important;
+ }
+
+ /* Scrollbars */
+ ::-webkit-scrollbar {
+ width: 12px;
+ height: 12px;
+ }
+
+ ::-webkit-scrollbar-track {
+ background: var(--witch-lavender);
+ border-radius: 6px;
+ }
+
+ ::-webkit-scrollbar-thumb {
+ background: linear-gradient(to bottom,
+ var(--witch-rose) 0%,
+ var(--witch-plum) 100%);
+ border-radius: 6px;
+ border: 2px solid var(--witch-lavender);
+ }
+
+ ::-webkit-scrollbar-thumb:hover {
+ background: var(--witch-purple);
+ }
+
+ /* Selection */
+ ::selection {
+ background: var(--witch-rose) !important;
+ color: var(--witch-moon) !important;
+ }
+
+ /* Footer - FIXED at bottom */
+ footer, .page-footer {
+ position: fixed !important;
+ bottom: 0 !important;
+ left: 0 !important;
+ right: 0 !important;
+ z-index: 1000 !important;
+ height: 75px !important;
+ display: flex !important;
+ align-items: center !important;
+ justify-content: space-between !important;
+ padding: 0 20px !important;
+ background: linear-gradient(135deg, var(--witch-purple) 0%, var(--witch-plum) 100%) !important;
+ color: var(--witch-moon) !important;
+ border-top: 2px solid var(--witch-mauve) !important;
+ box-shadow: 0 -5px 20px rgba(168, 87, 126, 0.3) !important;
+ }
+
+ footer *, .page-footer * {
+ color: var(--witch-moon) !important;
+ }
+
+ footer a, .page-footer a {
+ color: var(--witch-mauve) !important;
+ transition: all 0.3s ease;
+ }
+
+ footer a:hover, .page-footer a:hover {
+ color: white !important;
+ text-shadow: 0 0 10px rgba(212, 165, 199, 0.5);
+ }
+
+ /* Footer links container */
+ footer .ui.container, .page-footer .ui.container {
+ background: transparent !important;
+ box-shadow: none !important;
+ padding: 0 !important;
+ margin: 0 !important;
+ display: flex !important;
+ align-items: center !important;
+ justify-content: space-between !important;
+ width: 100% !important;
+ max-width: 100% !important;
+ }
+
+ /* Fun animations */
+ @keyframes float {
+ 0%, 100% { transform: translateY(0); }
+ 50% { transform: translateY(-10px); }
+ }
+
+ .repository .icon {
+ animation: float 6s ease-in-out infinite;
+ }
+
+ /* Special hover effects */
+ .ui.menu .item::after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ width: 0;
+ height: 2px;
+ background: var(--witch-rose);
+ transition: all 0.3s ease;
+ transform: translateX(-50%);
+ }
+
+ .ui.menu .item:hover::after {
+ width: 80%;
+ }
+
+ /* Modal overlays */
+ .ui.modal {
+ background: rgba(255, 255, 255, 0.98) !important;
+ border: 2px solid var(--witch-mauve) !important;
+ box-shadow: 0 0 60px rgba(168, 87, 126, 0.4),
+ 0 20px 40px rgba(68, 39, 90, 0.3) !important;
+ }
+
+ .ui.dimmer {
+ background: rgba(10, 0, 9, 0.8) !important;
+ backdrop-filter: blur(5px);
+ }
+
+ /* Sidebar/Vertical Menu - already styled above, just active state */
+ .ui.vertical.menu .active.item {
+ background: var(--witch-lavender) !important;
+ color: var(--witch-plum) !important;
+ border-left: 3px solid var(--witch-rose) !important;
+ }
+
+ /* Dropdown menus - INCLUDING navbar dropdowns */
+ .ui.dropdown .menu,
+ #navbar .ui.dropdown .menu,
+ .ui.top.secondary.menu .ui.dropdown .menu {
+ background: rgba(255, 255, 255, 0.98) !important;
+ border: 1px solid var(--witch-mauve) !important;
+ box-shadow: 0 4px 20px rgba(168, 87, 126, 0.2) !important;
+ }
+
+ .ui.dropdown .menu .item,
+ #navbar .ui.dropdown .menu .item,
+ .ui.top.secondary.menu .ui.dropdown .menu .item {
+ color: var(--witch-purple) !important;
+ background: transparent !important;
+ }
+
+ .ui.dropdown .menu .item:hover,
+ #navbar .ui.dropdown .menu .item:hover,
+ .ui.top.secondary.menu .ui.dropdown .menu .item:hover {
+ background: var(--witch-lavender) !important;
+ color: var(--witch-plum) !important;
+ }
+
+ /* Dropdown menu text must be dark */
+ .ui.dropdown .menu .item *,
+ #navbar .ui.dropdown .menu .item * {
+ color: var(--witch-purple) !important;
+ }
+
+ .ui.dropdown .menu .item:hover *,
+ #navbar .ui.dropdown .menu .item:hover * {
+ color: var(--witch-plum) !important;
+ }
+
+ /* Message/alert boxes */
+ .ui.message {
+ background: rgba(255, 255, 255, 0.95) !important;
+ border: 1px solid var(--witch-mauve) !important;
+ color: var(--witch-purple) !important;
+ }
+
+ .ui.info.message {
+ background: rgba(232, 213, 232, 0.5) !important;
+ border-color: var(--witch-rose) !important;
+ }
+
+ .ui.warning.message {
+ background: rgba(255, 243, 205, 0.8) !important;
+ border-color: var(--color-warning) !important;
+ }
+
+ .ui.error.message, .ui.negative.message {
+ background: rgba(255, 230, 230, 0.8) !important;
+ border-color: var(--color-danger) !important;
+ }
+
+ .ui.success.message, .ui.positive.message {
+ background: rgba(230, 255, 230, 0.8) !important;
+ border-color: var(--color-success) !important;
+ }
+
+ /* List items */
+ .ui.list .item, .ui.list .item .content {
+ color: var(--witch-purple) !important;
+ }
+
+ /* Breadcrumbs */
+ .ui.breadcrumb {
+ color: var(--witch-plum) !important;
+ }
+
+ .ui.breadcrumb a {
+ color: var(--witch-rose) !important;
+ }
+
+ .ui.breadcrumb .divider {
+ color: var(--witch-mauve) !important;
+ }
\ No newline at end of file
diff --git a/templates/base/footer.tmpl b/templates/base/footer.tmpl
index 98f24df..3eba5c8 100644
--- a/templates/base/footer.tmpl
+++ b/templates/base/footer.tmpl
@@ -1,94 +1,49 @@
+
+
-
-