Vinay-11 commited on
Commit
895b01b
·
verified ·
1 Parent(s): 139f134

Update static/style.css

Browse files
Files changed (1) hide show
  1. static/style.css +174 -335
static/style.css CHANGED
@@ -1,397 +1,236 @@
1
- /* ---------- Base ---------- */
2
-
3
  :root {
4
- --bg-page: #f4f6ff;
5
- --bg-card: #ffffff;
6
- --bg-soft: #eef2ff;
7
- --border: #e2e8f0;
8
- --border-strong: #cbd5f5;
9
- --accent: #2563eb;
10
- --accent-dark: #1d4ed8;
11
- --accent-soft: #e0ebff;
12
- --text-main: #111827;
13
- --text-muted: #6b7280;
14
- --danger: #b91c1c;
15
- --success: #047857;
16
- --warning: #92400e;
17
- --radius-lg: 16px;
18
- --shadow-soft: 0 18px 40px rgba(15, 23, 42, 0.08);
19
- --font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
20
- }
21
-
22
- *,
23
- *::before,
24
- *::after {
25
- box-sizing: border-box;
26
- }
27
-
28
- html,
29
- body {
30
- margin: 0;
31
- padding: 0;
32
  }
33
 
34
  body {
35
- font-family: var(--font-sans);
36
- background-color: var(--bg-page);
37
- color: var(--text-main);
38
- }
39
-
40
- /* ---------- Navbar ---------- */
41
-
42
- .nav {
43
- position: sticky;
44
- top: 0;
45
- z-index: 30;
46
- background-color: #ffffff;
47
- border-bottom: 1px solid #e5e7eb;
48
- display: flex;
49
- align-items: center;
50
- justify-content: space-between;
51
- padding: 10px 24px;
52
- }
53
-
54
- .brand-logo {
55
- font-weight: 700;
56
- font-size: 1.2rem;
57
- color: var(--accent);
58
- }
59
-
60
- .nav-links {
61
- display: flex;
62
- gap: 20px;
63
- font-size: 0.95rem;
64
  }
65
 
66
  .nav-links a {
67
- text-decoration: none;
68
- color: var(--text-muted);
69
- padding: 4px 0;
70
- position: relative;
 
71
  }
72
 
73
  .nav-links a:hover {
74
- color: var(--accent);
75
- }
76
-
77
- .nav-links a::after {
78
- content: "";
79
- position: absolute;
80
- left: 0;
81
- bottom: -2px;
82
- width: 0;
83
- height: 2px;
84
- background-color: var(--accent);
85
- transition: width 150ms ease-out;
86
- }
87
-
88
- .nav-links a:hover::after {
89
- width: 100%;
90
- }
91
-
92
- /* ---------- Layout ---------- */
93
-
94
- .page {
95
- max-width: 1200px;
96
- margin: 0 auto;
97
- padding: 24px 24px 40px;
98
- }
99
-
100
- .hero {
101
- text-align: center;
102
- margin-bottom: 24px;
103
- }
104
-
105
- .hero h1 {
106
- margin: 0 0 8px;
107
- font-size: clamp(1.8rem, 3vw, 2.4rem);
108
- }
109
-
110
- .hero p {
111
- margin: 4px 0;
112
- color: var(--text-muted);
113
- }
114
-
115
- .hero-note {
116
- margin-top: 8px;
117
- font-size: 0.9rem;
118
- }
119
-
120
- /* ---------- Cards ---------- */
121
-
122
- .card {
123
- background-color: var(--bg-card);
124
- border-radius: var(--radius-lg);
125
- border: 1px solid var(--border);
126
- box-shadow: var(--shadow-soft);
127
- padding: 18px 20px;
128
- }
129
-
130
- .card h2 {
131
- margin: 0 0 12px;
132
- font-size: 1.05rem;
133
- }
134
-
135
- .card-header {
136
- display: flex;
137
- justify-content: space-between;
138
- align-items: center;
139
- margin-bottom: 12px;
140
- }
141
-
142
- /* Pills / badges */
143
-
144
- .pill {
145
- display: inline-flex;
146
- align-items: center;
147
- padding: 4px 10px;
148
- border-radius: 999px;
149
- font-size: 0.75rem;
150
- border: 1px solid var(--border);
151
- background-color: #f9fafb;
152
- color: var(--text-muted);
153
- }
154
-
155
- .pill-neutral {
156
- background-color: var(--bg-soft);
157
- border-color: var(--border-strong);
158
- }
159
-
160
- .pill-soft {
161
- background-color: #f3f4ff;
162
  }
