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 ( '' - f'' + f'' f'{initial}' ) 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