Spaces:
Running
Running
style: Improve UI with enhanced visuals, responsiveness, and loading
Browse files- index.html +33 -7
- style.css +12 -0
index.html
CHANGED
@@ -68,6 +68,19 @@
|
|
68 |
max-width: fit-content;
|
69 |
margin-left: auto;
|
70 |
margin-right: auto;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
}
|
72 |
.controls select {
|
73 |
padding: 12px 16px;
|
@@ -100,10 +113,10 @@
|
|
100 |
background: var(--glass-effect);
|
101 |
padding: 24px;
|
102 |
border-radius: 16px;
|
103 |
-
box-shadow: 0
|
104 |
text-align: center;
|
105 |
border: 1px solid var(--border-color);
|
106 |
-
transition: all 0.
|
107 |
backdrop-filter: blur(8px);
|
108 |
position: relative;
|
109 |
overflow: hidden;
|
@@ -114,14 +127,18 @@
|
|
114 |
top: 0;
|
115 |
left: 0;
|
116 |
right: 0;
|
117 |
-
height:
|
118 |
background: linear-gradient(90deg, var(--primary-color), transparent);
|
|
|
119 |
}
|
120 |
.kpi-card:hover {
|
121 |
-
transform: translateY(-
|
122 |
-
box-shadow: 0
|
123 |
border-color: var(--primary-color);
|
124 |
}
|
|
|
|
|
|
|
125 |
.kpi-card h3 {
|
126 |
margin-top: 0;
|
127 |
margin-bottom: 10px;
|
@@ -143,10 +160,19 @@
|
|
143 |
|
144 |
.dashboard-container {
|
145 |
display: grid;
|
146 |
-
grid-template-columns: repeat(auto-fit, minmax(450px, 1fr));
|
147 |
-
gap: 25px;
|
148 |
margin-bottom: 30px;
|
149 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
.plot-container, .table-container {
|
151 |
background: var(--glass-effect);
|
152 |
padding: 24px;
|
|
|
68 |
max-width: fit-content;
|
69 |
margin-left: auto;
|
70 |
margin-right: auto;
|
71 |
+
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
72 |
+
transition: all 0.2s ease;
|
73 |
+
}
|
74 |
+
@media (max-width: 768px) {
|
75 |
+
.controls {
|
76 |
+
width: 100%;
|
77 |
+
max-width: 100%;
|
78 |
+
box-sizing: border-box;
|
79 |
+
}
|
80 |
+
.controls select {
|
81 |
+
width: 100%;
|
82 |
+
min-width: auto;
|
83 |
+
}
|
84 |
}
|
85 |
.controls select {
|
86 |
padding: 12px 16px;
|
|
|
113 |
background: var(--glass-effect);
|
114 |
padding: 24px;
|
115 |
border-radius: 16px;
|
116 |
+
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.08);
|
117 |
text-align: center;
|
118 |
border: 1px solid var(--border-color);
|
119 |
+
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
120 |
backdrop-filter: blur(8px);
|
121 |
position: relative;
|
122 |
overflow: hidden;
|
|
|
127 |
top: 0;
|
128 |
left: 0;
|
129 |
right: 0;
|
130 |
+
height: 3px;
|
131 |
background: linear-gradient(90deg, var(--primary-color), transparent);
|
132 |
+
opacity: 0.8;
|
133 |
}
|
134 |
.kpi-card:hover {
|
135 |
+
transform: translateY(-2px);
|
136 |
+
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
137 |
border-color: var(--primary-color);
|
138 |
}
|
139 |
+
.kpi-card:active {
|
140 |
+
transform: translateY(0);
|
141 |
+
}
|
142 |
.kpi-card h3 {
|
143 |
margin-top: 0;
|
144 |
margin-bottom: 10px;
|
|
|
160 |
|
161 |
.dashboard-container {
|
162 |
display: grid;
|
163 |
+
grid-template-columns: repeat(auto-fit, minmax(min(100%, 450px), 1fr));
|
164 |
+
gap: 25px;
|
165 |
margin-bottom: 30px;
|
166 |
}
|
167 |
+
@media (max-width: 768px) {
|
168 |
+
.dashboard-container {
|
169 |
+
grid-template-columns: 1fr;
|
170 |
+
gap: 20px;
|
171 |
+
}
|
172 |
+
.plot-container, .table-container {
|
173 |
+
min-height: 400px;
|
174 |
+
}
|
175 |
+
}
|
176 |
.plot-container, .table-container {
|
177 |
background: var(--glass-effect);
|
178 |
padding: 24px;
|
style.css
CHANGED
@@ -79,6 +79,18 @@ p {
|
|
79 |
margin-bottom: 20px;
|
80 |
animation: spin 1s cubic-bezier(0.68, -0.55, 0.27, 1.55) infinite;
|
81 |
position: relative;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
}
|
83 |
.spinner::after {
|
84 |
content: '';
|
|
|
79 |
margin-bottom: 20px;
|
80 |
animation: spin 1s cubic-bezier(0.68, -0.55, 0.27, 1.55) infinite;
|
81 |
position: relative;
|
82 |
+
will-change: transform;
|
83 |
+
}
|
84 |
+
.skeleton {
|
85 |
+
background: linear-gradient(90deg, rgba(22, 27, 34, 0.2) 25%, rgba(22, 27, 34, 0.3) 50%, rgba(22, 27, 34, 0.2) 75%);
|
86 |
+
background-size: 200% 100%;
|
87 |
+
animation: skeleton-loading 1.5s infinite;
|
88 |
+
border-radius: 8px;
|
89 |
+
min-height: 100px;
|
90 |
+
}
|
91 |
+
@keyframes skeleton-loading {
|
92 |
+
0% { background-position: 200% 0; }
|
93 |
+
100% { background-position: -200% 0; }
|
94 |
}
|
95 |
.spinner::after {
|
96 |
content: '';
|