163
 
164
- .pill-success {
165
- background-color: #ecfdf3;
166
- border-color: #bbf7d0;
167
- color: var(--success);
 
 
168
  }
169
 
170
- .pill-danger {
171
- background-color: #fef2f2;
172
- border-color: #fecaca;
173
- color: var(--danger);
174
  }
175
 
176
- .pill-warning {
177
- background-color: #fffbeb;
178
- border-color: #fed7aa;
179
- color: var(--warning);
180
  }
181
 
182
- /* ---------- Grids ---------- */
183
-
184
- .top-grid,
185
- .bottom-grid {
186
- display: grid;
187
- grid-template-columns: 1.2fr 1fr;
188
- gap: 20px;
189
- margin-bottom: 20px;
190
  }
191
 
192
- .card-preview {
193
- display: flex;
194
- flex-direction: column;
 
 
 
 
195
  }
196
 
197
- .preview-box {
198
- margin-top: 4px;
199
- border-radius: 12px;
200
- background-color: var(--bg-soft);
201
- border: 1px dashed var(--border-strong);
202
- min-height: 220px;
203
- display: flex;
204
- align-items: center;
205
- justify-content: center;
206
- overflow: hidden;
207
  }
208
 
209
- #image-preview {
210
- max-width: 100%;
211
- max-height: 100%;
212
- display: none;
213
  }
214
 
215
- #preview-placeholder {
216
- color: var(--text-muted);
217
- font-size: 0.9rem;
 
 
 
 
 
 
 
 
 
 
 
 
218
  }
219
 
220
- /* ---------- Form & Inputs ---------- */
221
-
222
- .form-group {
223
- margin-bottom: 16px;
 
 
 
 
 
224
  }
225
 
226
- .form-group label {
227
- display: block;
228
- font-size: 0.9rem;
229
- margin-bottom: 6px;
230
- font-weight: 500;
231
  }
232
 
233
- .file-input-wrapper input[type="file"] {
234
- width: 100%;
 
 
 
 
 
 
 
 
 
 
235
  }
236
 
237
- .hint {
238
- margin: 4px 0 0;
239
- font-size: 0.8rem;
240
- color: var(--text-muted);
241
- }
242
-
243
- /* ---------- Buttons ---------- */
244
-
245
- .btn {
246
- border: none;
247
- border-radius: 999px;
248
- padding: 10px 18px;
249
- font-size: 0.95rem;
250
- font-weight: 500;
251
- cursor: pointer;
252
- transition: background-color 150ms ease-out, box-shadow 150ms ease-out,
253
- transform 150ms ease-out, opacity 150ms ease-out;
254
  }
255
 
256
- .btn-primary {
257
- background-color: var(--accent);
258
- color: #ffffff;
259
- box-shadow: 0 12px 25px rgba(37, 99, 235, 0.35);
260
- width: 100%;
 
 
261
  }
262
 
263
- .btn-primary:hover {
264
- background-color: var(--accent-dark);
265
- transform: translateY(-1px);
 
266
  }
267
 
268
- .btn-primary:disabled {
269
- opacity: 0.7;
270
- cursor: default;
271
- box-shadow: none;
272
  }
273
 
274
- /* ---------- Loading ---------- */
275
-
276
- .loading {
277
- display: flex;
278
- align-items: center;
279
- gap: 8px;
280
- margin-top: 10px;
281
- font-size: 0.85rem;
282
- color: var(--text-muted);
283
  }
284
 
285
  .spinner {
286
- width: 16px;
287
- height: 16px;
288
- border-radius: 999px;
289
- border: 2px solid #cbd5f5;
290
- border-top-color: var(--accent);
291
- animation: spin 0.8s linear infinite;
 
292
  }
293
 
294
  @keyframes spin {
295
- to {
296
- transform: rotate(360deg);
297
- }
298
- }
299
 
300
- /* ---------- Results ---------- */
301
-
302
- .card-result {
303
- opacity: 0;
304
- transform: translateY(20px);
305
- transition: opacity 400ms ease-out, transform 400ms ease-out;
306
  }
307
 
308
- .card-result.show {
309
- opacity: 1;
310
- transform: translateY(0);
 
 
311
  }
