Spaces:
Running
Clean up design system - remove emojis and create refined monochromatic palette
Browse filesπ¨ Design Improvements:
- Replaced colorful green/blue mix with sophisticated monochromatic palette
- Removed all emojis from UI buttons and elements for clean professional look
- Updated color system to use refined slate grays as primary palette
- GPS button now uses consistent dark gray styling across all screen sizes
- Simplified gradients to focus on subtle sophistication
π§Ή Code Cleanup:
- Removed emoji icons from buttons (GPS, tree icons, stat counters)
- Fixed login page background gradient references
- Cleaned up inconsistent color usage
- Standardized button styling across all pages
The UI now has a clean, minimal, and professional appearance without the
tacky color mixing or distracting emojis. The monochromatic design feels
more sophisticated and modern while maintaining excellent usability.
- static/css/design-system.css +36 -58
- static/index.html +3 -3
- static/login.html +1 -12
- static/map.html +6 -6
@@ -4,29 +4,29 @@
|
|
4 |
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Playfair+Display:wght@400;500;600;700&display=swap');
|
5 |
|
6 |
:root {
|
7 |
-
/* Primary Brand Colors - Sophisticated
|
8 |
-
--primary-50: #
|
9 |
-
--primary-100: #
|
10 |
-
--primary-200: #
|
11 |
-
--primary-300: #
|
12 |
-
--primary-400: #
|
13 |
-
--primary-500: #
|
14 |
-
--primary-600: #
|
15 |
-
--primary-700: #
|
16 |
-
--primary-800: #
|
17 |
-
--primary-900: #
|
18 |
|
19 |
-
/*
|
20 |
-
--
|
21 |
-
--
|
22 |
-
--
|
23 |
-
--
|
24 |
-
--
|
25 |
-
--
|
26 |
-
--
|
27 |
-
--
|
28 |
-
--
|
29 |
-
--
|
30 |
|
31 |
/* Neutral Colors - Sophisticated grayscale */
|
32 |
--gray-50: #fafafa;
|
@@ -132,12 +132,10 @@
|
|
132 |
--glass-blur: blur(12px);
|
133 |
--glass-border: 1px solid rgba(255, 255, 255, 0.2);
|
134 |
|
135 |
-
/* Gradients */
|
136 |
-
--gradient-primary: linear-gradient(135deg, var(--primary-
|
137 |
-
--gradient-
|
138 |
-
--gradient-
|
139 |
-
--gradient-sky: linear-gradient(135deg, #0c4a6e 0%, #1e40af 25%, #2563eb 50%, #3b82f6 75%, #60a5fa 100%);
|
140 |
-
--gradient-sunset: linear-gradient(135deg, #7c2d12 0%, #dc2626 25%, #f59e0b 50%, #fbbf24 75%, #fde047 100%);
|
141 |
|
142 |
/* Transitions */
|
143 |
--transition-fast: 0.15s ease;
|
@@ -269,13 +267,13 @@ a:focus {
|
|
269 |
|
270 |
/* Modern Header Component */
|
271 |
.tt-header {
|
272 |
-
background: var(--gradient-
|
273 |
color: white;
|
274 |
position: sticky;
|
275 |
top: 0;
|
276 |
z-index: var(--z-sticky);
|
277 |
backdrop-filter: var(--glass-blur);
|
278 |
-
border-bottom:
|
279 |
box-shadow: var(--shadow-lg);
|
280 |
}
|
281 |
|
@@ -303,10 +301,6 @@ a:focus {
|
|
303 |
gap: var(--space-2);
|
304 |
}
|
305 |
|
306 |
-
.tt-header-logo::before {
|
307 |
-
content: 'π³';
|
308 |
-
font-size: var(--text-3xl);
|
309 |
-
}
|
310 |
|
311 |
.tt-header-subtitle {
|
312 |
font-size: var(--text-sm);
|
@@ -337,7 +331,7 @@ a:focus {
|
|
337 |
width: 36px;
|
338 |
height: 36px;
|
339 |
border-radius: var(--radius-full);
|
340 |
-
background: var(--gradient-
|
341 |
display: flex;
|
342 |
align-items: center;
|
343 |
justify-content: center;
|
@@ -662,30 +656,15 @@ a:focus {
|
|
662 |
|
663 |
/* GPS Button Enhanced Mobile Styling */
|
664 |
.tt-btn-gps {
|
665 |
-
background: var(--
|
666 |
color: white;
|
667 |
box-shadow: var(--shadow-md);
|
668 |
-
|
669 |
-
overflow: hidden;
|
670 |
-
}
|
671 |
-
|
672 |
-
.tt-btn-gps::before {
|
673 |
-
content: '';
|
674 |
-
position: absolute;
|
675 |
-
top: 0;
|
676 |
-
left: -100%;
|
677 |
-
width: 100%;
|
678 |
-
height: 100%;
|
679 |
-
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
|
680 |
-
transition: left 0.5s;
|
681 |
-
}
|
682 |
-
|
683 |
-
.tt-btn-gps:hover::before {
|
684 |
-
left: 100%;
|
685 |
}
|
686 |
|
687 |
.tt-btn-gps:hover {
|
688 |
-
|
|
|
689 |
box-shadow: var(--shadow-lg);
|
690 |
}
|
691 |
|
@@ -696,14 +675,13 @@ a:focus {
|
|
696 |
justify-content: center;
|
697 |
min-height: 48px;
|
698 |
font-weight: var(--font-semibold);
|
699 |
-
background: var(--
|
700 |
-
border:
|
701 |
color: white;
|
702 |
}
|
703 |
|
704 |
.tt-btn-gps:hover {
|
705 |
-
background: var(--
|
706 |
-
filter: brightness(1.1);
|
707 |
}
|
708 |
|
709 |
.tt-btn-gps:active {
|
|
|
4 |
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Playfair+Display:wght@400;500;600;700&display=swap');
|
5 |
|
6 |
:root {
|
7 |
+
/* Primary Brand Colors - Sophisticated monochromatic palette */
|
8 |
+
--primary-50: #f8fafc;
|
9 |
+
--primary-100: #f1f5f9;
|
10 |
+
--primary-200: #e2e8f0;
|
11 |
+
--primary-300: #cbd5e1;
|
12 |
+
--primary-400: #94a3b8;
|
13 |
+
--primary-500: #64748b;
|
14 |
+
--primary-600: #475569;
|
15 |
+
--primary-700: #334155;
|
16 |
+
--primary-800: #1e293b;
|
17 |
+
--primary-900: #0f172a;
|
18 |
|
19 |
+
/* Accent Colors - Minimal and refined */
|
20 |
+
--accent-50: #fafafa;
|
21 |
+
--accent-100: #f5f5f5;
|
22 |
+
--accent-200: #e5e5e5;
|
23 |
+
--accent-300: #d4d4d4;
|
24 |
+
--accent-400: #a3a3a3;
|
25 |
+
--accent-500: #737373;
|
26 |
+
--accent-600: #525252;
|
27 |
+
--accent-700: #404040;
|
28 |
+
--accent-800: #262626;
|
29 |
+
--accent-900: #171717;
|
30 |
|
31 |
/* Neutral Colors - Sophisticated grayscale */
|
32 |
--gray-50: #fafafa;
|
|
|
132 |
--glass-blur: blur(12px);
|
133 |
--glass-border: 1px solid rgba(255, 255, 255, 0.2);
|
134 |
|
135 |
+
/* Gradients - Sophisticated and minimal */
|
136 |
+
--gradient-primary: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-800) 50%, var(--primary-900) 100%);
|
137 |
+
--gradient-accent: linear-gradient(135deg, var(--accent-700) 0%, var(--accent-800) 50%, var(--accent-900) 100%);
|
138 |
+
--gradient-subtle: linear-gradient(135deg, var(--gray-50) 0%, var(--gray-100) 100%);
|
|
|
|
|
139 |
|
140 |
/* Transitions */
|
141 |
--transition-fast: 0.15s ease;
|
|
|
267 |
|
268 |
/* Modern Header Component */
|
269 |
.tt-header {
|
270 |
+
background: var(--gradient-primary);
|
271 |
color: white;
|
272 |
position: sticky;
|
273 |
top: 0;
|
274 |
z-index: var(--z-sticky);
|
275 |
backdrop-filter: var(--glass-blur);
|
276 |
+
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
277 |
box-shadow: var(--shadow-lg);
|
278 |
}
|
279 |
|
|
|
301 |
gap: var(--space-2);
|
302 |
}
|
303 |
|
|
|
|
|
|
|
|
|
304 |
|
305 |
.tt-header-subtitle {
|
306 |
font-size: var(--text-sm);
|
|
|
331 |
width: 36px;
|
332 |
height: 36px;
|
333 |
border-radius: var(--radius-full);
|
334 |
+
background: var(--gradient-accent);
|
335 |
display: flex;
|
336 |
align-items: center;
|
337 |
justify-content: center;
|
|
|
656 |
|
657 |
/* GPS Button Enhanced Mobile Styling */
|
658 |
.tt-btn-gps {
|
659 |
+
background: var(--accent-800);
|
660 |
color: white;
|
661 |
box-shadow: var(--shadow-md);
|
662 |
+
border: 1px solid var(--accent-700);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
663 |
}
|
664 |
|
665 |
.tt-btn-gps:hover {
|
666 |
+
background: var(--accent-900);
|
667 |
+
transform: translateY(-1px);
|
668 |
box-shadow: var(--shadow-lg);
|
669 |
}
|
670 |
|
|
|
675 |
justify-content: center;
|
676 |
min-height: 48px;
|
677 |
font-weight: var(--font-semibold);
|
678 |
+
background: var(--accent-800);
|
679 |
+
border: 1px solid var(--accent-700);
|
680 |
color: white;
|
681 |
}
|
682 |
|
683 |
.tt-btn-gps:hover {
|
684 |
+
background: var(--accent-900);
|
|
|
685 |
}
|
686 |
|
687 |
.tt-btn-gps:active {
|
@@ -954,10 +954,10 @@
|
|
954 |
<div class="form-group">
|
955 |
<div class="location-buttons">
|
956 |
<button type="button" id="getLocation" class="tt-btn tt-btn-gps location-btn-gps">
|
957 |
-
<span class="btn-text"
|
958 |
</button>
|
959 |
<a href="/static/map.html" class="tt-btn tt-btn-primary location-btn-map">
|
960 |
-
<span class="btn-text"
|
961 |
</a>
|
962 |
</div>
|
963 |
</div>
|
@@ -1088,7 +1088,7 @@
|
|
1088 |
|
1089 |
<div class="form-actions">
|
1090 |
<button type="button" id="resetForm" class="tt-btn tt-btn-outline">Reset Form</button>
|
1091 |
-
<button type="submit" class="tt-btn tt-btn-primary tt-btn-lg"
|
1092 |
</div>
|
1093 |
</form>
|
1094 |
|
|
|
954 |
<div class="form-group">
|
955 |
<div class="location-buttons">
|
956 |
<button type="button" id="getLocation" class="tt-btn tt-btn-gps location-btn-gps">
|
957 |
+
<span class="btn-text">Get GPS Location</span>
|
958 |
</button>
|
959 |
<a href="/static/map.html" class="tt-btn tt-btn-primary location-btn-map">
|
960 |
+
<span class="btn-text">Select from Map</span>
|
961 |
</a>
|
962 |
</div>
|
963 |
</div>
|
|
|
1088 |
|
1089 |
<div class="form-actions">
|
1090 |
<button type="button" id="resetForm" class="tt-btn tt-btn-outline">Reset Form</button>
|
1091 |
+
<button type="submit" class="tt-btn tt-btn-primary tt-btn-lg">Save Tree Record</button>
|
1092 |
</div>
|
1093 |
</form>
|
1094 |
|
@@ -7,7 +7,7 @@
|
|
7 |
<link rel="stylesheet" href="/static/css/design-system.css">
|
8 |
<style>
|
9 |
body {
|
10 |
-
background: var(--gradient-
|
11 |
min-height: 100vh;
|
12 |
display: flex;
|
13 |
align-items: center;
|
@@ -32,10 +32,6 @@
|
|
32 |
gap: var(--space-2);
|
33 |
}
|
34 |
|
35 |
-
.logo::before {
|
36 |
-
content: 'π³';
|
37 |
-
font-size: var(--text-5xl);
|
38 |
-
}
|
39 |
|
40 |
.logo-subtitle {
|
41 |
color: var(--gray-600);
|
@@ -89,9 +85,6 @@
|
|
89 |
gap: var(--space-2);
|
90 |
}
|
91 |
|
92 |
-
.demo-title::before {
|
93 |
-
content: 'π';
|
94 |
-
}
|
95 |
|
96 |
.account-list {
|
97 |
display: flex;
|
@@ -138,10 +131,6 @@
|
|
138 |
color: var(--success-700);
|
139 |
}
|
140 |
|
141 |
-
.security-notice::before {
|
142 |
-
content: 'β
';
|
143 |
-
margin-right: var(--space-2);
|
144 |
-
}
|
145 |
|
146 |
.footer {
|
147 |
text-align: center;
|
|
|
7 |
<link rel="stylesheet" href="/static/css/design-system.css">
|
8 |
<style>
|
9 |
body {
|
10 |
+
background: var(--gradient-primary);
|
11 |
min-height: 100vh;
|
12 |
display: flex;
|
13 |
align-items: center;
|
|
|
32 |
gap: var(--space-2);
|
33 |
}
|
34 |
|
|
|
|
|
|
|
|
|
35 |
|
36 |
.logo-subtitle {
|
37 |
color: var(--gray-600);
|
|
|
85 |
gap: var(--space-2);
|
86 |
}
|
87 |
|
|
|
|
|
|
|
88 |
|
89 |
.account-list {
|
90 |
display: flex;
|
|
|
131 |
color: var(--success-700);
|
132 |
}
|
133 |
|
|
|
|
|
|
|
|
|
134 |
|
135 |
.footer {
|
136 |
text-align: center;
|
@@ -94,7 +94,7 @@
|
|
94 |
|
95 |
/* Map-specific header styling */
|
96 |
.map-header {
|
97 |
-
background: var(--gradient-
|
98 |
position: relative;
|
99 |
overflow: hidden;
|
100 |
}
|
@@ -711,12 +711,12 @@
|
|
711 |
|
712 |
<div class="header-stats">
|
713 |
<div class="stat-item">
|
714 |
-
<span class="stat-icon"
|
715 |
<span class="stat-text">Trees:</span>
|
716 |
<span class="stat-number" id="treeCount">0</span>
|
717 |
</div>
|
718 |
<div class="stat-item">
|
719 |
-
<span class="stat-icon"
|
720 |
<span class="stat-text">Selected:</span>
|
721 |
<span class="stat-number" id="selectedCount">0</span>
|
722 |
</div>
|
@@ -730,7 +730,7 @@
|
|
730 |
<div class="tt-user-role" id="userRole">User</div>
|
731 |
</div>
|
732 |
</div>
|
733 |
-
<a href="/" class="tt-btn tt-btn-secondary"
|
734 |
<button id="logoutBtn" class="tt-btn tt-btn-secondary">Logout</button>
|
735 |
</div>
|
736 |
</div>
|
@@ -781,10 +781,10 @@
|
|
781 |
</div>
|
782 |
<div class="location-actions">
|
783 |
<button id="useLocationBtn" class="tt-btn tt-btn-primary">
|
784 |
-
|
785 |
</button>
|
786 |
<button id="cancelBtn" class="tt-btn tt-btn-secondary">
|
787 |
-
|
788 |
</button>
|
789 |
</div>
|
790 |
</div>
|
|
|
94 |
|
95 |
/* Map-specific header styling */
|
96 |
.map-header {
|
97 |
+
background: var(--gradient-primary);
|
98 |
position: relative;
|
99 |
overflow: hidden;
|
100 |
}
|
|
|
711 |
|
712 |
<div class="header-stats">
|
713 |
<div class="stat-item">
|
714 |
+
<span class="stat-icon">T</span>
|
715 |
<span class="stat-text">Trees:</span>
|
716 |
<span class="stat-number" id="treeCount">0</span>
|
717 |
</div>
|
718 |
<div class="stat-item">
|
719 |
+
<span class="stat-icon">S</span>
|
720 |
<span class="stat-text">Selected:</span>
|
721 |
<span class="stat-number" id="selectedCount">0</span>
|
722 |
</div>
|
|
|
730 |
<div class="tt-user-role" id="userRole">User</div>
|
731 |
</div>
|
732 |
</div>
|
733 |
+
<a href="/" class="tt-btn tt-btn-secondary">Add Tree</a>
|
734 |
<button id="logoutBtn" class="tt-btn tt-btn-secondary">Logout</button>
|
735 |
</div>
|
736 |
</div>
|
|
|
781 |
</div>
|
782 |
<div class="location-actions">
|
783 |
<button id="useLocationBtn" class="tt-btn tt-btn-primary">
|
784 |
+
Use This Location
|
785 |
</button>
|
786 |
<button id="cancelBtn" class="tt-btn tt-btn-secondary">
|
787 |
+
Cancel
|
788 |
</button>
|
789 |
</div>
|
790 |
</div>
|