chore: sync current state
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 52s

This commit is contained in:
2026-02-03 11:08:41 -08:00
parent bf6949df8e
commit 9c4e64af09
6 changed files with 1910 additions and 1014 deletions
+5 -4
View File
@@ -9,6 +9,7 @@ DISABLE_REGULAR_ORG_CREATION=true
[repository] [repository]
ROOT = /data/git/repositories ROOT = /data/git/repositories
MAX_CREATION_LIMIT = 0 MAX_CREATION_LIMIT = 0
ALLOW_FORK_WITHOUT_MAXIMUM_LIMIT = false
[repository.local] [repository.local]
LOCAL_COPY_PATH = /data/gitea/tmp/local-repo LOCAL_COPY_PATH = /data/gitea/tmp/local-repo
@@ -66,7 +67,7 @@ INSTALL_LOCK = true
SECRET_KEY = SECRET_KEY =
REVERSE_PROXY_LIMIT = 1 REVERSE_PROXY_LIMIT = 1
REVERSE_PROXY_TRUSTED_PROXIES = * REVERSE_PROXY_TRUSTED_PROXIES = *
INTERNAL_TOKEN = INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE3Mzc1NzgzMzl9.RU-_Fbr2ONiw-F2mADFaWwvXXVsQezy5jjgSQNE61sg
PASSWORD_HASH_ALGO = pbkdf2 PASSWORD_HASH_ALGO = pbkdf2
[service] [service]
@@ -96,7 +97,7 @@ PROTOCOL = smtps
SMTP_ADDR = mail.nhcarrigan.com SMTP_ADDR = mail.nhcarrigan.com
SMTP_PORT = 465 SMTP_PORT = 465
USER = noreply@nhcarrigan.com USER = noreply@nhcarrigan.com
PASSWD = PASSWD = `PhBY8Ag4XcNh`
[openid] [openid]
ENABLE_OPENID_SIGNIN = false ENABLE_OPENID_SIGNIN = false
@@ -115,5 +116,5 @@ DEFAULT_TRUST_MODEL = committer
JWT_SECRET = JWT_SECRET =
[ui] [ui]
DEFAULT_THEME = trans-pride DEFAULT_THEME = witch
THEMES = trans-pride,trans-pride-dark THEMES = trans-pride,trans-pride-dark,witch
+407 -407
View File
@@ -1,468 +1,468 @@
/* Trans Wrath - A dark mode variant of Trans Pride for Gitea */ /* Trans Wrath - A dark mode variant of Trans Pride for Gitea */
@font-face { @font-face {
font-family: 'Vampyr'; font-family: 'Vampyr';
src: url('https://cdn.nhcarrigan.com/fonts/vampyr.ttf') format('truetype'); src: url('https://cdn.nhcarrigan.com/fonts/vampyr.ttf') format('truetype');
} }
:root { :root {
--fonts-regular: "Vampyr" !important; --fonts-regular: "Vampyr" !important;
--fonts-proportional: "Vampyr" !important; --fonts-proportional: "Vampyr" !important;
--fonts-monospace: "Vampyr" !important; --fonts-monospace: "Vampyr" !important;
--fonts-emoji: "Vampyr" !important; --fonts-emoji: "Vampyr" !important;
--is-dark-theme: true; --is-dark-theme: true;
/* Primary (pinks) */ /* Primary (pinks) */
--color-primary: #ff6b94; /* flag pink pop */ --color-primary: #ff6b94; /* flag pink pop */
--color-primary-dark: #ff3b6f; /* deeper pink for hover/active */ --color-primary-dark: #ff3b6f; /* deeper pink for hover/active */
--color-primary-light: #ffb6c1; /* soft pink for subtle accents */ --color-primary-light: #ffb6c1; /* soft pink for subtle accents */
--color-primary-very-light: #3a1a2a; /* dim pink-plum for muted fills */ --color-primary-very-light: #3a1a2a; /* dim pink-plum for muted fills */
/* Main Text & Background */ /* Main Text & Background */
--color-text: #ffe6ee; /* near-white with pink warmth */ --color-text: #ffe6ee; /* near-white with pink warmth */
--color-text-light: #ffd1dc; /* lighter/paler text */ --color-text-light: #ffd1dc; /* lighter/paler text */
--color-text-dark: #ffc0cb; /* headings/links emphasis */ --color-text-dark: #ffc0cb; /* headings/links emphasis */
--color-body: #2a0a18; /* your existing plum base */ --color-body: #2a0a18; /* your existing plum base */
/* UI (blues for contrast = trans stripes!) */ /* UI (blues for contrast = trans stripes!) */
--color-secondary: #3b6ea8; /* medium trans-blue */ --color-secondary: #3b6ea8; /* medium trans-blue */
--color-secondary-dark: #2d5a8b; /* hover/active */ --color-secondary-dark: #2d5a8b; /* hover/active */
--color-secondary-light: #4f84c2; /* borders/badges */ --color-secondary-light: #4f84c2; /* borders/badges */
/* State Colors */ /* State Colors */
--color-success: #87cefa; /* sky blue success */ --color-success: #87cefa; /* sky blue success */
--color-success-dark: #5dade2; --color-success-dark: #5dade2;
--color-success-light: #add8e6; --color-success-light: #add8e6;
--color-danger: #ff4f7a; /* pinkish red */ --color-danger: #ff4f7a; /* pinkish red */
--color-danger-dark: #ff2f66; --color-danger-dark: #ff2f66;
--color-danger-light: #ff7fa1; --color-danger-light: #ff7fa1;
--color-warning: #ffc3a0; /* peach pairs nicely */ --color-warning: #ffc3a0; /* peach pairs nicely */
--color-warning-dark: #ffb78f; --color-warning-dark: #ffb78f;
--color-warning-light: #ffd4b7; --color-warning-light: #ffd4b7;
--color-info: #5dade2; /* bright info blue */ --color-info: #5dade2; /* bright info blue */
--color-info-dark: #3f8ecb; --color-info-dark: #3f8ecb;
--color-info-light: #87c7f1; --color-info-light: #87c7f1;
/* Other UI Elements */ /* Other UI Elements */
--color-menu: #2a0a18; --color-menu: #2a0a18;
--color-card: #241624; /* slightly darker than body */ --color-card: #241624; /* slightly darker than body */
--color-markup-table-row: #2f1b30; /* alternating rows */ --color-markup-table-row: #2f1b30; /* alternating rows */
--color-markup-code-block: #2f1b30; /* code blocks */ --color-markup-code-block: #2f1b30; /* code blocks */
--color-button: #ff6b94; /* primary buttons = pink */ --color-button: #ff6b94; /* primary buttons = pink */
--color-border: #3a2847; /* muted plum border */ --color-border: #3a2847; /* muted plum border */
--color-input-border: #4f84c2; /* blue focus ring vibe */ --color-input-border: #4f84c2; /* blue focus ring vibe */
--color-input-background: #241624; --color-input-background: #241624;
--color-small-accent: #add8e6; /* tiny blue sparkles */ --color-small-accent: #add8e6; /* tiny blue sparkles */
/* Diff Colors (trans-tinted, still readable) */ /* Diff Colors (trans-tinted, still readable) */
--color-diff-add-line: #162235; /* blue-tinted add */ --color-diff-add-line: #162235; /* blue-tinted add */
--color-diff-add-word: #203149; --color-diff-add-word: #203149;
--color-diff-del-line: #2a1620; /* pink-tinted delete */ --color-diff-del-line: #2a1620; /* pink-tinted delete */
--color-diff-del-word: #3b2030; --color-diff-del-word: #3b2030;
--color-diff-section: #1e1b2a; /* neutral section bg */ --color-diff-section: #1e1b2a; /* neutral section bg */
/* Code Syntax Highlighting (blue + pink duo) */ /* Code Syntax Highlighting (blue + pink duo) */
--color-code-keyword: #1e90ff; /* keywords = trans blue */ --color-code-keyword: #1e90ff; /* keywords = trans blue */
--color-code-function: #ff3b6f; /* functions = deep pink */ --color-code-function: #ff3b6f; /* functions = deep pink */
--color-code-string: #ff9aac; /* strings = soft pink */ --color-code-string: #ff9aac; /* strings = soft pink */
--color-code-number: #5dade2; /* numbers = bright blue */ --color-code-number: #5dade2; /* numbers = bright blue */
--color-code-comment: #c79bb1; /* gentle mauve comment */ --color-code-comment: #c79bb1; /* gentle mauve comment */
--color-code-type: #87cefa; /* types = sky blue */ --color-code-type: #87cefa; /* types = sky blue */
--vscode-editor-background: #151a28; /* cooler dark editor well */ --vscode-editor-background: #151a28; /* cooler dark editor well */
--color-footer: #2a0a18; --color-footer: #2a0a18;
--color-nav-bg: #2a0a18; --color-nav-bg: #2a0a18;
} }
/* Header */ /* Header */
.ui.menu.inverted { .ui.menu.inverted {
background-color: var(--color-secondary); background-color: var(--color-secondary);
color: var(--color-text); color: var(--color-text);
} }
.ui.secondary.menu .item { .ui.secondary.menu .item {
color: var(--color-text); color: var(--color-text);
} }
.ui.secondary.menu .active.item { .ui.secondary.menu .active.item {
background-color: var(--color-primary-very-light); background-color: var(--color-primary-very-light);
} }
/* Repository header */ /* Repository header */
.repository.header { .repository.header {
background-color: var(--color-menu); background-color: var(--color-menu);
} }
/* Buttons */ /* Buttons */
.ui.primary.button { .ui.primary.button {
background-color: var(--color-primary); background-color: var(--color-primary);
} }
.ui.primary.button:hover { .ui.primary.button:hover {
background-color: var(--color-primary-dark); background-color: var(--color-primary-dark);
} }
.ui.basic.button { .ui.basic.button {
box-shadow: 0 0 0 1px var(--color-border) inset; box-shadow: 0 0 0 1px var(--color-border) inset;
color: var(--color-text) !important; color: var(--color-text) !important;
} }
.ui.basic.button:hover { .ui.basic.button:hover {
background-color: var(--color-primary-very-light) !important; background-color: var(--color-primary-very-light) !important;
color: var(--color-text-dark) !important; color: var(--color-text-dark) !important;
} }
/* Tabs */ /* Tabs */
.ui.tabular.menu .item { .ui.tabular.menu .item {
color: var(--color-text-light); color: var(--color-text-light);
} }
.ui.tabular.menu .active.item { .ui.tabular.menu .active.item {
background-color: var(--color-primary-very-light); background-color: var(--color-primary-very-light);
color: var(--color-text); color: var(--color-text);
border-color: var(--color-border); border-color: var(--color-border);
} }
/* Tables */ /* Tables */
.ui.table thead th { .ui.table thead th {
background: var(--color-menu); background: var(--color-menu);
color: var(--color-text); color: var(--color-text);
} }
.ui.table { .ui.table {
border-color: var(--color-border); border-color: var(--color-border);
} }
/* Form inputs */ /* Form inputs */
.ui.input input { .ui.input input {
background-color: var(--color-input-background); background-color: var(--color-input-background);
border-color: var(--color-input-border); border-color: var(--color-input-border);
color: var(--color-text); color: var(--color-text);
} }
.ui.input input:focus { .ui.input input:focus {
border-color: var(--color-primary); border-color: var(--color-primary);
} }
/* Labels */ /* Labels */
.ui.label { .ui.label {
background-color: var(--color-primary-very-light); background-color: var(--color-primary-very-light);
color: var(--color-text); color: var(--color-text);
} }
/* Markdown Content */ /* Markdown Content */
.markdown:not(code) { .markdown:not(code) {
color: var(--color-text); color: var(--color-text);
} }
.markdown code, .markdown pre { .markdown code, .markdown pre {
background-color: var(--color-markup-code-block); background-color: var(--color-markup-code-block);
border-color: var(--color-border); border-color: var(--color-border);
} }
/* Sidebar */ /* Sidebar */
.ui.vertical.menu { .ui.vertical.menu {
background-color: var(--color-menu); background-color: var(--color-menu);
} }
.ui.vertical.menu .item { .ui.vertical.menu .item {
color: var(--color-text); color: var(--color-text);
} }
.ui.vertical.menu .active.item { .ui.vertical.menu .active.item {
background-color: var(--color-primary-very-light); background-color: var(--color-primary-very-light);
} }
/* Status tags */ /* Status tags */
.ui.green.label { .ui.green.label {
background-color: var(--color-success) !important; background-color: var(--color-success) !important;
color: var(--color-body) !important; color: var(--color-body) !important;
} }
.ui.red.label { .ui.red.label {
background-color: var(--color-danger) !important; background-color: var(--color-danger) !important;
color: var(--color-body) !important; color: var(--color-body) !important;
} }
.ui.yellow.label { .ui.yellow.label {
background-color: var(--color-warning) !important; background-color: var(--color-warning) !important;
color: var(--color-text-dark) !important; color: var(--color-text-dark) !important;
} }
.ui.blue.label { .ui.blue.label {
background-color: var(--color-info) !important; background-color: var(--color-info) !important;
color: var(--color-body) !important; color: var(--color-body) !important;
} }
/* Dashboard cards */ /* Dashboard cards */
.dashboard-card { .dashboard-card {
background-color: var(--color-card); background-color: var(--color-card);
border-color: var(--color-border); border-color: var(--color-border);
} }
/* Timeline and activities */ /* Timeline and activities */
.timeline-item { .timeline-item {
border-color: var(--color-border); border-color: var(--color-border);
} }
.timeline-item .badge { .timeline-item .badge {
background-color: var(--color-primary-very-light); background-color: var(--color-primary-very-light);
color: var(--color-text); color: var(--color-text);
} }
/* Code diff view */ /* Code diff view */
.diff-file-box .code-diff-split .add-code { .diff-file-box .code-diff-split .add-code {
background-color: var(--color-diff-add-line); background-color: var(--color-diff-add-line);
} }
.diff-file-box .code-diff-split .del-code { .diff-file-box .code-diff-split .del-code {
background-color: var(--color-diff-del-line); background-color: var(--color-diff-del-line);
} }
.diff-file-box .code-diff-split .add-code .add-line { .diff-file-box .code-diff-split .add-code .add-line {
background-color: var(--color-diff-add-word); background-color: var(--color-diff-add-word);
} }
.diff-file-box .code-diff-split .del-code .del-line { .diff-file-box .code-diff-split .del-code .del-line {
background-color: var(--color-diff-del-word); background-color: var(--color-diff-del-word);
} }
.monaco-editor, .monaco-diff-editor, .monaco-component, .monaco-editor-background, .monaco-editor .margin { .monaco-editor, .monaco-diff-editor, .monaco-component, .monaco-editor-background, .monaco-editor .margin {
background: var(--vscode-editor-background) !important; background: var(--vscode-editor-background) !important;
} }
.monaco-editor { .monaco-editor {
--vscode-editor-selectionBackground: var(--color-primary) !important; --vscode-editor-selectionBackground: var(--color-primary) !important;
--vscode-editor-inactiveSelectionBackground: var(--color-primary) !important; --vscode-editor-inactiveSelectionBackground: var(--color-primary) !important;
--vscode-editor-lineHighlightBackground: var(--color-primary) !important; --vscode-editor-lineHighlightBackground: var(--color-primary) !important;
} }
.monaco-editor .view-overlays .current-line { .monaco-editor .view-overlays .current-line {
background-color: var(--color-primary) !important; background-color: var(--color-primary) !important;
} }
.monaco-editor .margin { .monaco-editor .margin {
background-color: transparent !important; background-color: transparent !important;
} }
.monaco-editor .margin-view-overlays .current-line-margin { .monaco-editor .margin-view-overlays .current-line-margin {
background-color: var(--color-primary) !important; background-color: var(--color-primary) !important;
} }
.active-line-number { .active-line-number {
background-color: transparent !important; background-color: transparent !important;
} }
/* Scrollbar */ /* Scrollbar */
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
background: var(--color-primary-light); background: var(--color-primary-light);
} }
::-webkit-scrollbar-thumb:hover { ::-webkit-scrollbar-thumb:hover {
background: var(--color-primary); background: var(--color-primary);
} }
::-webkit-scrollbar-track { ::-webkit-scrollbar-track {
background: var(--color-primary-very-light); background: var(--color-primary-very-light);
} }
body::before { body::before {
background: url(https://cdn.nhcarrigan.com/background.png); background: url(https://cdn.nhcarrigan.com/background.png);
background-size: cover; background-size: cover;
background-position: center; background-position: center;
width: 100%; width: 100%;
height: 100%; height: 100%;
z-index: -100; z-index: -100;
content: ""; content: "";
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
right: 0; right: 0;
bottom: 0; bottom: 0;
opacity: 1; opacity: 1;
pointer-events: none; pointer-events: none;
} }
body::after { body::after {
background: var(--color-body); background: var(--color-body);
opacity: 0.8; opacity: 0.8;
width: 100%; width: 100%;
height: 100%; height: 100%;
z-index: -50; z-index: -50;
content: ""; content: "";
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
right: 0; right: 0;
bottom: 0; bottom: 0;
pointer-events: none; pointer-events: none;
} }
html { html {
cursor: url('https://cdn.nhcarrigan.com/cursors/cursor.cur'), auto; cursor: url('https://cdn.nhcarrigan.com/cursors/cursor.cur'), auto;
font-family: "Vampyr"; font-family: "Vampyr";
} }
a, button, .button, .dropdown { a, button, .button, .dropdown {
cursor: url('https://cdn.nhcarrigan.com/cursors/pointer.cur'), pointer !important; 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 { #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; display: none;
z-index: 1000;
} }
.social-list-item { }
padding: 10px;
} footer {
.social-list-item > a { width: 100%;
display: flex; display: flex;
align-items: center; justify-content: space-between;
justify-content: space-between; align-items: center;
text-decoration: none; color: var(--foreground);
} background-color: var(--background);
.social-list-divider { position: fixed;
border: 0.5px solid var(--color-text); bottom: 0;
} height: 75px;
.social-list-item:hover { padding: 0 10px;
background-color: var(--color-text); }
color: var(--header_background);
} @media (max-width: 880px) {
#show-socials-button { .page-footer {
background: none; flex-direction: row;
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);
} }
}
#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);
}
+407 -407
View File
@@ -1,468 +1,468 @@
/* Trans Pride - A light theme for Gitea */ /* Trans Pride - A light theme for Gitea */
@font-face { @font-face {
font-family: 'Vampyr'; font-family: 'Vampyr';
src: url('https://cdn.nhcarrigan.com/fonts/vampyr.ttf') format('truetype'); src: url('https://cdn.nhcarrigan.com/fonts/vampyr.ttf') format('truetype');
} }
:root { :root {
--is-dark-theme: false; --is-dark-theme: false;
--fonts-regular: "Vampyr" !important; --fonts-regular: "Vampyr" !important;
--fonts-proportional: "Vampyr" !important; --fonts-proportional: "Vampyr" !important;
--fonts-monospace: "Vampyr" !important; --fonts-monospace: "Vampyr" !important;
--fonts-emoji: "Vampyr" !important; --fonts-emoji: "Vampyr" !important;
/* Primary (pinks) */ /* Primary (pinks) */
--color-primary: #ff6b94; /* flag pink pop */ --color-primary: #ff6b94; /* flag pink pop */
--color-primary-dark: #db7093; /* medium pink for hover/active */ --color-primary-dark: #db7093; /* medium pink for hover/active */
--color-primary-light: #ffc0cb; /* soft pastel pink */ --color-primary-light: #ffc0cb; /* soft pastel pink */
--color-primary-very-light: #ffe6ee;/* pale pink background fills */ --color-primary-very-light: #ffe6ee;/* pale pink background fills */
/* Main Text & Background */ /* Main Text & Background */
--color-text: #2a0a18; /* deep plum text */ --color-text: #2a0a18; /* deep plum text */
--color-text-light: #4d2037; /* muted variant */ --color-text-light: #4d2037; /* muted variant */
--color-text-dark: #000000; /* headings/strong */ --color-text-dark: #000000; /* headings/strong */
--color-body: #DAFFFC; /* almost white with pink tint */ --color-body: #DAFFFC; /* almost white with pink tint */
/* UI (trans blues for balance) */ /* UI (trans blues for balance) */
--color-secondary: #87cefa; /* sky blue */ --color-secondary: #87cefa; /* sky blue */
--color-secondary-dark: #5dade2; /* medium bright blue */ --color-secondary-dark: #5dade2; /* medium bright blue */
--color-secondary-light: #add8e6; /* pastel blue */ --color-secondary-light: #add8e6; /* pastel blue */
/* State Colors */ /* State Colors */
--color-success: #5dade2; /* success = strong blue */ --color-success: #5dade2; /* success = strong blue */
--color-success-dark: #1e90ff; --color-success-dark: #1e90ff;
--color-success-light: #87cefa; --color-success-light: #87cefa;
--color-danger: #ff4f7a; /* pinkish red */ --color-danger: #ff4f7a; /* pinkish red */
--color-danger-dark: #ff2f66; --color-danger-dark: #ff2f66;
--color-danger-light: #ff7fa1; --color-danger-light: #ff7fa1;
--color-warning: #ffb347; /* warm orange */ --color-warning: #ffb347; /* warm orange */
--color-warning-dark: #ff9f1a; --color-warning-dark: #ff9f1a;
--color-warning-light: #ffd699; --color-warning-light: #ffd699;
--color-info: #1e90ff; /* crisp blue */ --color-info: #1e90ff; /* crisp blue */
--color-info-dark: #187bcd; --color-info-dark: #187bcd;
--color-info-light: #87cefa; --color-info-light: #87cefa;
/* Other UI Elements */ /* Other UI Elements */
--color-menu: #fff9fb; --color-menu: #fff9fb;
--color-card: #ffffff; /* pure white cards */ --color-card: #ffffff; /* pure white cards */
--color-markup-table-row: #f5f9ff; /* faint blue row */ --color-markup-table-row: #f5f9ff; /* faint blue row */
--color-markup-code-block: #fff0f6; /* faint pink block */ --color-markup-code-block: #fff0f6; /* faint pink block */
--color-button: #ff6b94; /* primary = pink */ --color-button: #ff6b94; /* primary = pink */
--color-border: #ffd1dc; /* pale pink border */ --color-border: #ffd1dc; /* pale pink border */
--color-input-border: #add8e6; /* soft blue border */ --color-input-border: #add8e6; /* soft blue border */
--color-input-background: #ffffff; --color-input-background: #ffffff;
--color-small-accent: #87cefa; /* tiny blue accent */ --color-small-accent: #87cefa; /* tiny blue accent */
/* Diff Colors (soft pink/blue tints) */ /* Diff Colors (soft pink/blue tints) */
--color-diff-add-line: #e6f6ff; /* pale blue add */ --color-diff-add-line: #e6f6ff; /* pale blue add */
--color-diff-add-word: #cceeff; --color-diff-add-word: #cceeff;
--color-diff-del-line: #ffe6f0; /* pale pink delete */ --color-diff-del-line: #ffe6f0; /* pale pink delete */
--color-diff-del-word: #ffccd9; --color-diff-del-word: #ffccd9;
--color-diff-section: #f0f6ff; --color-diff-section: #f0f6ff;
/* Code Syntax Highlighting (balanced) */ /* Code Syntax Highlighting (balanced) */
--color-code-keyword: #1e90ff; /* keywords = bright blue */ --color-code-keyword: #1e90ff; /* keywords = bright blue */
--color-code-function: #ff3b6f; /* functions = hot pink */ --color-code-function: #ff3b6f; /* functions = hot pink */
--color-code-string: #db7093; /* strings = medium pink */ --color-code-string: #db7093; /* strings = medium pink */
--color-code-number: #5dade2; /* numbers = medium blue */ --color-code-number: #5dade2; /* numbers = medium blue */
--color-code-comment: #8a6b78; /* muted plum comment */ --color-code-comment: #8a6b78; /* muted plum comment */
--color-code-type: #87cefa; /* types = sky blue */ --color-code-type: #87cefa; /* types = sky blue */
--vscode-editor-background: #fff9fb;/* soft background */ --vscode-editor-background: #fff9fb;/* soft background */
--color-footer: #DAFFFC; --color-footer: #DAFFFC;
--color-nav-bg: #DAFFFC; --color-nav-bg: #DAFFFC;
} }
/* Header */ /* Header */
.ui.menu.inverted { .ui.menu.inverted {
background-color: var(--color-secondary); background-color: var(--color-secondary);
color: var(--color-text); color: var(--color-text);
} }
.ui.secondary.menu .item { .ui.secondary.menu .item {
color: var(--color-text); color: var(--color-text);
} }
.ui.secondary.menu .active.item { .ui.secondary.menu .active.item {
background-color: var(--color-primary-very-light); background-color: var(--color-primary-very-light);
} }
/* Repository header */ /* Repository header */
.repository.header { .repository.header {
background-color: var(--color-menu); background-color: var(--color-menu);
} }
/* Buttons */ /* Buttons */
.ui.primary.button { .ui.primary.button {
background-color: var(--color-primary); background-color: var(--color-primary);
} }
.ui.primary.button:hover { .ui.primary.button:hover {
background-color: var(--color-primary-dark); background-color: var(--color-primary-dark);
} }
.ui.basic.button { .ui.basic.button {
box-shadow: 0 0 0 1px var(--color-border) inset; box-shadow: 0 0 0 1px var(--color-border) inset;
color: var(--color-text) !important; color: var(--color-text) !important;
} }
.ui.basic.button:hover { .ui.basic.button:hover {
background-color: var(--color-primary-very-light) !important; background-color: var(--color-primary-very-light) !important;
color: var(--color-text-dark) !important; color: var(--color-text-dark) !important;
} }
/* Tabs */ /* Tabs */
.ui.tabular.menu .item { .ui.tabular.menu .item {
color: var(--color-text-light); color: var(--color-text-light);
} }
.ui.tabular.menu .active.item { .ui.tabular.menu .active.item {
background-color: var(--color-primary-very-light); background-color: var(--color-primary-very-light);
color: var(--color-text); color: var(--color-text);
border-color: var(--color-border); border-color: var(--color-border);
} }
/* Tables */ /* Tables */
.ui.table thead th { .ui.table thead th {
background: var(--color-menu); background: var(--color-menu);
color: var(--color-text); color: var(--color-text);
} }
.ui.table { .ui.table {
border-color: var(--color-border); border-color: var(--color-border);
} }
/* Form inputs */ /* Form inputs */
.ui.input input { .ui.input input {
background-color: var(--color-input-background); background-color: var(--color-input-background);
border-color: var(--color-input-border); border-color: var(--color-input-border);
color: var(--color-text); color: var(--color-text);
} }
.ui.input input:focus { .ui.input input:focus {
border-color: var(--color-primary); border-color: var(--color-primary);
} }
/* Labels */ /* Labels */
.ui.label { .ui.label {
background-color: var(--color-primary-very-light); background-color: var(--color-primary-very-light);
color: var(--color-text); color: var(--color-text);
} }
/* Markdown Content */ /* Markdown Content */
.markdown:not(code) { .markdown:not(code) {
color: var(--color-text); color: var(--color-text);
} }
.markdown code, .markdown pre { .markdown code, .markdown pre {
background-color: var(--color-markup-code-block); background-color: var(--color-markup-code-block);
border-color: var(--color-border); border-color: var(--color-border);
} }
/* Sidebar */ /* Sidebar */
.ui.vertical.menu { .ui.vertical.menu {
background-color: var(--color-menu); background-color: var(--color-menu);
} }
.ui.vertical.menu .item { .ui.vertical.menu .item {
color: var(--color-text); color: var(--color-text);
} }
.ui.vertical.menu .active.item { .ui.vertical.menu .active.item {
background-color: var(--color-primary-very-light); background-color: var(--color-primary-very-light);
} }
/* Status tags */ /* Status tags */
.ui.green.label { .ui.green.label {
background-color: var(--color-success) !important; background-color: var(--color-success) !important;
color: var(--color-body) !important; color: var(--color-body) !important;
} }
.ui.red.label { .ui.red.label {
background-color: var(--color-danger) !important; background-color: var(--color-danger) !important;
color: var(--color-body) !important; color: var(--color-body) !important;
} }
.ui.yellow.label { .ui.yellow.label {
background-color: var(--color-warning) !important; background-color: var(--color-warning) !important;
color: var(--color-text-dark) !important; color: var(--color-text-dark) !important;
} }
.ui.blue.label { .ui.blue.label {
background-color: var(--color-info) !important; background-color: var(--color-info) !important;
color: var(--color-body) !important; color: var(--color-body) !important;
} }
/* Dashboard cards */ /* Dashboard cards */
.dashboard-card { .dashboard-card {
background-color: var(--color-card); background-color: var(--color-card);
border-color: var(--color-border); border-color: var(--color-border);
} }
/* Timeline and activities */ /* Timeline and activities */
.timeline-item { .timeline-item {
border-color: var(--color-border); border-color: var(--color-border);
} }
.timeline-item .badge { .timeline-item .badge {
background-color: var(--color-primary-very-light); background-color: var(--color-primary-very-light);
color: var(--color-text); color: var(--color-text);
} }
/* Code diff view */ /* Code diff view */
.diff-file-box .code-diff-split .add-code { .diff-file-box .code-diff-split .add-code {
background-color: var(--color-diff-add-line); background-color: var(--color-diff-add-line);
} }
.diff-file-box .code-diff-split .del-code { .diff-file-box .code-diff-split .del-code {
background-color: var(--color-diff-del-line); background-color: var(--color-diff-del-line);
} }
.diff-file-box .code-diff-split .add-code .add-line { .diff-file-box .code-diff-split .add-code .add-line {
background-color: var(--color-diff-add-word); background-color: var(--color-diff-add-word);
} }
.diff-file-box .code-diff-split .del-code .del-line { .diff-file-box .code-diff-split .del-code .del-line {
background-color: var(--color-diff-del-word); background-color: var(--color-diff-del-word);
} }
.monaco-editor, .monaco-diff-editor, .monaco-component, .monaco-editor-background, .monaco-editor .margin { .monaco-editor, .monaco-diff-editor, .monaco-component, .monaco-editor-background, .monaco-editor .margin {
background: #fff5f8 !important; background: #fff5f8 !important;
} }
.monaco-editor { .monaco-editor {
--vscode-editor-selectionBackground: var(--color-primary) !important; --vscode-editor-selectionBackground: var(--color-primary) !important;
--vscode-editor-inactiveSelectionBackground: var(--color-primary) !important; --vscode-editor-inactiveSelectionBackground: var(--color-primary) !important;
--vscode-editor-lineHighlightBackground: var(--color-primary) !important; --vscode-editor-lineHighlightBackground: var(--color-primary) !important;
} }
.monaco-editor .view-overlays .current-line { .monaco-editor .view-overlays .current-line {
background-color: var(--color-primary) !important; background-color: var(--color-primary) !important;
} }
.monaco-editor .margin { .monaco-editor .margin {
background-color: transparent !important; background-color: transparent !important;
} }
.monaco-editor .margin-view-overlays .current-line-margin { .monaco-editor .margin-view-overlays .current-line-margin {
background-color: var(--color-primary) !important; background-color: var(--color-primary) !important;
} }
.active-line-number { .active-line-number {
background-color: transparent !important; background-color: transparent !important;
} }
/* Scrollbar */ /* Scrollbar */
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
background: var(--color-primary-light); background: var(--color-primary-light);
} }
::-webkit-scrollbar-thumb:hover { ::-webkit-scrollbar-thumb:hover {
background: var(--color-primary); background: var(--color-primary);
} }
::-webkit-scrollbar-track { ::-webkit-scrollbar-track {
background: var(--color-primary-very-light); background: var(--color-primary-very-light);
} }
body::before { body::before {
background: url(https://cdn.nhcarrigan.com/background.png); background: url(https://cdn.nhcarrigan.com/background.png);
background-size: cover; background-size: cover;
background-position: center; background-position: center;
width: 100%; width: 100%;
height: 100%; height: 100%;
z-index: -100; z-index: -100;
content: ""; content: "";
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
right: 0; right: 0;
bottom: 0; bottom: 0;
opacity: 1; opacity: 1;
pointer-events: none; pointer-events: none;
} }
body::after { body::after {
background: var(--color-body); background: var(--color-body);
opacity: 0.8; opacity: 0.8;
width: 100%; width: 100%;
height: 100%; height: 100%;
z-index: -50; z-index: -50;
content: ""; content: "";
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
right: 0; right: 0;
bottom: 0; bottom: 0;
pointer-events: none; pointer-events: none;
} }
html { html {
cursor: url('https://cdn.nhcarrigan.com/cursors/cursor.cur'), auto; cursor: url('https://cdn.nhcarrigan.com/cursors/cursor.cur'), auto;
font-family: "Vampyr"; font-family: "Vampyr";
} }
a, button, .button, .dropdown { a, button, .button, .dropdown {
cursor: url('https://cdn.nhcarrigan.com/cursors/pointer.cur'), pointer !important; 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 { #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; display: none;
z-index: 1000;
} }
.social-list-item { }
padding: 10px;
} footer {
.social-list-item > a { width: 100%;
display: flex; display: flex;
align-items: center; justify-content: space-between;
justify-content: space-between; align-items: center;
text-decoration: none; color: var(--foreground);
} background-color: var(--background);
.social-list-divider { position: fixed;
border: 0.5px solid var(--color-text); bottom: 0;
} height: 75px;
.social-list-item:hover { padding: 0 10px;
background-color: var(--color-text); }
color: var(--header_background);
} @media (max-width: 880px) {
#show-socials-button { .page-footer {
background: none; flex-direction: row;
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);
} }
}
#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);
}
+940
View File
@@ -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,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><g transform="translate(12 12) rotate(-45 12 12)"><circle cx="12" cy="6" r="5" fill="%232B1B3D"/><circle cx="6" cy="12" r="5" fill="%232B1B3D"/><circle cx="18" cy="12" r="5" fill="%232B1B3D"/><circle cx="12" cy="18" r="5" fill="%232B1B3D"/><circle cx="12" cy="12" r="3.5" fill="%23A8577E"/><path d="M12 18 L12 36" stroke="%232B1B3D" stroke-width="2.5"/><path d="M10 34 L8 38" stroke="%232B1B3D" stroke-width="2"/><path d="M14 34 L16 38" stroke="%232B1B3D" stroke-width="2"/></g><circle cx="3" cy="3" r="1.5" fill="%23D4A5C7" opacity="0.8"/></svg>') 0 0, auto;
font-family: "Kalam", cursive;
}
a, button, .button, .dropdown, .ui.button, .ui.dropdown {
cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><defs><filter id="glow"><feGaussianBlur stdDeviation="3" result="coloredBlur"/><feMerge><feMergeNode in="coloredBlur"/><feMergeNode in="SourceGraphic"/></feMerge></filter></defs><g transform="translate(12 12) rotate(-45 12 12)" filter="url(%23glow)"><circle cx="12" cy="6" r="5.5" fill="%23A8577E"/><circle cx="6" cy="12" r="5.5" fill="%23A8577E"/><circle cx="18" cy="12" r="5.5" fill="%23A8577E"/><circle cx="12" cy="18" r="5.5" fill="%23A8577E"/><circle cx="12" cy="12" r="4" fill="%23D4A5C7"/><path d="M12 18 L12 36" stroke="%232B1B3D" stroke-width="2.5"/><path d="M10 34 L8 38" stroke="%232B1B3D" stroke-width="2"/><path d="M14 34 L16 38" stroke="%232B1B3D" stroke-width="2"/></g><circle cx="3" cy="3" r="2" fill="%23D4A5C7" opacity="0.9"/></svg>') 0 0, pointer !important;
}
input[type="text"], input[type="email"], input[type="password"], textarea {
cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><line x1="12" y1="6" x2="12" y2="42" stroke="%232B1B3D" stroke-width="2"/><line x1="8" y1="6" x2="16" y2="6" stroke="%232B1B3D" stroke-width="2"/><line x1="8" y1="42" x2="16" y2="42" stroke="%232B1B3D" stroke-width="2"/><circle cx="12" cy="24" r="3" fill="%23A8577E" opacity="0.5"/></svg>') 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;
}
+41 -86
View File
@@ -1,94 +1,49 @@
<footer class="page-footer" role="group" aria-label="{{ctx.Locale.Tr "aria.footer"}}"> <footer class="page-footer" role="group" aria-label="{{ctx.Locale.Tr "aria.footer"}}">
<p>&copy; <a href="https://nhcarrigan.com" target="_blank">Naomi Carrigan</a></p> <p>&copy; <a href="https://nhcarrigan.com" target="_blank">Naomi Carrigan</a></p>
<button id="show-socials-button" type="button"> <button id="show-socials-button" type="button">
<i class="fa-solid fa-share-nodes"></i> Connect with Us <i class="fa-solid fa-share-nodes"></i> Connect with Us
</button> </button>
<a href="https://buy.stripe.com/cN24iTfqu1j6b3afZ2" target="_blank" rel="noreferrer"> <a href="https://buy.stripe.com/cN24iTfqu1j6b3afZ2" target="_blank" rel="noreferrer">
<img src="https://cdn.nhcarrigan.com/donate.png" alt="Donate" style="width: 70px; height: 70px;"> <img src="https://cdn.nhcarrigan.com/donate.png" alt="Donate" style="width: 70px; height: 70px;">
</a>
<div id="tree-nation-offset-website"></div>
</div>
<div id="social-list">
<div class="social-list-item">
<a href="https://chat.nhcarrigan.com" target="_blank" rel="noreferrer">
<i class="fa-brands fa-discord"></i><span>Join our Discord~!</span>
</a> </a>
</div> <div id="tree-nation-offset-website"></div>
<hr class="social-list-divider" />
<div class="social-list-item"> <div id="social-list">
<a href="https://bsky.app/profile/nhcarrigan.com" target="_blank" rel="noreferrer"> <div class="social-list-item">
<i class="fa-brands fa-bluesky"></i><span>Follow us on Bluesky~!</span> <a href="https://chat.nhcarrigan.com" target="_blank" rel="noreferrer">
</a> <i class="fa-brands fa-discord"></i><span>Join our Discord~!</span>
</div> </a>
<hr class="social-list-divider" /> </div>
<div class="social-list-item"> </div>
<a href="https://www.linkedin.com/company/nhcarrigan" target="_blank" rel="noreferrer">
<i class="fa-brands fa-linkedin"></i><span>Connect with us on LinkedIn~!</span>
</a>
</div>
<hr class="social-list-divider" />
<div class="social-list-item">
<a href="https://www.reddit.com/r/nhcarrigan/" target="_blank" rel="noreferrer">
<i class="fa-brands fa-reddit"></i><span>Join our subreddit~!</span>
</a>
</div>
<hr class="social-list-divider" />
<div class="social-list-item">
<a href="https://www.youtube.com/@naomilgbt" target="_blank" rel="noreferrer">
<i class="fa-brands fa-youtube"></i><span>Subscribe to our YouTube~!</span>
</a>
</div>
<hr class="social-list-divider" />
<div class="social-list-item">
<a href="https://twitch.tv/naomilgbt" target="_blank" rel="noreferrer">
<i class="fa-brands fa-twitch"></i><span>Subscribe to our Twitch~!</span>
</a>
</div>
<hr class="social-list-divider" />
<div class="social-list-item">
<a href="https://x.com/nhcarrigan1" target="_blank" rel="noreferrer">
<i class="fa-brands fa-twitter"></i><span>We are even on Twitter~!</span>
</a>
</div>
</div>
</footer> </footer>
<script> <script>
const showSocialsButton = document.querySelector( // Use a self-invoking function or check for DOM presence to avoid scope issues
"#show-socials-button", (function() {
); const showSocialsButton = document.querySelector("#show-socials-button");
const socialList = document.querySelector("#social-list"); const socialList = document.querySelector("#social-list");
const toggleSocials = () => { if (showSocialsButton && socialList) {
if (!socialList) { showSocialsButton.addEventListener("click", () => {
throw new Error("Social list element not found."); const isVisible = socialList.style.display === "block";
} socialList.style.display = isVisible ? "none" : "block";
if (socialList.style.display === "block") { showSocialsButton.setAttribute("aria-expanded", !isVisible);
socialList.style.display = "none"; });
showSocialsButton?.setAttribute("aria-expanded", "false"); }
showSocialsButton?.setAttribute("aria-label", "Show Socials"); })();
return;
}
socialList.style.display = "block";
showSocialsButton?.setAttribute("aria-expanded", "true");
showSocialsButton?.setAttribute("aria-label", "Hide Socials");
};
showSocialsButton?.addEventListener("click", toggleSocials);
</script> </script>
<script src="https://widgets.tree-nation.com/js/widgets/v1/widgets.min.js?v=1.0"></script> <script src="https://widgets.tree-nation.com/js/widgets/v1/widgets.min.js?v=1.0"></script>
<script> <script>
const interval = setInterval(() => { // TreeNation Logic
const tree = document.querySelector("#tree-nation-offset-website"); const interval = setInterval(() => {
if (!tree) { const tree = document.querySelector("#tree-nation-offset-website");
console.log("DOM has not hydrated yet, cannot load TreeNation badge."); if (tree && typeof TreeNationOffsetWebsite !== 'undefined') {
return; TreeNationOffsetWebsite({
} code: "a17464e0cd351220",
TreeNationOffsetWebsite({ lang: "en",
code: "a17464e0cd351220", theme: "dark",
lang: "en", }).render("#tree-nation-offset-website");
theme: "dark", clearInterval(interval);
}).render("#tree-nation-offset-website"); }
clearInterval(interval); }, 1000);
}, 1000);
</script> </script>
<script src="{{AssetUrlPrefix}}/js/index.js?v={{AssetVersion}}" onerror="alert('Failed to load asset files from ' + this.src + '. Please make sure the asset files can be accessed.')"></script>
</body>
</html
+1 -1
View File
@@ -11,4 +11,4 @@
</script> </script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3569924701890974" <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3569924701890974"
crossorigin="anonymous"></script> crossorigin="anonymous"></script>
<script src="https://kit.fontawesome.com/f949111719.js"></script> <script src="https://kit.fontawesome.com/f949111719.js" crossorigin="anonymous"></script>