diff --git a/devplacepy/avatar.py b/devplacepy/avatar.py
index 2eccd679..aa931fda 100644
--- a/devplacepy/avatar.py
+++ b/devplacepy/avatar.py
@@ -28,6 +28,6 @@ def generate_avatar_svg(seed: str) -> str:
initial = seed[:1].upper() if seed else "?"
return (
''
)
diff --git a/devplacepy/static/apple-touch-icon.png b/devplacepy/static/apple-touch-icon.png
index 9868addb..1ebb9c79 100644
Binary files a/devplacepy/static/apple-touch-icon.png and b/devplacepy/static/apple-touch-icon.png differ
diff --git a/devplacepy/static/css/admin.css b/devplacepy/static/css/admin.css
index 48d6c8cd..112f8176 100644
--- a/devplacepy/static/css/admin.css
+++ b/devplacepy/static/css/admin.css
@@ -205,14 +205,14 @@
}
.admin-btn-primary {
- background: var(--accent, var(--info));
- color: var(--white);
+ background: var(--accent);
+ color: var(--on-accent);
border-color: transparent;
}
.admin-btn-primary:hover {
- background: var(--accent-hover, var(--accent));
- color: var(--white);
+ background: var(--accent-hover);
+ color: var(--on-accent);
}
.admin-btn-danger {
@@ -399,7 +399,7 @@
.pagination-btn:hover {
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
border-color: var(--accent);
text-decoration: none;
}
@@ -443,12 +443,12 @@
.pagination-page-active {
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
}
.pagination-page-active:hover {
background: var(--accent-hover);
- color: var(--white);
+ color: var(--on-accent);
}
.pagination-ellipsis {
diff --git a/devplacepy/static/css/auth.css b/devplacepy/static/css/auth.css
index 4012f0e9..5d90532c 100644
--- a/devplacepy/static/css/auth.css
+++ b/devplacepy/static/css/auth.css
@@ -117,7 +117,7 @@
font-size: 1rem;
font-weight: 700;
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
border-radius: var(--radius);
}
diff --git a/devplacepy/static/css/base.css b/devplacepy/static/css/base.css
index 595adde5..585494ba 100644
--- a/devplacepy/static/css/base.css
+++ b/devplacepy/static/css/base.css
@@ -444,15 +444,13 @@ img {
}
.btn-primary {
- background: var(--accent-gradient);
- color: var(--white);
- box-shadow: 0 2px 12px rgba(255, 95, 70, 0.3);
+ background: var(--accent);
+ color: var(--on-accent);
}
.btn-primary:hover {
+ background: var(--accent-hover);
color: var(--white);
- box-shadow: var(--glow-accent);
- transform: translateY(-1px);
}
.btn-secondary {
@@ -554,7 +552,7 @@ img {
justify-content: center;
font-weight: 700;
font-size: 1rem;
- color: var(--white);
+ color: var(--on-accent);
flex-shrink: 0;
overflow: hidden;
}
@@ -589,7 +587,7 @@ img {
pointer-events: none;
}
-.presence-dot.online { background: var(--success, #2f9e44); }
+.presence-dot.online { background: var(--success); }
.award-badge {
position: absolute;
@@ -650,7 +648,7 @@ img {
.nav-bell { position: relative; display: inline-flex; align-items: center; justify-content: center; line-height: 1; }
.nav-badge {
position: absolute; top: -6px; right: -8px; z-index: 1; min-width: 16px; height: 16px;
- padding: 0 0.25rem; border-radius: 8px; background: var(--accent); color: var(--white);
+ padding: 0 0.25rem; border-radius: 8px; background: var(--accent); color: var(--on-accent);
font-size: 0.6875rem; font-weight: 700;
display: flex; align-items: center; justify-content: center;
}
@@ -884,7 +882,7 @@ img {
button.comment-form-submit {
padding: 0.375rem 0.5rem;
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
font-weight: 600;
font-size: 0.8125rem;
line-height: 1.4;
diff --git a/devplacepy/static/css/chat.css b/devplacepy/static/css/chat.css
index 1e1d2f49..1e5f92a3 100644
--- a/devplacepy/static/css/chat.css
+++ b/devplacepy/static/css/chat.css
@@ -232,7 +232,7 @@ dp-chat[mode="embed"] {
.message-bubble.mine {
align-self: flex-end;
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
border-bottom-right-radius: 4px;
}
@@ -429,7 +429,7 @@ dp-chat[mode="embed"] {
height: 36px;
padding: 0;
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
border-radius: 50%;
display: flex;
align-items: center;
diff --git a/devplacepy/static/css/containers.css b/devplacepy/static/css/containers.css
index 24969e26..7c2b6402 100644
--- a/devplacepy/static/css/containers.css
+++ b/devplacepy/static/css/containers.css
@@ -209,7 +209,7 @@
.cm-suggest li:hover,
.cm-suggest li.cm-suggest-active {
- background: var(--bg-hover, var(--border));
+ background: var(--bg-card-hover);
}
.cm-suggest li.cm-suggest-active {
diff --git a/devplacepy/static/css/deepsearch.css b/devplacepy/static/css/deepsearch.css
index 12c62d06..9c75bcd3 100644
--- a/devplacepy/static/css/deepsearch.css
+++ b/devplacepy/static/css/deepsearch.css
@@ -160,7 +160,7 @@
.ds-progress-bar {
height: 100%;
width: 0;
- background: var(--accent-gradient, var(--accent));
+ background: var(--accent-gradient);
transition: width 0.3s ease;
}
@@ -241,7 +241,7 @@
.ds-phase.is-done .ds-phase-dot {
background: var(--accent);
border-color: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
}
.ds-phase.is-done .ds-phase-name {
@@ -546,7 +546,7 @@ dp-deepsearch-chat {
.ds-chat-msg.user .ds-chat-bubble {
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
}
.ds-chat-msg.agent .ds-chat-bubble {
@@ -597,7 +597,7 @@ dp-deepsearch-chat {
.ds-chat-send {
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
border: none;
border-radius: var(--radius-input);
padding: 0 var(--space-md);
diff --git a/devplacepy/static/css/docs-chat.css b/devplacepy/static/css/docs-chat.css
index a0a721df..c598bc7d 100644
--- a/devplacepy/static/css/docs-chat.css
+++ b/devplacepy/static/css/docs-chat.css
@@ -292,7 +292,7 @@ dp-docs-chat {
.docs-chat-send {
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
border: none;
border-radius: var(--radius);
padding: 0.625rem 1.25rem;
diff --git a/devplacepy/static/css/docs.css b/devplacepy/static/css/docs.css
index 99474666..f28ca220 100644
--- a/devplacepy/static/css/docs.css
+++ b/devplacepy/static/css/docs.css
@@ -431,7 +431,7 @@ textarea.param-input {
.format-option.active {
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
}
.format-fixed {
@@ -621,7 +621,7 @@ pre.code-pre > .code-gutter {
.docs-search-snippet mark {
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
padding: 0 0.125rem;
border-radius: 3px;
}
diff --git a/devplacepy/static/css/feed.css b/devplacepy/static/css/feed.css
index 84f2951f..954e7785 100644
--- a/devplacepy/static/css/feed.css
+++ b/devplacepy/static/css/feed.css
@@ -38,9 +38,8 @@
}
.feed-nav-btn.active {
- background: var(--accent-gradient);
- color: var(--white);
- box-shadow: var(--glow-accent);
+ background: var(--accent);
+ color: var(--on-accent);
}
.feed-nav-actions {
@@ -285,7 +284,7 @@
min-width: 1.25rem;
padding: 0 0.375rem;
border-radius: 999px;
- background: var(--success, #2f9e44);
+ background: var(--success);
color: var(--white);
font-size: 0.6875rem;
text-align: center;
@@ -368,14 +367,14 @@
width: 64px;
height: 64px;
border-radius: 50%;
- background: var(--accent-gradient);
- color: var(--white);
+ background: var(--accent);
+ color: var(--on-accent);
font-size: 2rem;
line-height: 1;
display: flex;
align-items: center;
justify-content: center;
- box-shadow: var(--glow-accent);
+ box-shadow: var(--shadow);
z-index: var(--z-fab);
border: none;
cursor: pointer;
diff --git a/devplacepy/static/css/issues.css b/devplacepy/static/css/issues.css
index e56e20de..86c4be57 100644
--- a/devplacepy/static/css/issues.css
+++ b/devplacepy/static/css/issues.css
@@ -35,11 +35,11 @@
text-decoration: none;
}
.issues-filter:hover {
- background: var(--bg-hover);
+ background: var(--bg-card-hover);
}
.issues-filter.active {
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
border-color: var(--accent);
}
.issues-modal-hint {
diff --git a/devplacepy/static/css/landing.css b/devplacepy/static/css/landing.css
index 4dafab4e..88178aa9 100644
--- a/devplacepy/static/css/landing.css
+++ b/devplacepy/static/css/landing.css
@@ -70,7 +70,7 @@
.dashboard-btn-primary {
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
border-color: var(--accent);
font-weight: 700;
padding: 0.55rem 1.5rem;
@@ -123,7 +123,7 @@
.dashboard-xp-fill {
height: 100%;
- background: var(--accent-gradient, linear-gradient(90deg, var(--accent), #f0932b));
+ background: var(--accent-gradient);
border-radius: 3px;
transition: width 0.4s ease;
}
@@ -171,7 +171,7 @@
.dashboard-posts-grid {
display: grid;
- grid-template-columns: repeat(2, minmax(0, 1fr));
+ grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
gap: 0.875rem;
}
@@ -466,7 +466,7 @@
font-size: 1.125rem;
border-radius: var(--radius-lg);
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
font-weight: 700;
}
@@ -567,7 +567,7 @@
padding: 0.7rem 2rem;
border-radius: var(--radius-lg);
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
font-size: 0.9375rem;
font-weight: 700;
}
@@ -637,7 +637,7 @@
.landing-xp-fill {
height: 100%;
- background: var(--accent-gradient, linear-gradient(90deg, var(--accent), #f0932b));
+ background: var(--accent-gradient);
border-radius: 3px;
transition: width 0.4s ease;
}
@@ -970,7 +970,7 @@
margin-top: auto;
align-self: flex-start;
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
border: none;
border-radius: var(--radius-lg);
padding: 0.6rem 1.1rem;
@@ -1004,6 +1004,12 @@
z-index: 1;
}
+.landing-game-dashboard {
+ max-width: 1200px;
+ padding: 0 1.25rem;
+ margin-top: 2rem;
+}
+
.landing-game-body {
position: relative;
overflow: hidden;
@@ -1105,7 +1111,7 @@
font-size: 1.05rem;
border-radius: var(--radius-lg);
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
font-weight: 700;
text-decoration: none;
transition: filter 0.15s ease, transform 0.15s ease;
diff --git a/devplacepy/static/css/news.css b/devplacepy/static/css/news.css
index ddbd5e1c..276343af 100644
--- a/devplacepy/static/css/news.css
+++ b/devplacepy/static/css/news.css
@@ -257,7 +257,7 @@
font-size: 0.875rem;
font-weight: 600;
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
border-radius: var(--radius);
}
diff --git a/devplacepy/static/css/profile.css b/devplacepy/static/css/profile.css
index 31dd6b08..6a90d5f6 100644
--- a/devplacepy/static/css/profile.css
+++ b/devplacepy/static/css/profile.css
@@ -49,7 +49,7 @@
}
.profile-presence.online {
- color: var(--success, #2f9e44);
+ color: var(--success);
}
.profile-presence::before {
@@ -64,7 +64,7 @@
}
.profile-presence.online::before {
- background: var(--success, #2f9e44);
+ background: var(--success);
}
.profile-stats {
@@ -231,7 +231,7 @@ a.profile-stat-value:hover {
.profile-tab.active {
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
}
.profile-posts {
@@ -464,7 +464,7 @@ a.profile-stat-value:hover {
}
.ai-correction-status[data-state="success"] {
- color: var(--success, #2f9e44);
+ color: var(--success);
}
.ai-correction-status[data-state="error"] {
diff --git a/devplacepy/static/css/project_files.css b/devplacepy/static/css/project_files.css
index 621e7e5c..fc25df9e 100644
--- a/devplacepy/static/css/project_files.css
+++ b/devplacepy/static/css/project_files.css
@@ -100,7 +100,7 @@
.pf-node-row.active {
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
}
.pf-node-row.pf-selected {
@@ -110,7 +110,7 @@
.pf-node-row.pf-selected.active {
background: var(--accent);
- color: var(--white);
+ color: var(--on-accent);
}
.pf-node-row.pf-dragging {
diff --git a/devplacepy/static/css/projects.css b/devplacepy/static/css/projects.css
index ed9f64bd..f6204e54 100644
--- a/devplacepy/static/css/projects.css
+++ b/devplacepy/static/css/projects.css
@@ -27,9 +27,8 @@
}
.projects-tab.active {
- background: var(--accent-gradient);
- color: var(--white);
- box-shadow: var(--glow-accent);
+ background: var(--accent);
+ color: var(--on-accent);
}
.projects-header {
diff --git a/devplacepy/static/css/sidebar.css b/devplacepy/static/css/sidebar.css
index 99a48a63..fd903208 100644
--- a/devplacepy/static/css/sidebar.css
+++ b/devplacepy/static/css/sidebar.css
@@ -76,10 +76,9 @@
.sidebar-link.active,
.sidebar-link.active:hover {
- background: var(--accent-gradient);
- color: var(--white);
+ background: var(--accent);
+ color: var(--on-accent);
font-weight: 600;
- box-shadow: var(--glow-accent);
}
.sidebar-dot {
diff --git a/devplacepy/static/css/variables.css b/devplacepy/static/css/variables.css
index 8c3184df..f60aaa8c 100644
--- a/devplacepy/static/css/variables.css
+++ b/devplacepy/static/css/variables.css
@@ -1,41 +1,41 @@
/* retoor */
:root {
- --bg-primary: #080413;
- --bg-secondary: #120821;
- --bg-card: #1a1030;
- --bg-card-hover: #241640;
- --bg-input: #140b26;
- --bg-modal: #1a1030;
+ --bg-primary: #271b5b;
+ --bg-secondary: #1a1736;
+ --bg-card: #13112a;
+ --bg-card-hover: #1a1736;
+ --bg-input: #1a1736;
+ --bg-modal: #13112a;
- --accent: #ff6b35;
- --accent-rgb: 255, 107, 53;
- --accent-hover: #ff7d4d;
- --accent-light: rgba(255, 107, 53, 0.12);
- --accent-2: #ff4f8b;
- --accent-gradient: linear-gradient(135deg, #ff6b3d, #ff4f6d);
+ --accent: #b73f1e;
+ --accent-rgb: 183, 63, 30;
+ --accent-hover: #af3050;
+ --accent-light: rgba(183, 63, 30, 0.14);
+ --accent-2: #af3050;
+ --accent-gradient: linear-gradient(135deg, #b73f1e, #af3050, #8f3b71);
+ --on-accent: #fff;
- --text-primary: #f4eefb;
- --text-secondary: #b8a8d0;
- --text-muted: #7a6a90;
+ --text-primary: #e9e4ff;
+ --text-secondary: #c8c3e5;
+ --text-muted: #9b93c9;
- --border: rgba(255, 255, 255, 0.08);
- --border-light: rgba(255, 255, 255, 0.14);
+ --border: #11101f;
+ --border-light: #2f2a55;
- --success: #4caf50;
- --warning: #ff9800;
- --danger: #e53935;
- --info: #42a5f5;
+ --success: #34d399;
+ --warning: #fbbf24;
+ --danger: #f87171;
+ --info: #60a5fa;
- --radius: 12px;
- --radius-input: 14px;
- --radius-lg: 18px;
- --radius-xl: 24px;
+ --radius: 8px;
+ --radius-input: 8px;
+ --radius-lg: 12px;
+ --radius-xl: 16px;
- --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.25);
- --shadow: 0 4px 20px rgba(0, 0, 0, 0.28);
- --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.45);
- --glow-accent: 0 6px 24px rgba(255, 95, 70, 0.45);
+ --shadow-sm: 0 2px 15px -3px rgba(0, 0, 0, 0.07), 0 10px 20px -2px rgba(0, 0, 0, 0.04);
+ --shadow: 0 4px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
+ --shadow-lg: 0 10px 40px -10px rgba(0, 0, 0, 0.15), 0 2px 10px -2px rgba(0, 0, 0, 0.05);
--white: #fff;
--overlay-dark: rgba(0, 0, 0, 0.7);
@@ -48,7 +48,7 @@
--space-xl: 1.5rem;
--space-2xl: 2rem;
- --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
+ --font-sans: "Trebuchet MS", "Segoe UI", Tahoma, Verdana, sans-serif;
--font-mono: "SF Mono", Monaco, "Cascadia Code", monospace;
--nav-height: 56px;
@@ -76,5 +76,5 @@
--topic-fun: #ffab00;
--topic-politics: #00bcd4;
- --bg-gradient: linear-gradient(135deg, #080413 0%, #160a28 50%, #080413 100%);
+ --bg-gradient: linear-gradient(135deg, #271b5b 0%, #1d1545 50%, #271b5b 100%);
}
diff --git a/devplacepy/static/icon-192.png b/devplacepy/static/icon-192.png
index 41d69119..6d86ddf0 100644
Binary files a/devplacepy/static/icon-192.png and b/devplacepy/static/icon-192.png differ
diff --git a/devplacepy/static/icon-512.png b/devplacepy/static/icon-512.png
index 559fbf47..bc1ef2ad 100644
Binary files a/devplacepy/static/icon-512.png and b/devplacepy/static/icon-512.png differ
diff --git a/devplacepy/static/icon-maskable-512.png b/devplacepy/static/icon-maskable-512.png
index 11426350..bc1ef2ad 100644
Binary files a/devplacepy/static/icon-maskable-512.png and b/devplacepy/static/icon-maskable-512.png differ
diff --git a/devplacepy/static/js/StatisticsCharts.js b/devplacepy/static/js/StatisticsCharts.js
index dffe5250..eeb7eb02 100644
--- a/devplacepy/static/js/StatisticsCharts.js
+++ b/devplacepy/static/js/StatisticsCharts.js
@@ -1,14 +1,14 @@
// retoor
const CHART_COLORS = [
- "#ff6b35",
- "#7c4dff",
- "#00bfa5",
- "#448aff",
+ "#b73f1e",
+ "#8f3b71",
+ "#34d399",
+ "#3a4b70",
"#ffab00",
- "#ff5252",
- "#42a5f5",
- "#ff4f8b",
+ "#f87171",
+ "#61477c",
+ "#af3050",
];
export class StatisticsCharts {
diff --git a/devplacepy/static/manifest.json b/devplacepy/static/manifest.json
index 2ac1a21f..117b22bd 100644
--- a/devplacepy/static/manifest.json
+++ b/devplacepy/static/manifest.json
@@ -9,8 +9,8 @@
"orientation": "any",
"lang": "en",
"dir": "ltr",
- "background_color": "#0f0a1a",
- "theme_color": "#0f0a1a",
+ "background_color": "#271b5b",
+ "theme_color": "#271b5b",
"icons": [
{
"src": "/static/icon-192.png",
diff --git a/devplacepy/static/offline.html b/devplacepy/static/offline.html
index ea40835c..3625d7af 100644
--- a/devplacepy/static/offline.html
+++ b/devplacepy/static/offline.html
@@ -7,11 +7,11 @@
Offline - DevPlace