new themes

This commit is contained in:
Mateusz Gruszczyński
2026-05-22 09:02:07 +02:00
parent 4956322677
commit cae6d4163b
9 changed files with 531 additions and 1 deletions

4
.gitignore vendored
View File

@@ -42,4 +42,6 @@ data/logs/*
todo.txt
pytorrent/static/libs/*
pytorrent/static/libs/*
!pytorrent/static/libs/pytorrent-themes/
!pytorrent/static/libs/pytorrent-themes/**

View File

@@ -0,0 +1,66 @@
/* Balanced violet-blue theme with calm defaults. */
:root, [data-bs-theme="light"] {
color-scheme: light;
--bs-primary: #6750a4;
--bs-primary-rgb: 103,80,164;
--bs-link-color: #6750a4;
--bs-link-color-rgb: 103,80,164;
--bs-link-hover-color: #4b2f8f;
--bs-link-hover-color-rgb: 103,80,164;
--bs-body-bg: #f6f7fb;
--bs-body-bg-rgb: 246,247,251;
--bs-body-color: #1f2937;
--bs-secondary-bg: #ffffff;
--bs-secondary-bg-rgb: 255,255,255;
--bs-tertiary-bg: #eef1f7;
--bs-border-color: #d9deea;
--bs-secondary-color: #667085;
--bs-primary-bg-subtle: #ece7ff;
--bs-primary-text-emphasis: #4b2f8f;
--torrent-progress-complete: #2f9e75;
--pytorrent-page-bg: linear-gradient(180deg, #f7f8fc 0%, #eef1f7 100%);
--pytorrent-shell-shadow: 0 16px 40px rgba(39, 45, 73, 0.12);
}
[data-bs-theme="dark"] {
color-scheme: dark;
--bs-primary: #8f7cff;
--bs-primary-rgb: 143,124,255;
--bs-link-color: #8f7cff;
--bs-link-color-rgb: 143,124,255;
--bs-link-hover-color: #c6bdff;
--bs-link-hover-color-rgb: 143,124,255;
--bs-body-bg: #080b12;
--bs-body-bg-rgb: 8,11,18;
--bs-body-color: #dce3f0;
--bs-secondary-bg: #101624;
--bs-secondary-bg-rgb: 16,22,36;
--bs-tertiary-bg: #151d2e;
--bs-border-color: #273247;
--bs-secondary-color: #97a4ba;
--bs-primary-bg-subtle: #191735;
--bs-primary-text-emphasis: #c6bdff;
--torrent-progress-complete: #2f9e75;
--pytorrent-page-bg: radial-gradient(circle at top left, rgba(143, 124, 255, 0.16), transparent 34%), #080b12;
--pytorrent-shell-shadow: 0 18px 55px rgba(0, 0, 0, 0.48);
}
.btn-primary {
--bs-btn-bg: var(--bs-primary);
--bs-btn-border-color: var(--bs-primary);
--bs-btn-hover-bg: var(--bs-primary-text-emphasis);
--bs-btn-hover-border-color: var(--bs-primary-text-emphasis);
}
.btn-outline-primary {
--bs-btn-color: var(--bs-primary);
--bs-btn-border-color: rgba(var(--bs-primary-rgb), 0.72);
--bs-btn-hover-bg: var(--bs-primary);
--bs-btn-hover-border-color: var(--bs-primary);
}
.nav-pills {
--bs-nav-pills-link-active-bg: var(--bs-primary);
}
.progress,
.progress-stacked {
--bs-progress-bg: rgba(var(--bs-secondary-bg-rgb), 0.82);
}

View File

@@ -0,0 +1,66 @@
/* Warm amber theme, good for light mode and softer dark mode. */
:root, [data-bs-theme="light"] {
color-scheme: light;
--bs-primary: #b45309;
--bs-primary-rgb: 180,83,9;
--bs-link-color: #b45309;
--bs-link-color-rgb: 180,83,9;
--bs-link-hover-color: #92400e;
--bs-link-hover-color-rgb: 180,83,9;
--bs-body-bg: #fff8ed;
--bs-body-bg-rgb: 255,248,237;
--bs-body-color: #2c1d0b;
--bs-secondary-bg: #ffffff;
--bs-secondary-bg-rgb: 255,255,255;
--bs-tertiary-bg: #ffefd6;
--bs-border-color: #f3d7aa;
--bs-secondary-color: #7a6750;
--bs-primary-bg-subtle: #ffecd0;
--bs-primary-text-emphasis: #92400e;
--torrent-progress-complete: #16a34a;
--pytorrent-page-bg: linear-gradient(180deg, #fffaf2 0%, #fff0d8 100%);
--pytorrent-shell-shadow: 0 16px 38px rgba(146, 64, 14, 0.13);
}
[data-bs-theme="dark"] {
color-scheme: dark;
--bs-primary: #f59e0b;
--bs-primary-rgb: 245,158,11;
--bs-link-color: #f59e0b;
--bs-link-color-rgb: 245,158,11;
--bs-link-hover-color: #fde68a;
--bs-link-hover-color-rgb: 245,158,11;
--bs-body-bg: #140d05;
--bs-body-bg-rgb: 20,13,5;
--bs-body-color: #f5e9d6;
--bs-secondary-bg: #211607;
--bs-secondary-bg-rgb: 33,22,7;
--bs-tertiary-bg: #2b1d0b;
--bs-border-color: #4c3515;
--bs-secondary-color: #c3a780;
--bs-primary-bg-subtle: #3a2609;
--bs-primary-text-emphasis: #fde68a;
--torrent-progress-complete: #22c55e;
--pytorrent-page-bg: radial-gradient(circle at top left, rgba(245, 158, 11, 0.16), transparent 34%), #140d05;
--pytorrent-shell-shadow: 0 18px 55px rgba(30, 15, 0, 0.58);
}
.btn-primary {
--bs-btn-bg: var(--bs-primary);
--bs-btn-border-color: var(--bs-primary);
--bs-btn-hover-bg: var(--bs-primary-text-emphasis);
--bs-btn-hover-border-color: var(--bs-primary-text-emphasis);
}
.btn-outline-primary {
--bs-btn-color: var(--bs-primary);
--bs-btn-border-color: rgba(var(--bs-primary-rgb), 0.72);
--bs-btn-hover-bg: var(--bs-primary);
--bs-btn-hover-border-color: var(--bs-primary);
}
.nav-pills {
--bs-nav-pills-link-active-bg: var(--bs-primary);
}
.progress,
.progress-stacked {
--bs-progress-bg: rgba(var(--bs-secondary-bg-rgb), 0.82);
}

View File

@@ -0,0 +1,66 @@
/* High-contrast red accent theme without the previous purple feel. */
:root, [data-bs-theme="light"] {
color-scheme: light;
--bs-primary: #be123c;
--bs-primary-rgb: 190,18,60;
--bs-link-color: #be123c;
--bs-link-color-rgb: 190,18,60;
--bs-link-hover-color: #9f1239;
--bs-link-hover-color-rgb: 190,18,60;
--bs-body-bg: #fff5f7;
--bs-body-bg-rgb: 255,245,247;
--bs-body-color: #2b1118;
--bs-secondary-bg: #ffffff;
--bs-secondary-bg-rgb: 255,255,255;
--bs-tertiary-bg: #ffe4ea;
--bs-border-color: #f5c6d1;
--bs-secondary-color: #76545d;
--bs-primary-bg-subtle: #ffe1e9;
--bs-primary-text-emphasis: #9f1239;
--torrent-progress-complete: #16a34a;
--pytorrent-page-bg: linear-gradient(180deg, #fff8fa 0%, #ffe8ee 100%);
--pytorrent-shell-shadow: 0 16px 38px rgba(159, 18, 57, 0.13);
}
[data-bs-theme="dark"] {
color-scheme: dark;
--bs-primary: #fb7185;
--bs-primary-rgb: 251,113,133;
--bs-link-color: #fb7185;
--bs-link-color-rgb: 251,113,133;
--bs-link-hover-color: #fecdd3;
--bs-link-hover-color-rgb: 251,113,133;
--bs-body-bg: #13070a;
--bs-body-bg-rgb: 19,7,10;
--bs-body-color: #f7dce2;
--bs-secondary-bg: #211014;
--bs-secondary-bg-rgb: 33,16,20;
--bs-tertiary-bg: #2b151b;
--bs-border-color: #4b2430;
--bs-secondary-color: #c096a1;
--bs-primary-bg-subtle: #3b111b;
--bs-primary-text-emphasis: #fecdd3;
--torrent-progress-complete: #22c55e;
--pytorrent-page-bg: radial-gradient(circle at top left, rgba(251, 113, 133, 0.15), transparent 35%), #13070a;
--pytorrent-shell-shadow: 0 18px 55px rgba(28, 0, 8, 0.58);
}
.btn-primary {
--bs-btn-bg: var(--bs-primary);
--bs-btn-border-color: var(--bs-primary);
--bs-btn-hover-bg: var(--bs-primary-text-emphasis);
--bs-btn-hover-border-color: var(--bs-primary-text-emphasis);
}
.btn-outline-primary {
--bs-btn-color: var(--bs-primary);
--bs-btn-border-color: rgba(var(--bs-primary-rgb), 0.72);
--bs-btn-hover-bg: var(--bs-primary);
--bs-btn-hover-border-color: var(--bs-primary);
}
.nav-pills {
--bs-nav-pills-link-active-bg: var(--bs-primary);
}
.progress,
.progress-stacked {
--bs-progress-bg: rgba(var(--bs-secondary-bg-rgb), 0.82);
}

View File

@@ -0,0 +1,66 @@
/* Green productivity theme with warm contrast. */
:root, [data-bs-theme="light"] {
color-scheme: light;
--bs-primary: #2f7d32;
--bs-primary-rgb: 47,125,50;
--bs-link-color: #2f7d32;
--bs-link-color-rgb: 47,125,50;
--bs-link-hover-color: #256329;
--bs-link-hover-color-rgb: 47,125,50;
--bs-body-bg: #f4faf2;
--bs-body-bg-rgb: 244,250,242;
--bs-body-color: #172417;
--bs-secondary-bg: #ffffff;
--bs-secondary-bg-rgb: 255,255,255;
--bs-tertiary-bg: #e7f4e4;
--bs-border-color: #cce4c7;
--bs-secondary-color: #61735e;
--bs-primary-bg-subtle: #dcf2d7;
--bs-primary-text-emphasis: #256329;
--torrent-progress-complete: #22c55e;
--pytorrent-page-bg: linear-gradient(180deg, #fbfff9 0%, #e9f6e5 100%);
--pytorrent-shell-shadow: 0 16px 38px rgba(35, 84, 38, 0.13);
}
[data-bs-theme="dark"] {
color-scheme: dark;
--bs-primary: #4ade80;
--bs-primary-rgb: 74,222,128;
--bs-link-color: #4ade80;
--bs-link-color-rgb: 74,222,128;
--bs-link-hover-color: #bbf7d0;
--bs-link-hover-color-rgb: 74,222,128;
--bs-body-bg: #071109;
--bs-body-bg-rgb: 7,17,9;
--bs-body-color: #d9f1dc;
--bs-secondary-bg: #0f1f12;
--bs-secondary-bg-rgb: 15,31,18;
--bs-tertiary-bg: #152b18;
--bs-border-color: #24472a;
--bs-secondary-color: #95b79a;
--bs-primary-bg-subtle: #13381a;
--bs-primary-text-emphasis: #bbf7d0;
--torrent-progress-complete: #4ade80;
--pytorrent-page-bg: radial-gradient(circle at top left, rgba(74, 222, 128, 0.14), transparent 36%), #071109;
--pytorrent-shell-shadow: 0 18px 55px rgba(0, 20, 4, 0.58);
}
.btn-primary {
--bs-btn-bg: var(--bs-primary);
--bs-btn-border-color: var(--bs-primary);
--bs-btn-hover-bg: var(--bs-primary-text-emphasis);
--bs-btn-hover-border-color: var(--bs-primary-text-emphasis);
}
.btn-outline-primary {
--bs-btn-color: var(--bs-primary);
--bs-btn-border-color: rgba(var(--bs-primary-rgb), 0.72);
--bs-btn-hover-bg: var(--bs-primary);
--bs-btn-hover-border-color: var(--bs-primary);
}
.nav-pills {
--bs-nav-pills-link-active-bg: var(--bs-primary);
}
.progress,
.progress-stacked {
--bs-progress-bg: rgba(var(--bs-secondary-bg-rgb), 0.82);
}

View File

@@ -0,0 +1,66 @@
/* Neutral grey theme for users who want low saturation. */
:root, [data-bs-theme="light"] {
color-scheme: light;
--bs-primary: #334155;
--bs-primary-rgb: 51,65,85;
--bs-link-color: #334155;
--bs-link-color-rgb: 51,65,85;
--bs-link-hover-color: #1f2937;
--bs-link-hover-color-rgb: 51,65,85;
--bs-body-bg: #f5f6f8;
--bs-body-bg-rgb: 245,246,248;
--bs-body-color: #18202f;
--bs-secondary-bg: #ffffff;
--bs-secondary-bg-rgb: 255,255,255;
--bs-tertiary-bg: #eceff3;
--bs-border-color: #d7dce3;
--bs-secondary-color: #667085;
--bs-primary-bg-subtle: #e4e8ef;
--bs-primary-text-emphasis: #1f2937;
--torrent-progress-complete: #16a34a;
--pytorrent-page-bg: linear-gradient(180deg, #fafafa 0%, #edf0f4 100%);
--pytorrent-shell-shadow: 0 16px 38px rgba(31, 41, 55, 0.13);
}
[data-bs-theme="dark"] {
color-scheme: dark;
--bs-primary: #94a3b8;
--bs-primary-rgb: 148,163,184;
--bs-link-color: #94a3b8;
--bs-link-color-rgb: 148,163,184;
--bs-link-hover-color: #e2e8f0;
--bs-link-hover-color-rgb: 148,163,184;
--bs-body-bg: #07090d;
--bs-body-bg-rgb: 7,9,13;
--bs-body-color: #d7dde7;
--bs-secondary-bg: #11151c;
--bs-secondary-bg-rgb: 17,21,28;
--bs-tertiary-bg: #171c25;
--bs-border-color: #2b3442;
--bs-secondary-color: #99a3b3;
--bs-primary-bg-subtle: #1d2531;
--bs-primary-text-emphasis: #e2e8f0;
--torrent-progress-complete: #22c55e;
--pytorrent-page-bg: radial-gradient(circle at top left, rgba(148, 163, 184, 0.11), transparent 34%), #07090d;
--pytorrent-shell-shadow: 0 18px 55px rgba(0, 0, 0, 0.52);
}
.btn-primary {
--bs-btn-bg: var(--bs-primary);
--bs-btn-border-color: var(--bs-primary);
--bs-btn-hover-bg: var(--bs-primary-text-emphasis);
--bs-btn-hover-border-color: var(--bs-primary-text-emphasis);
}
.btn-outline-primary {
--bs-btn-color: var(--bs-primary);
--bs-btn-border-color: rgba(var(--bs-primary-rgb), 0.72);
--bs-btn-hover-bg: var(--bs-primary);
--bs-btn-hover-border-color: var(--bs-primary);
}
.nav-pills {
--bs-nav-pills-link-active-bg: var(--bs-primary);
}
.progress,
.progress-stacked {
--bs-progress-bg: rgba(var(--bs-secondary-bg-rgb), 0.82);
}

View File

@@ -0,0 +1,66 @@
/* Cool blue-grey theme inspired by Nordic palettes. */
:root, [data-bs-theme="light"] {
color-scheme: light;
--bs-primary: #4c6a92;
--bs-primary-rgb: 76,106,146;
--bs-link-color: #4c6a92;
--bs-link-color-rgb: 76,106,146;
--bs-link-hover-color: #365174;
--bs-link-hover-color-rgb: 76,106,146;
--bs-body-bg: #f4f7fb;
--bs-body-bg-rgb: 244,247,251;
--bs-body-color: #182334;
--bs-secondary-bg: #ffffff;
--bs-secondary-bg-rgb: 255,255,255;
--bs-tertiary-bg: #e7edf5;
--bs-border-color: #d0d9e8;
--bs-secondary-color: #607089;
--bs-primary-bg-subtle: #dfe8f4;
--bs-primary-text-emphasis: #365174;
--torrent-progress-complete: #3aa675;
--pytorrent-page-bg: linear-gradient(180deg, #fbfdff 0%, #e9eff7 100%);
--pytorrent-shell-shadow: 0 16px 38px rgba(47, 64, 87, 0.13);
}
[data-bs-theme="dark"] {
color-scheme: dark;
--bs-primary: #88c0d0;
--bs-primary-rgb: 136,192,208;
--bs-link-color: #88c0d0;
--bs-link-color-rgb: 136,192,208;
--bs-link-hover-color: #b6e3ee;
--bs-link-hover-color-rgb: 136,192,208;
--bs-body-bg: #0b111a;
--bs-body-bg-rgb: 11,17,26;
--bs-body-color: #d8dee9;
--bs-secondary-bg: #111927;
--bs-secondary-bg-rgb: 17,25,39;
--bs-tertiary-bg: #172233;
--bs-border-color: #2e3a4d;
--bs-secondary-color: #9aa8bc;
--bs-primary-bg-subtle: #132b3a;
--bs-primary-text-emphasis: #b6e3ee;
--torrent-progress-complete: #a3be8c;
--pytorrent-page-bg: radial-gradient(circle at top left, rgba(136, 192, 208, 0.14), transparent 35%), #0b111a;
--pytorrent-shell-shadow: 0 18px 55px rgba(3, 8, 15, 0.55);
}
.btn-primary {
--bs-btn-bg: var(--bs-primary);
--bs-btn-border-color: var(--bs-primary);
--bs-btn-hover-bg: var(--bs-primary-text-emphasis);
--bs-btn-hover-border-color: var(--bs-primary-text-emphasis);
}
.btn-outline-primary {
--bs-btn-color: var(--bs-primary);
--bs-btn-border-color: rgba(var(--bs-primary-rgb), 0.72);
--bs-btn-hover-bg: var(--bs-primary);
--bs-btn-hover-border-color: var(--bs-primary);
}
.nav-pills {
--bs-nav-pills-link-active-bg: var(--bs-primary);
}
.progress,
.progress-stacked {
--bs-progress-bg: rgba(var(--bs-secondary-bg-rgb), 0.82);
}

View File

@@ -0,0 +1,66 @@
/* Dark teal/navy with a bright, clean light mode. */
:root, [data-bs-theme="light"] {
color-scheme: light;
--bs-primary: #0f766e;
--bs-primary-rgb: 15,118,110;
--bs-link-color: #0f766e;
--bs-link-color-rgb: 15,118,110;
--bs-link-hover-color: #095c55;
--bs-link-hover-color-rgb: 15,118,110;
--bs-body-bg: #f2fbfa;
--bs-body-bg-rgb: 242,251,250;
--bs-body-color: #102a2a;
--bs-secondary-bg: #ffffff;
--bs-secondary-bg-rgb: 255,255,255;
--bs-tertiary-bg: #dff5f2;
--bs-border-color: #bfe4df;
--bs-secondary-color: #54706f;
--bs-primary-bg-subtle: #d6f4ef;
--bs-primary-text-emphasis: #095c55;
--torrent-progress-complete: #14b8a6;
--pytorrent-page-bg: linear-gradient(180deg, #f7fffe 0%, #e6f7f5 100%);
--pytorrent-shell-shadow: 0 16px 38px rgba(10, 78, 74, 0.13);
}
[data-bs-theme="dark"] {
color-scheme: dark;
--bs-primary: #2dd4bf;
--bs-primary-rgb: 45,212,191;
--bs-link-color: #2dd4bf;
--bs-link-color-rgb: 45,212,191;
--bs-link-hover-color: #99f6e4;
--bs-link-hover-color-rgb: 45,212,191;
--bs-body-bg: #031316;
--bs-body-bg-rgb: 3,19,22;
--bs-body-color: #d5f4f1;
--bs-secondary-bg: #082326;
--bs-secondary-bg-rgb: 8,35,38;
--bs-tertiary-bg: #0d3034;
--bs-border-color: #17494e;
--bs-secondary-color: #8ab6b2;
--bs-primary-bg-subtle: #063a3c;
--bs-primary-text-emphasis: #99f6e4;
--torrent-progress-complete: #34d399;
--pytorrent-page-bg: radial-gradient(circle at top left, rgba(45, 212, 191, 0.16), transparent 36%), #031316;
--pytorrent-shell-shadow: 0 18px 55px rgba(0, 20, 24, 0.58);
}
.btn-primary {
--bs-btn-bg: var(--bs-primary);
--bs-btn-border-color: var(--bs-primary);
--bs-btn-hover-bg: var(--bs-primary-text-emphasis);
--bs-btn-hover-border-color: var(--bs-primary-text-emphasis);
}
.btn-outline-primary {
--bs-btn-color: var(--bs-primary);
--bs-btn-border-color: rgba(var(--bs-primary-rgb), 0.72);
--bs-btn-hover-bg: var(--bs-primary);
--bs-btn-hover-border-color: var(--bs-primary);
}
.nav-pills {
--bs-nav-pills-link-active-bg: var(--bs-primary);
}
.progress,
.progress-stacked {
--bs-progress-bg: rgba(var(--bs-secondary-bg-rgb), 0.82);
}

View File

@@ -0,0 +1,66 @@
/* Fresh lighter blue theme with a readable dark variant. */
:root, [data-bs-theme="light"] {
color-scheme: light;
--bs-primary: #0284c7;
--bs-primary-rgb: 2,132,199;
--bs-link-color: #0284c7;
--bs-link-color-rgb: 2,132,199;
--bs-link-hover-color: #0369a1;
--bs-link-hover-color-rgb: 2,132,199;
--bs-body-bg: #f2f9ff;
--bs-body-bg-rgb: 242,249,255;
--bs-body-color: #102033;
--bs-secondary-bg: #ffffff;
--bs-secondary-bg-rgb: 255,255,255;
--bs-tertiary-bg: #dff1ff;
--bs-border-color: #bddff5;
--bs-secondary-color: #567185;
--bs-primary-bg-subtle: #d7efff;
--bs-primary-text-emphasis: #0369a1;
--torrent-progress-complete: #10b981;
--pytorrent-page-bg: linear-gradient(180deg, #f8fcff 0%, #e5f4ff 100%);
--pytorrent-shell-shadow: 0 16px 38px rgba(3, 105, 161, 0.13);
}
[data-bs-theme="dark"] {
color-scheme: dark;
--bs-primary: #38bdf8;
--bs-primary-rgb: 56,189,248;
--bs-link-color: #38bdf8;
--bs-link-color-rgb: 56,189,248;
--bs-link-hover-color: #bae6fd;
--bs-link-hover-color-rgb: 56,189,248;
--bs-body-bg: #06111a;
--bs-body-bg-rgb: 6,17,26;
--bs-body-color: #d9ecf8;
--bs-secondary-bg: #0d1c29;
--bs-secondary-bg-rgb: 13,28,41;
--bs-tertiary-bg: #12283a;
--bs-border-color: #21435b;
--bs-secondary-color: #91b4ca;
--bs-primary-bg-subtle: #0b334d;
--bs-primary-text-emphasis: #bae6fd;
--torrent-progress-complete: #34d399;
--pytorrent-page-bg: radial-gradient(circle at top left, rgba(56, 189, 248, 0.15), transparent 36%), #06111a;
--pytorrent-shell-shadow: 0 18px 55px rgba(0, 13, 24, 0.58);
}
.btn-primary {
--bs-btn-bg: var(--bs-primary);
--bs-btn-border-color: var(--bs-primary);
--bs-btn-hover-bg: var(--bs-primary-text-emphasis);
--bs-btn-hover-border-color: var(--bs-primary-text-emphasis);
}
.btn-outline-primary {
--bs-btn-color: var(--bs-primary);
--bs-btn-border-color: rgba(var(--bs-primary-rgb), 0.72);
--bs-btn-hover-bg: var(--bs-primary);
--bs-btn-hover-border-color: var(--bs-primary);
}
.nav-pills {
--bs-nav-pills-link-active-bg: var(--bs-primary);
}
.progress,
.progress-stacked {
--bs-progress-bg: rgba(var(--bs-secondary-bg-rgb), 0.82);
}