312
 
313
- .card-result .result-row {
314
- display: flex;
315
- justify-content: space-between;
316
- font-size: 0.9rem;
317
- margin-bottom: 4px;
 
 
318
  }
319
 
320
- .result-label {
321
- color: var(--text-muted);
 
 
 
 
 
322
  }
323
 
324
- .result-value {
325
- font-weight: 500;
 
 
 
 
326
  }
327
 
328
- .result-md {
329
- margin-top: 10px;
330
- font-size: 0.85rem;
331
- color: #4b5563;
332
- }
333
-
334
- .result-md h3 {
335
- margin: 8px 0 4px;
336
- font-size: 0.95rem;
337
- }
338
-
339
- /* ---------- Error & Info ---------- */
340
-
341
- .card-error {
342
- border-color: #fecaca;
343
- }
344
-
345
- .card-error h2 {
346
- color: var(--danger);
347
- }
348
-
349
- #error-output {
350
- font-size: 0.85rem;
351
- color: var(--danger);
352
- white-space: pre-wrap;
353
- }
354
-
355
- .card-info {
356
- margin-top: 10px;
357
- }
358
-
359
- /* ---------- Footer ---------- */
360
-
361
- .footer {
362
- margin-top: 24px;
363
- text-align: center;
364
- font-size: 0.85rem;
365
- color: var(--text-muted);
366
- }
367
-
368
- /* ---------- Helpers ---------- */
369
-
370
- .hidden {
371
- display: none;
372
- }
373
-
374
- /* ---------- Responsive ---------- */
375
-
376
- @media (max-width: 900px) {
377
- .top-grid,
378
- .bottom-grid {
379
- grid-template-columns: 1fr;
380
- }
381
-
382
- .nav {
383
- flex-direction: column;
384
- align-items: flex-start;
385
- gap: 8px;
386
- }
387
-
388
- .nav-links {
389
- flex-wrap: wrap;
390
- }
391
  }
392
 
393
- @media (max-width: 640px) {
394
- .page {
395
- padding: 16px 16px 32px;
396
- }
 
 
397
  }
 
 
 
1
  :root {
2
+ --primary-color: #2563eb;
3
+ /* Blue like in screenshot */
4
+ --secondary-color: #457b9d;
5
+ --background-color: #f3f4f6;
6
+ /* Light gray background */
7
+ --text-color: #1f2937;
8
+ --card-bg: #ffffff;
9
+ --success-color: #10b981;
10
+ --warning-color: #f59e0b;
11
+ --error-color: #ef4444;
12
+ --nav-height: 60px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  }
14
 
15
  body {
16
+ font-family: 'Inter', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
17
+ background-color: var(--background-color);
18
+ color: var(--text-color);
19
+ margin: 0;
20
+ padding: 0;
21
+ line-height: 1.6;
22
+ }
23
+
24
+ /* Navbar */
25
+ .navbar {
26
+ background-color: var(--card-bg);
27
+ height: var(--nav-height);
28
+ display: flex;
29
+ justify-content: space-between;
30
+ align-items: center;
31
+ padding: 0 50px;
32
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
33
+ position: sticky;
34
+ top: 0;
35
+ z-index: 1000;
36
+ }
37
+
38
+ .nav-brand {
39
+ font-size: 1.5rem;
40
+ font-weight: bold;
41
+ color: var(--primary-color);
 
 
 
42
  }
43
 
44
  .nav-links a {
45
+ text-decoration: none;
46
+ color: #4b5563;
47
+ margin-left: 20px;
48
+ font-weight: 500;
49
+ transition: color 0.2s;
50
  }
51
 
52
  .nav-links a:hover {
53
+ color: var(--primary-color);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  }
55
 
56
+ .container {
57
+ max-width: 1000px;
58
+ margin: 0 auto;
59
+ padding: 40px 20px;
60
+ min-height: calc(100vh - var(--nav-height) - 100px);
61
+ /* Adjust for footer */
62
  }
63
 
64
+ header {
65
+ text-align: center;
66
+ margin-bottom: 40px;
 
67
  }
68
 
69
+ h1 {
70
+ color: #111827;
71
+ margin-bottom: 10px;
72
+ font-size: 2.2rem;
73
  }
74
 
75
+ header p {
76
+ color: #6b7280;
77
+ font-size: 1.1rem;
 
 
 
 
 
78
  }
79
 
80
+ .upload-section {
81
+ background-color: var(--card-bg);
82
+ padding: 40px;
83
+ border-radius: 12px;
84
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
85
+ margin-bottom: 30px;
86
+ text-align: center;
87
  }
88
 
89
+ .file-input-wrapper {
90
+ margin-bottom: 25px;
 
 
 
 
 
 
 
 
91
  }
92
 
93
+ input[type="file"] {
94
+ display: none;
 
 
95
  }
96
 
97
+ .file-label {
98
+ display: inline-block;
99
+ padding: 12px 24px;
100
+ background-color: #f3f4f6;
101
+ color: #374151;
102
+ border: 1px solid #d1d5db;
103
+ border-radius: 6px;
104
+ cursor: pointer;
105
+ transition: all 0.2s;
106
+ width: 100%;
107
+ max-width: 400px;
108
+ text-align: left;
109
+ display: flex;
110
+ align-items: center;
111
+ margin: 0 auto;
112
  }
113
 
114
+ .file-label::before {
115
+ content: "Choose File";
116
+ background-color: #e5e7eb;
117
+ padding: 4px 12px;
118
+ border-radius: 4px;
119
+ margin-right: 10px;
120
+ font-size: 0.9em;
121
+ font-weight: 500;
122
+ border: 1px solid #d1d5db;
123
  }
124
 
125
+ .file-label:hover {
126
+ background-color: #e5e7eb;
 
 
 
127
  }
128
 
129
+ button#predictBtn {
130
+ background-color: var(--primary-color);
131
+ color: white;
132
+ border: none;
133
+ padding: 14px 40px;
134
+ font-size: 16px;
135
+ font-weight: 600;
136
+ border-radius: 6px;
137
+ cursor: pointer;
138
+ transition: background-color 0.2s;
139
+ width: 100%;
140
+ max-width: 400px;
141
  }
142
 
143
+ button#predictBtn:hover {
144
+ background-color: #1d4ed8;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
145
  }
146
 
147
+ #preview-section {
148
+ text-align: center;
149
+ margin: 30px 0;
150
+ background-color: var(--card-bg);
151
+ padding: 20px;
152
+ border-radius: 12px;
153
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
154
  }
155
 
156
+ #imagePreview {
157
+ max-width: 100%;
158
+ max-height: 250px;
159
+ border-radius: 8px;
160
  }
161
 
162
+ .hidden {
163
+ display: none;
 
 
164
  }
165
 
166
+ #loading {
167
+ text-align: center;
168
+ margin: 20px 0;
 
 
 
 
 
 
169
  }
170
 
171
  .spinner {
172
+ border: 4px solid #f3f3f3;
173
+ border-top: 4px solid var(--primary-color);
174
+ border-radius: 50%;
175
+ width: 40px;
176
+ height: 40px;
177
+ animation: spin 1s linear infinite;
178
+ margin: 0 auto 10px;
179
  }
180
 
181
  @keyframes spin {
182
+ 0% {
183
+ transform: rotate(0deg);
184
+ }
 
185
 
186
+ 100% {
187
+ transform: rotate(360deg);
188
+ }
 
 
 
189
  }
190
 
191
+ #results {
192
+ display: grid;
193
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
194
+ gap: 20px;
195
+ margin-top: 30px;
196
  }
197
 
198
+ .result-card {
199
+ background-color: var(--card-bg);
200
+ padding: 25px;
201
+ border-radius: 12px;
202
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
203
+ border-left: none;
204
+ /* Removed colored border */
205
  }
206
 
207
+ .result-title {
208
+ font-size: 1.1em;
209
+ font-weight: 700;
210
+ margin-bottom: 15px;
211
+ color: #111827;
212
+ border-bottom: 2px solid #f3f4f6;
213
+ padding-bottom: 10px;
214
  }
215
 
216
+ .prob-bar {
217
+ background-color: #e5e7eb;
218
+ height: 8px;
219
+ border-radius: 4px;
220
+ margin-top: 8px;
221
+ overflow: hidden;
222
  }
223
 
224
+ .prob-fill {
225
+ height: 100%;
226
+ background-color: var(--primary-color);
227
+ border-radius: 4px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  }
229
 
230
+ footer {
231
+ text-align: center;
232
+ padding: 30px 0;
233
+ color: #9ca3af;
234
+ font-size: 0.9em;
235
+ margin-top: auto;
236
  }