Subham9126 commited on
Commit
34b87f7
·
verified ·
1 Parent(s): 3f9c475

Update style.css

Browse files
Files changed (1) hide show
  1. style.css +1162 -212
style.css CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  /* Reset and Base Styles */
2
  * {
3
  margin: 0;
@@ -5,77 +10,167 @@
5
  box-sizing: border-box;
6
  }
7
 
8
- body {
 
9
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
10
- background-color: #f5f5f5;
11
- color: #333;
12
  line-height: 1.6;
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  }
14
 
15
- /* Sidebar Navigation */
 
 
 
 
 
 
 
 
 
 
 
 
16
  .sidebar {
17
  position: fixed;
18
  left: 0;
19
  top: 0;
20
- width: 250px;
21
  height: 100vh;
22
- background: linear-gradient(180deg, #2c3e50 0%, #34495e 100%);
23
  color: white;
24
- padding: 20px 0;
25
- z-index: 100;
 
 
 
 
 
 
26
  }
27
 
28
  .logo {
29
  text-align: center;
30
- padding: 0 20px 30px;
31
- border-bottom: 1px solid #4a5c6e;
 
32
  }
33
 
34
  .logo h2 {
35
- font-size: 1.5rem;
36
- font-weight: 600;
 
 
37
  }
38
 
39
  .nav-menu {
40
  list-style: none;
41
  padding: 20px 0;
 
42
  }
43
 
44
  .nav-menu li {
45
- margin-bottom: 5px;
46
  }
47
 
48
  .nav-link {
49
  display: block;
50
- padding: 15px 20px;
51
- color: #bdc3c7;
52
  text-decoration: none;
53
  transition: all 0.3s ease;
54
  font-weight: 500;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  }
56
 
57
  .nav-link:hover {
58
- background-color: #3a4c60;
59
  color: white;
60
- padding-left: 30px;
 
 
 
 
61
  }
62
 
63
  .nav-link.active {
64
- background-color: #3498db;
65
  color: white;
66
- border-right: 4px solid #2980b9;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  }
68
 
69
- /* Main Content */
 
 
 
70
  .main-content {
71
- margin-left: 250px;
72
- padding: 30px;
73
  min-height: 100vh;
 
 
74
  }
75
 
76
- /* Page Management */
 
 
 
77
  .page {
78
  display: none;
 
79
  }
80
 
81
  .page.active {
@@ -86,396 +181,594 @@ body {
86
  display: flex;
87
  justify-content: space-between;
88
  align-items: center;
89
- margin-bottom: 30px;
 
 
90
  }
91
 
92
  .page-header h1 {
93
- color: #2c3e50;
94
- font-size: 2rem;
95
- font-weight: 600;
 
 
96
  }
97
 
98
  .page-controls {
99
  display: flex;
100
  gap: 15px;
101
  align-items: center;
 
102
  }
103
 
104
- /* Dashboard Cards */
 
 
 
105
  .dashboard-cards {
106
  display: grid;
107
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
108
- gap: 20px;
109
- margin-bottom: 40px;
110
  }
111
 
112
  .card {
113
  background: white;
114
- padding: 25px;
115
- border-radius: 10px;
116
- box-shadow: 0 2px 10px rgba(0,0,0,0.1);
117
  text-align: center;
118
- border-left: 4px solid #3498db;
 
 
 
119
  }
120
 
121
- .card.overdue {
122
- border-left-color: #e74c3c;
 
 
 
 
 
 
 
 
 
 
 
123
  }
124
 
125
- .card.upcoming {
126
- border-left-color: #f39c12;
 
 
 
 
127
  }
128
 
129
  .card h3 {
130
- color: #7f8c8d;
131
- font-size: 0.9rem;
132
  text-transform: uppercase;
133
- letter-spacing: 1px;
134
- margin-bottom: 10px;
 
135
  }
136
 
137
  .card .stat {
138
- font-size: 2.5rem;
139
- font-weight: bold;
140
- color: #2c3e50;
 
 
 
 
 
 
 
 
 
 
141
  }
142
 
143
  /* Alerts Section */
144
  .alerts-section {
145
  background: white;
146
- border-radius: 10px;
147
- padding: 25px;
148
- box-shadow: 0 2px 10px rgba(0,0,0,0.1);
 
149
  }
150
 
151
  .alerts-section h2 {
152
- color: #2c3e50;
153
- margin-bottom: 20px;
 
 
154
  }
155
 
156
  .alert-item {
157
- padding: 15px;
158
- border-radius: 8px;
159
- margin-bottom: 10px;
160
  display: flex;
161
  align-items: center;
162
- gap: 15px;
 
 
 
 
 
 
163
  }
164
 
165
  .alert-item.overdue {
166
- background-color: #fdf2f2;
167
- border-left: 4px solid #e74c3c;
 
168
  }
169
 
170
  .alert-item.upcoming {
171
- background-color: #fffbf2;
172
- border-left: 4px solid #f39c12;
 
173
  }
174
 
175
  .alert-icon {
176
- font-size: 1.2rem;
 
177
  }
178
 
179
  .alert-content h4 {
180
- margin-bottom: 5px;
181
- color: #2c3e50;
 
182
  }
183
 
184
  .alert-content p {
185
- color: #7f8c8d;
186
- font-size: 0.9rem;
187
  }
188
 
189
  .no-alerts {
190
  text-align: center;
191
- color: #7f8c8d;
192
  font-style: italic;
 
 
193
  }
194
 
195
- /* Tables */
 
 
 
196
  .table-container {
197
  background: white;
198
- border-radius: 10px;
199
  overflow: hidden;
200
- box-shadow: 0 2px 10px rgba(0,0,0,0.1);
 
201
  }
202
 
203
  table {
204
  width: 100%;
205
  border-collapse: collapse;
 
206
  }
207
 
208
  th, td {
209
- padding: 15px;
210
  text-align: left;
211
- border-bottom: 1px solid #ecf0f1;
212
  }
213
 
214
  th {
215
- background-color: #f8f9fa;
216
  font-weight: 600;
217
- color: #2c3e50;
218
  font-size: 0.9rem;
219
  text-transform: uppercase;
220
- letter-spacing: 0.5px;
 
 
 
 
 
221
  }
222
 
223
  tbody tr:hover {
224
- background-color: #f8f9fa;
 
225
  }
226
 
227
  .no-data {
228
  text-align: center;
229
- color: #7f8c8d;
230
  font-style: italic;
 
 
231
  }
232
 
233
- /* Buttons */
 
 
 
234
  .btn {
235
- padding: 10px 20px;
236
  border: none;
237
- border-radius: 6px;
238
  cursor: pointer;
239
- font-size: 0.9rem;
240
- font-weight: 500;
241
  text-decoration: none;
242
  display: inline-block;
243
  transition: all 0.3s ease;
244
- min-width: 100px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
  }
246
 
247
  .btn-primary {
248
- background-color: #3498db;
249
  color: white;
250
  }
251
 
252
  .btn-primary:hover {
253
- background-color: #2980b9;
254
- transform: translateY(-2px);
 
255
  }
256
 
257
  .btn-secondary {
258
- background-color: #95a5a6;
259
  color: white;
260
  }
261
 
262
  .btn-secondary:hover {
263
- background-color: #7f8c8d;
 
264
  }
265
 
266
  .btn-danger {
267
- background-color: #e74c3c;
268
  color: white;
269
  }
270
 
271
  .btn-danger:hover {
272
- background-color: #c0392b;
 
 
273
  }
274
 
275
  .btn-warning {
276
- background-color: #f39c12;
277
  color: white;
278
  }
279
 
280
  .btn-warning:hover {
281
- background-color: #d68910;
 
 
282
  }
283
 
284
  .btn-small {
285
- padding: 5px 10px;
286
- font-size: 0.8rem;
287
- min-width: auto;
 
288
  }
289
 
290
  .btn:disabled {
291
- background-color: #bdc3c7;
 
292
  cursor: not-allowed;
293
  transform: none;
 
 
 
 
 
294
  }
295
 
296
  .action-buttons {
297
  display: flex;
298
- gap: 5px;
 
299
  }
300
 
301
- /* Modal Styles */
 
 
 
302
  .modal {
303
  display: none;
304
  position: fixed;
305
- z-index: 1000;
306
  left: 0;
307
  top: 0;
308
  width: 100%;
309
  height: 100%;
310
- background-color: rgba(0,0,0,0.5);
 
311
  animation: fadeIn 0.3s ease;
312
  }
313
 
314
  .modal-content {
315
- background-color: white;
316
- margin: 5% auto;
317
- border-radius: 10px;
318
  width: 90%;
319
- max-width: 500px;
320
- box-shadow: 0 10px 30px rgba(0,0,0,0.3);
321
- animation: slideIn 0.3s ease;
 
 
 
 
 
 
 
 
 
 
 
 
322
  }
323
 
324
  .modal-header {
325
  display: flex;
326
  justify-content: space-between;
327
  align-items: center;
328
- padding: 20px 25px;
329
- border-bottom: 1px solid #ecf0f1;
 
330
  }
331
 
332
  .modal-header h2 {
333
- color: #2c3e50;
334
- font-size: 1.3rem;
 
 
335
  }
336
 
337
  .close {
338
- color: #aaa;
339
- font-size: 28px;
340
  font-weight: bold;
341
  cursor: pointer;
 
 
 
 
 
 
 
342
  }
343
 
344
  .close:hover {
345
- color: #333;
 
 
346
  }
347
 
348
- /* Forms */
 
 
 
349
  form {
350
- padding: 25px;
351
  }
352
 
353
  .form-group {
354
- margin-bottom: 20px;
355
  }
356
 
357
  .form-group label {
358
  display: block;
359
- margin-bottom: 8px;
360
  font-weight: 600;
361
- color: #2c3e50;
 
362
  }
363
 
364
  .form-group input,
365
  .form-group select,
366
  .form-group textarea {
367
  width: 100%;
368
- padding: 12px;
369
- border: 2px solid #ecf0f1;
370
- border-radius: 6px;
371
  font-size: 1rem;
372
- transition: border-color 0.3s ease;
 
 
373
  }
374
 
375
  .form-group input:focus,
376
  .form-group select:focus,
377
  .form-group textarea:focus {
378
  outline: none;
379
- border-color: #3498db;
 
 
 
380
  }
381
 
382
  .form-group textarea {
383
  resize: vertical;
384
- min-height: 80px;
 
385
  }
386
 
387
  .form-group small {
388
  display: block;
389
- margin-top: 5px;
390
- color: #7f8c8d;
391
- font-size: 0.85rem;
 
392
  }
393
 
394
  .modal-actions {
395
  display: flex;
396
  justify-content: flex-end;
397
- gap: 10px;
398
- margin-top: 25px;
399
- padding-top: 20px;
400
- border-top: 1px solid #ecf0f1;
401
  }
402
 
403
- /* Config Page */
 
 
 
404
  .config-container {
405
- max-width: 600px;
406
  background: white;
407
- border-radius: 10px;
408
- padding: 30px;
409
- box-shadow: 0 2px 10px rgba(0,0,0,0.1);
 
 
 
 
 
 
 
 
 
 
 
 
 
410
  }
411
 
412
  .config-actions {
413
  display: flex;
414
- gap: 15px;
415
  justify-content: flex-end;
416
- margin-top: 30px;
 
417
  }
418
 
419
  .config-help {
420
- margin-top: 30px;
421
- padding: 20px;
422
- background-color: #f8f9fa;
423
- border-radius: 8px;
424
- border-left: 4px solid #3498db;
 
 
 
 
 
 
 
 
 
425
  }
426
 
427
  .config-help h3 {
428
- color: #2c3e50;
429
- margin-bottom: 15px;
 
 
430
  }
431
 
432
  .config-help ol {
433
- margin-left: 20px;
 
434
  }
435
 
436
  .config-help li {
437
- margin-bottom: 8px;
438
- color: #5d6d7e;
 
439
  }
440
 
441
- /* Status Messages */
 
 
 
442
  .status-message {
443
- padding: 15px;
444
- border-radius: 8px;
445
- margin-top: 20px;
446
  font-weight: 500;
 
 
 
 
 
 
 
 
447
  }
448
 
449
  .status-message.success {
450
- background-color: #d4edda;
451
- color: #155724;
452
- border: 1px solid #c3e6cb;
 
 
 
 
453
  }
454
 
455
  .status-message.error {
456
- background-color: #f8d7da;
457
- color: #721c24;
458
- border: 1px solid #f5c6cb;
 
 
 
 
459
  }
460
 
461
  .status-message.info {
462
- background-color: #d1ecf1;
463
- color: #0c5460;
464
- border: 1px solid #bee5eb;
 
 
 
 
465
  }
466
 
467
- /* Loading Overlay */
 
 
 
468
  .loading-overlay {
469
  position: fixed;
470
  top: 0;
471
  left: 0;
472
  width: 100%;
473
  height: 100%;
474
- background-color: rgba(255, 255, 255, 0.9);
 
475
  display: flex;
476
  justify-content: center;
477
  align-items: center;
478
- z-index: 2000;
 
479
  }
480
 
481
  .loading-spinner {
@@ -483,75 +776,117 @@ form {
483
  }
484
 
485
  .spinner {
486
- border: 4px solid #f3f3f3;
487
- border-top: 4px solid #3498db;
488
  border-radius: 50%;
489
- width: 40px;
490
- height: 40px;
491
  animation: spin 1s linear infinite;
492
- margin: 0 auto 15px;
493
  }
494
 
495
  .loading-spinner p {
496
- color: #7f8c8d;
497
  font-weight: 500;
 
498
  }
499
 
500
- /* Toast Notifications */
 
 
 
501
  .toast-container {
502
  position: fixed;
503
- top: 20px;
504
- right: 20px;
505
- z-index: 3000;
 
506
  }
507
 
508
  .toast {
509
  background: white;
510
- border-radius: 8px;
511
- padding: 15px 20px;
512
- margin-bottom: 10px;
513
- box-shadow: 0 5px 15px rgba(0,0,0,0.2);
514
- border-left: 4px solid #3498db;
515
- animation: slideInRight 0.3s ease;
516
  position: relative;
517
- max-width: 300px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
518
  }
519
 
520
  .toast.success {
521
- border-left-color: #27ae60;
 
 
 
 
522
  }
523
 
524
  .toast.error {
525
- border-left-color: #e74c3c;
 
 
 
 
526
  }
527
 
528
  .toast.warning {
529
- border-left-color: #f39c12;
 
 
 
 
530
  }
531
 
532
  .toast-title {
533
  font-weight: 600;
534
- margin-bottom: 5px;
535
- color: #2c3e50;
 
536
  }
537
 
538
  .toast-message {
539
- color: #7f8c8d;
540
- font-size: 0.9rem;
 
541
  }
542
 
543
- /* Animations */
 
 
 
544
  @keyframes fadeIn {
545
- from { opacity: 0; }
546
- to { opacity: 1; }
 
 
 
 
547
  }
548
 
549
- @keyframes slideIn {
550
- from {
551
  opacity: 0;
552
- transform: translateY(-50px);
553
  }
554
- to {
555
  opacity: 1;
556
  transform: translateY(0);
557
  }
@@ -569,43 +904,173 @@ form {
569
  }
570
 
571
  @keyframes spin {
572
- 0% { transform: rotate(0deg); }
573
- 100% { transform: rotate(360deg); }
 
 
 
 
574
  }
575
 
576
- /* Responsive Design */
577
- @media (max-width: 768px) {
578
- .sidebar {
579
- transform: translateX(-100%);
580
- transition: transform 0.3s ease;
581
  }
582
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
583
  .sidebar.mobile-open {
584
  transform: translateX(0);
585
  }
586
 
587
  .main-content {
588
  margin-left: 0;
589
- padding: 20px;
590
- }
591
-
592
- .dashboard-cards {
593
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
594
- gap: 15px;
595
  }
596
 
597
  .page-header {
598
  flex-direction: column;
599
  align-items: stretch;
600
- gap: 15px;
 
 
 
 
 
601
  }
602
 
603
  .page-controls {
604
- justify-content: flex-end;
605
  }
606
 
607
  .modal-content {
608
- margin: 10% auto;
609
  width: 95%;
610
  }
611
 
@@ -615,11 +1080,496 @@ form {
615
 
616
  .action-buttons {
617
  flex-direction: column;
618
- gap: 8px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
619
  }
620
 
621
  .btn-small {
622
- min-width: 80px;
 
623
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
624
  }
625
 
 
 
1
+ /* ===================================
2
+ Vehicle Maintenance Management System
3
+ Complete CSS Stylesheet
4
+ =================================== */
5
+
6
  /* Reset and Base Styles */
7
  * {
8
  margin: 0;
 
10
  box-sizing: border-box;
11
  }
12
 
13
+ html, body {
14
+ height: 100%;
15
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
16
+ font-size: 16px;
 
17
  line-height: 1.6;
18
+ color: #333;
19
+ background-color: #f5f7fa;
20
+ overflow-x: hidden;
21
+ }
22
+
23
+ /* Scrollbar Styling */
24
+ ::-webkit-scrollbar {
25
+ width: 8px;
26
+ }
27
+
28
+ ::-webkit-scrollbar-track {
29
+ background: #f1f1f1;
30
+ border-radius: 4px;
31
  }
32
 
33
+ ::-webkit-scrollbar-thumb {
34
+ background: #c1c1c1;
35
+ border-radius: 4px;
36
+ }
37
+
38
+ ::-webkit-scrollbar-thumb:hover {
39
+ background: #a8a8a8;
40
+ }
41
+
42
+ /* ===================================
43
+ SIDEBAR NAVIGATION
44
+ =================================== */
45
+
46
  .sidebar {
47
  position: fixed;
48
  left: 0;
49
  top: 0;
50
+ width: 280px;
51
  height: 100vh;
52
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
53
  color: white;
54
+ padding: 0;
55
+ z-index: 1000;
56
+ box-shadow: 4px 0 20px rgba(0, 0, 0, 0.1);
57
+ transition: transform 0.3s ease;
58
+ }
59
+
60
+ .sidebar.mobile-hidden {
61
+ transform: translateX(-100%);
62
  }
63
 
64
  .logo {
65
  text-align: center;
66
+ padding: 30px 20px;
67
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
68
+ background: rgba(255, 255, 255, 0.05);
69
  }
70
 
71
  .logo h2 {
72
+ font-size: 1.6rem;
73
+ font-weight: 700;
74
+ margin: 0;
75
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
76
  }
77
 
78
  .nav-menu {
79
  list-style: none;
80
  padding: 20px 0;
81
+ margin: 0;
82
  }
83
 
84
  .nav-menu li {
85
+ margin: 0;
86
  }
87
 
88
  .nav-link {
89
  display: block;
90
+ padding: 18px 25px;
91
+ color: rgba(255, 255, 255, 0.8);
92
  text-decoration: none;
93
  transition: all 0.3s ease;
94
  font-weight: 500;
95
+ font-size: 1rem;
96
+ position: relative;
97
+ border-left: 4px solid transparent;
98
+ }
99
+
100
+ .nav-link::before {
101
+ content: '';
102
+ position: absolute;
103
+ left: 0;
104
+ top: 0;
105
+ height: 100%;
106
+ width: 4px;
107
+ background: linear-gradient(135deg, #ff6b6b, #4ecdc4);
108
+ transform: scaleY(0);
109
+ transition: transform 0.3s ease;
110
  }
111
 
112
  .nav-link:hover {
113
+ background-color: rgba(255, 255, 255, 0.1);
114
  color: white;
115
+ padding-left: 35px;
116
+ }
117
+
118
+ .nav-link:hover::before {
119
+ transform: scaleY(1);
120
  }
121
 
122
  .nav-link.active {
123
+ background-color: rgba(255, 255, 255, 0.15);
124
  color: white;
125
+ border-left-color: #4ecdc4;
126
+ font-weight: 600;
127
+ }
128
+
129
+ .nav-link.active::before {
130
+ transform: scaleY(1);
131
+ }
132
+
133
+ /* Mobile Menu Toggle */
134
+ .menu-toggle {
135
+ display: none;
136
+ position: fixed;
137
+ top: 20px;
138
+ left: 20px;
139
+ z-index: 1001;
140
+ background: #667eea;
141
+ color: white;
142
+ border: none;
143
+ padding: 12px;
144
+ border-radius: 8px;
145
+ cursor: pointer;
146
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
147
+ transition: all 0.3s ease;
148
+ }
149
+
150
+ .menu-toggle:hover {
151
+ background: #5a6fd8;
152
+ transform: translateY(-2px);
153
  }
154
 
155
+ /* ===================================
156
+ MAIN CONTENT AREA
157
+ =================================== */
158
+
159
  .main-content {
160
+ margin-left: 280px;
161
+ padding: 40px;
162
  min-height: 100vh;
163
+ background: #f5f7fa;
164
+ transition: margin-left 0.3s ease;
165
  }
166
 
167
+ /* ===================================
168
+ PAGE MANAGEMENT
169
+ =================================== */
170
+
171
  .page {
172
  display: none;
173
+ animation: fadeIn 0.4s ease-in-out;
174
  }
175
 
176
  .page.active {
 
181
  display: flex;
182
  justify-content: space-between;
183
  align-items: center;
184
+ margin-bottom: 40px;
185
+ padding-bottom: 20px;
186
+ border-bottom: 2px solid #e1e8ed;
187
  }
188
 
189
  .page-header h1 {
190
+ color: #2d3748;
191
+ font-size: 2.5rem;
192
+ font-weight: 700;
193
+ margin: 0;
194
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
195
  }
196
 
197
  .page-controls {
198
  display: flex;
199
  gap: 15px;
200
  align-items: center;
201
+ flex-wrap: wrap;
202
  }
203
 
204
+ /* ===================================
205
+ DASHBOARD STYLES
206
+ =================================== */
207
+
208
  .dashboard-cards {
209
  display: grid;
210
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
211
+ gap: 25px;
212
+ margin-bottom: 50px;
213
  }
214
 
215
  .card {
216
  background: white;
217
+ padding: 30px;
218
+ border-radius: 16px;
219
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
220
  text-align: center;
221
+ border: 1px solid rgba(255, 255, 255, 0.8);
222
+ position: relative;
223
+ overflow: hidden;
224
+ transition: all 0.3s ease;
225
  }
226
 
227
+ .card::before {
228
+ content: '';
229
+ position: absolute;
230
+ top: 0;
231
+ left: 0;
232
+ right: 0;
233
+ height: 4px;
234
+ background: linear-gradient(135deg, #667eea, #764ba2);
235
+ }
236
+
237
+ .card:hover {
238
+ transform: translateY(-8px);
239
+ box-shadow: 0 16px 48px rgba(0, 0, 0, 0.12);
240
  }
241
 
242
+ .card.overdue::before {
243
+ background: linear-gradient(135deg, #ff6b6b, #ee5a52);
244
+ }
245
+
246
+ .card.upcoming::before {
247
+ background: linear-gradient(135deg, #ffa726, #ff7043);
248
  }
249
 
250
  .card h3 {
251
+ color: #718096;
252
+ font-size: 0.95rem;
253
  text-transform: uppercase;
254
+ letter-spacing: 1.2px;
255
+ margin-bottom: 15px;
256
+ font-weight: 600;
257
  }
258
 
259
  .card .stat {
260
+ font-size: 3rem;
261
+ font-weight: 800;
262
+ color: #2d3748;
263
+ margin: 10px 0;
264
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
265
+ }
266
+
267
+ .card.overdue .stat {
268
+ color: #e53e3e;
269
+ }
270
+
271
+ .card.upcoming .stat {
272
+ color: #ff7043;
273
  }
274
 
275
  /* Alerts Section */
276
  .alerts-section {
277
  background: white;
278
+ border-radius: 16px;
279
+ padding: 35px;
280
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
281
+ border: 1px solid rgba(255, 255, 255, 0.8);
282
  }
283
 
284
  .alerts-section h2 {
285
+ color: #2d3748;
286
+ margin-bottom: 25px;
287
+ font-size: 1.5rem;
288
+ font-weight: 600;
289
  }
290
 
291
  .alert-item {
292
+ padding: 20px;
293
+ border-radius: 12px;
294
+ margin-bottom: 15px;
295
  display: flex;
296
  align-items: center;
297
+ gap: 20px;
298
+ transition: all 0.3s ease;
299
+ border: 1px solid transparent;
300
+ }
301
+
302
+ .alert-item:hover {
303
+ transform: translateX(8px);
304
  }
305
 
306
  .alert-item.overdue {
307
+ background: linear-gradient(135deg, #fed7d7, #feb2b2);
308
+ border-left: 5px solid #e53e3e;
309
+ color: #742a2a;
310
  }
311
 
312
  .alert-item.upcoming {
313
+ background: linear-gradient(135deg, #feebc8, #fbd38d);
314
+ border-left: 5px solid #ff7043;
315
+ color: #7b341e;
316
  }
317
 
318
  .alert-icon {
319
+ font-size: 1.5rem;
320
+ min-width: 24px;
321
  }
322
 
323
  .alert-content h4 {
324
+ margin-bottom: 8px;
325
+ font-weight: 600;
326
+ font-size: 1.1rem;
327
  }
328
 
329
  .alert-content p {
330
+ font-size: 0.95rem;
331
+ opacity: 0.8;
332
  }
333
 
334
  .no-alerts {
335
  text-align: center;
336
+ color: #a0aec0;
337
  font-style: italic;
338
+ font-size: 1.1rem;
339
+ padding: 40px 0;
340
  }
341
 
342
+ /* ===================================
343
+ TABLE STYLES
344
+ =================================== */
345
+
346
  .table-container {
347
  background: white;
348
+ border-radius: 16px;
349
  overflow: hidden;
350
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
351
+ border: 1px solid rgba(255, 255, 255, 0.8);
352
  }
353
 
354
  table {
355
  width: 100%;
356
  border-collapse: collapse;
357
+ font-size: 0.95rem;
358
  }
359
 
360
  th, td {
361
+ padding: 18px 20px;
362
  text-align: left;
363
+ border-bottom: 1px solid #e2e8f0;
364
  }
365
 
366
  th {
367
+ background: linear-gradient(135deg, #f7fafc, #edf2f7);
368
  font-weight: 600;
369
+ color: #4a5568;
370
  font-size: 0.9rem;
371
  text-transform: uppercase;
372
+ letter-spacing: 0.8px;
373
+ border-bottom: 2px solid #e2e8f0;
374
+ }
375
+
376
+ tbody tr {
377
+ transition: all 0.3s ease;
378
  }
379
 
380
  tbody tr:hover {
381
+ background: linear-gradient(135deg, #f0fff4, #f7fafc);
382
+ transform: scale(1.01);
383
  }
384
 
385
  .no-data {
386
  text-align: center;
387
+ color: #a0aec0;
388
  font-style: italic;
389
+ padding: 60px 20px;
390
+ font-size: 1.1rem;
391
  }
392
 
393
+ /* ===================================
394
+ BUTTON STYLES
395
+ =================================== */
396
+
397
  .btn {
398
+ padding: 12px 24px;
399
  border: none;
400
+ border-radius: 10px;
401
  cursor: pointer;
402
+ font-size: 0.95rem;
403
+ font-weight: 600;
404
  text-decoration: none;
405
  display: inline-block;
406
  transition: all 0.3s ease;
407
+ min-width: 120px;
408
+ text-align: center;
409
+ position: relative;
410
+ overflow: hidden;
411
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
412
+ }
413
+
414
+ .btn::before {
415
+ content: '';
416
+ position: absolute;
417
+ top: 0;
418
+ left: -100%;
419
+ width: 100%;
420
+ height: 100%;
421
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
422
+ transition: left 0.5s ease;
423
+ }
424
+
425
+ .btn:hover::before {
426
+ left: 100%;
427
  }
428
 
429
  .btn-primary {
430
+ background: linear-gradient(135deg, #667eea, #764ba2);
431
  color: white;
432
  }
433
 
434
  .btn-primary:hover {
435
+ background: linear-gradient(135deg, #5a6fd8, #6a4190);
436
+ transform: translateY(-3px);
437
+ box-shadow: 0 8px 24px rgba(102, 126, 234, 0.3);
438
  }
439
 
440
  .btn-secondary {
441
+ background: linear-gradient(135deg, #a0aec0, #718096);
442
  color: white;
443
  }
444
 
445
  .btn-secondary:hover {
446
+ background: linear-gradient(135deg, #8fa4b3, #5f6c81);
447
+ transform: translateY(-3px);
448
  }
449
 
450
  .btn-danger {
451
+ background: linear-gradient(135deg, #ff6b6b, #ee5a52);
452
  color: white;
453
  }
454
 
455
  .btn-danger:hover {
456
+ background: linear-gradient(135deg, #ff5252, #e04848);
457
+ transform: translateY(-3px);
458
+ box-shadow: 0 8px 24px rgba(255, 107, 107, 0.3);
459
  }
460
 
461
  .btn-warning {
462
+ background: linear-gradient(135deg, #ffa726, #ff7043);
463
  color: white;
464
  }
465
 
466
  .btn-warning:hover {
467
+ background: linear-gradient(135deg, #ff9800, #ff5722);
468
+ transform: translateY(-3px);
469
+ box-shadow: 0 8px 24px rgba(255, 167, 38, 0.3);
470
  }
471
 
472
  .btn-small {
473
+ padding: 8px 16px;
474
+ font-size: 0.85rem;
475
+ min-width: 90px;
476
+ border-radius: 8px;
477
  }
478
 
479
  .btn:disabled {
480
+ background: #e2e8f0;
481
+ color: #a0aec0;
482
  cursor: not-allowed;
483
  transform: none;
484
+ box-shadow: none;
485
+ }
486
+
487
+ .btn:disabled:hover {
488
+ transform: none;
489
  }
490
 
491
  .action-buttons {
492
  display: flex;
493
+ gap: 8px;
494
+ flex-wrap: wrap;
495
  }
496
 
497
+ /* ===================================
498
+ MODAL STYLES
499
+ =================================== */
500
+
501
  .modal {
502
  display: none;
503
  position: fixed;
504
+ z-index: 2000;
505
  left: 0;
506
  top: 0;
507
  width: 100%;
508
  height: 100%;
509
+ background: rgba(0, 0, 0, 0.6);
510
+ backdrop-filter: blur(8px);
511
  animation: fadeIn 0.3s ease;
512
  }
513
 
514
  .modal-content {
515
+ background: white;
516
+ margin: 3% auto;
517
+ border-radius: 20px;
518
  width: 90%;
519
+ max-width: 600px;
520
+ box-shadow: 0 20px 80px rgba(0, 0, 0, 0.2);
521
+ animation: slideInUp 0.4s ease;
522
+ overflow: hidden;
523
+ position: relative;
524
+ }
525
+
526
+ .modal-content::before {
527
+ content: '';
528
+ position: absolute;
529
+ top: 0;
530
+ left: 0;
531
+ right: 0;
532
+ height: 5px;
533
+ background: linear-gradient(135deg, #667eea, #764ba2);
534
  }
535
 
536
  .modal-header {
537
  display: flex;
538
  justify-content: space-between;
539
  align-items: center;
540
+ padding: 25px 30px;
541
+ background: linear-gradient(135deg, #f8fafc, #e2e8f0);
542
+ border-bottom: 1px solid #e2e8f0;
543
  }
544
 
545
  .modal-header h2 {
546
+ color: #2d3748;
547
+ font-size: 1.4rem;
548
+ font-weight: 600;
549
+ margin: 0;
550
  }
551
 
552
  .close {
553
+ color: #a0aec0;
554
+ font-size: 32px;
555
  font-weight: bold;
556
  cursor: pointer;
557
+ transition: all 0.3s ease;
558
+ border-radius: 50%;
559
+ width: 40px;
560
+ height: 40px;
561
+ display: flex;
562
+ align-items: center;
563
+ justify-content: center;
564
  }
565
 
566
  .close:hover {
567
+ color: #e53e3e;
568
+ background: rgba(229, 62, 62, 0.1);
569
+ transform: rotate(90deg);
570
  }
571
 
572
+ /* ===================================
573
+ FORM STYLES
574
+ =================================== */
575
+
576
  form {
577
+ padding: 30px;
578
  }
579
 
580
  .form-group {
581
+ margin-bottom: 25px;
582
  }
583
 
584
  .form-group label {
585
  display: block;
586
+ margin-bottom: 10px;
587
  font-weight: 600;
588
+ color: #2d3748;
589
+ font-size: 1rem;
590
  }
591
 
592
  .form-group input,
593
  .form-group select,
594
  .form-group textarea {
595
  width: 100%;
596
+ padding: 14px 18px;
597
+ border: 2px solid #e2e8f0;
598
+ border-radius: 12px;
599
  font-size: 1rem;
600
+ transition: all 0.3s ease;
601
+ background: #f7fafc;
602
+ color: #2d3748;
603
  }
604
 
605
  .form-group input:focus,
606
  .form-group select:focus,
607
  .form-group textarea:focus {
608
  outline: none;
609
+ border-color: #667eea;
610
+ background: white;
611
+ box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
612
+ transform: translateY(-2px);
613
  }
614
 
615
  .form-group textarea {
616
  resize: vertical;
617
+ min-height: 100px;
618
+ font-family: inherit;
619
  }
620
 
621
  .form-group small {
622
  display: block;
623
+ margin-top: 8px;
624
+ color: #718096;
625
+ font-size: 0.9rem;
626
+ line-height: 1.4;
627
  }
628
 
629
  .modal-actions {
630
  display: flex;
631
  justify-content: flex-end;
632
+ gap: 15px;
633
+ margin-top: 30px;
634
+ padding-top: 25px;
635
+ border-top: 1px solid #e2e8f0;
636
  }
637
 
638
+ /* ===================================
639
+ CONFIG PAGE STYLES
640
+ =================================== */
641
+
642
  .config-container {
643
+ max-width: 700px;
644
  background: white;
645
+ border-radius: 20px;
646
+ padding: 40px;
647
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
648
+ border: 1px solid rgba(255, 255, 255, 0.8);
649
+ position: relative;
650
+ overflow: hidden;
651
+ }
652
+
653
+ .config-container::before {
654
+ content: '';
655
+ position: absolute;
656
+ top: 0;
657
+ left: 0;
658
+ right: 0;
659
+ height: 5px;
660
+ background: linear-gradient(135deg, #667eea, #764ba2);
661
  }
662
 
663
  .config-actions {
664
  display: flex;
665
+ gap: 20px;
666
  justify-content: flex-end;
667
+ margin-top: 40px;
668
+ flex-wrap: wrap;
669
  }
670
 
671
  .config-help {
672
+ margin-top: 40px;
673
+ padding: 30px;
674
+ background: linear-gradient(135deg, #f0fff4, #e6fffa);
675
+ border-radius: 16px;
676
+ border-left: 5px solid #48bb78;
677
+ position: relative;
678
+ }
679
+
680
+ .config-help::before {
681
+ content: '💡';
682
+ position: absolute;
683
+ top: 20px;
684
+ left: 20px;
685
+ font-size: 1.5rem;
686
  }
687
 
688
  .config-help h3 {
689
+ color: #2d3748;
690
+ margin-bottom: 20px;
691
+ font-size: 1.2rem;
692
+ padding-left: 40px;
693
  }
694
 
695
  .config-help ol {
696
+ margin-left: 40px;
697
+ color: #4a5568;
698
  }
699
 
700
  .config-help li {
701
+ margin-bottom: 12px;
702
+ line-height: 1.6;
703
+ padding-left: 10px;
704
  }
705
 
706
+ /* ===================================
707
+ STATUS MESSAGES
708
+ =================================== */
709
+
710
  .status-message {
711
+ padding: 20px 25px;
712
+ border-radius: 12px;
713
+ margin-top: 25px;
714
  font-weight: 500;
715
+ border: 1px solid transparent;
716
+ display: flex;
717
+ align-items: center;
718
+ gap: 15px;
719
+ }
720
+
721
+ .status-message::before {
722
+ font-size: 1.2rem;
723
  }
724
 
725
  .status-message.success {
726
+ background: linear-gradient(135deg, #f0fff4, #c6f6d5);
727
+ color: #22543d;
728
+ border-color: #9ae6b4;
729
+ }
730
+
731
+ .status-message.success::before {
732
+ content: '✅';
733
  }
734
 
735
  .status-message.error {
736
+ background: linear-gradient(135deg, #fed7d7, #feb2b2);
737
+ color: #742a2a;
738
+ border-color: #fc8181;
739
+ }
740
+
741
+ .status-message.error::before {
742
+ content: '❌';
743
  }
744
 
745
  .status-message.info {
746
+ background: linear-gradient(135deg, #bee3f8, #90cdf4);
747
+ color: #2a4365;
748
+ border-color: #63b3ed;
749
+ }
750
+
751
+ .status-message.info::before {
752
+ content: 'ℹ️';
753
  }
754
 
755
+ /* ===================================
756
+ LOADING OVERLAY
757
+ =================================== */
758
+
759
  .loading-overlay {
760
  position: fixed;
761
  top: 0;
762
  left: 0;
763
  width: 100%;
764
  height: 100%;
765
+ background: rgba(255, 255, 255, 0.95);
766
+ backdrop-filter: blur(8px);
767
  display: flex;
768
  justify-content: center;
769
  align-items: center;
770
+ z-index: 3000;
771
+ animation: fadeIn 0.3s ease;
772
  }
773
 
774
  .loading-spinner {
 
776
  }
777
 
778
  .spinner {
779
+ border: 4px solid #f3f4f6;
780
+ border-top: 4px solid #667eea;
781
  border-radius: 50%;
782
+ width: 50px;
783
+ height: 50px;
784
  animation: spin 1s linear infinite;
785
+ margin: 0 auto 20px;
786
  }
787
 
788
  .loading-spinner p {
789
+ color: #4a5568;
790
  font-weight: 500;
791
+ font-size: 1.1rem;
792
  }
793
 
794
+ /* ===================================
795
+ TOAST NOTIFICATIONS
796
+ =================================== */
797
+
798
  .toast-container {
799
  position: fixed;
800
+ top: 30px;
801
+ right: 30px;
802
+ z-index: 4000;
803
+ max-width: 400px;
804
  }
805
 
806
  .toast {
807
  background: white;
808
+ border-radius: 12px;
809
+ padding: 20px 25px;
810
+ margin-bottom: 15px;
811
+ box-shadow: 0 12px 48px rgba(0, 0, 0, 0.15);
812
+ border-left: 5px solid #667eea;
813
+ animation: slideInRight 0.4s ease;
814
  position: relative;
815
+ overflow: hidden;
816
+ cursor: pointer;
817
+ transition: all 0.3s ease;
818
+ }
819
+
820
+ .toast:hover {
821
+ transform: translateX(-5px);
822
+ }
823
+
824
+ .toast::before {
825
+ content: '';
826
+ position: absolute;
827
+ top: 0;
828
+ left: 0;
829
+ width: 5px;
830
+ height: 100%;
831
+ background: linear-gradient(135deg, #667eea, #764ba2);
832
  }
833
 
834
  .toast.success {
835
+ border-left-color: #48bb78;
836
+ }
837
+
838
+ .toast.success::before {
839
+ background: linear-gradient(135deg, #48bb78, #38a169);
840
  }
841
 
842
  .toast.error {
843
+ border-left-color: #e53e3e;
844
+ }
845
+
846
+ .toast.error::before {
847
+ background: linear-gradient(135deg, #e53e3e, #c53030);
848
  }
849
 
850
  .toast.warning {
851
+ border-left-color: #ed8936;
852
+ }
853
+
854
+ .toast.warning::before {
855
+ background: linear-gradient(135deg, #ed8936, #dd6b20);
856
  }
857
 
858
  .toast-title {
859
  font-weight: 600;
860
+ margin-bottom: 8px;
861
+ color: #2d3748;
862
+ font-size: 1rem;
863
  }
864
 
865
  .toast-message {
866
+ color: #4a5568;
867
+ font-size: 0.95rem;
868
+ line-height: 1.4;
869
  }
870
 
871
+ /* ===================================
872
+ ANIMATIONS
873
+ =================================== */
874
+
875
  @keyframes fadeIn {
876
+ from {
877
+ opacity: 0;
878
+ }
879
+ to {
880
+ opacity: 1;
881
+ }
882
  }
883
 
884
+ @keyframes slideInUp {
885
+ from {
886
  opacity: 0;
887
+ transform: translateY(50px);
888
  }
889
+ to {
890
  opacity: 1;
891
  transform: translateY(0);
892
  }
 
904
  }
905
 
906
  @keyframes spin {
907
+ 0% {
908
+ transform: rotate(0deg);
909
+ }
910
+ 100% {
911
+ transform: rotate(360deg);
912
+ }
913
  }
914
 
915
+ @keyframes pulse {
916
+ 0%, 100% {
917
+ transform: scale(1);
 
 
918
  }
919
+ 50% {
920
+ transform: scale(1.05);
921
+ }
922
+ }
923
+
924
+ /* ===================================
925
+ UTILITY CLASSES
926
+ =================================== */
927
+
928
+ .text-center {
929
+ text-align: center;
930
+ }
931
+
932
+ .text-left {
933
+ text-align: left;
934
+ }
935
+
936
+ .text-right {
937
+ text-align: right;
938
+ }
939
+
940
+ .text-success {
941
+ color: #48bb78;
942
+ }
943
+
944
+ .text-danger {
945
+ color: #e53e3e;
946
+ }
947
+
948
+ .text-warning {
949
+ color: #ed8936;
950
+ }
951
+
952
+ .text-info {
953
+ color: #4299e1;
954
+ }
955
+
956
+ .text-muted {
957
+ color: #a0aec0;
958
+ }
959
+
960
+ .bg-success {
961
+ background-color: #48bb78;
962
+ }
963
+
964
+ .bg-danger {
965
+ background-color: #e53e3e;
966
+ }
967
+
968
+ .bg-warning {
969
+ background-color: #ed8936;
970
+ }
971
+
972
+ .bg-info {
973
+ background-color: #4299e1;
974
+ }
975
+
976
+ .mb-0 {
977
+ margin-bottom: 0;
978
+ }
979
+
980
+ .mt-10 {
981
+ margin-top: 10px;
982
+ }
983
+
984
+ .mt-20 {
985
+ margin-top: 20px;
986
+ }
987
+
988
+ .p-0 {
989
+ padding: 0;
990
+ }
991
+
992
+ .hidden {
993
+ display: none;
994
+ }
995
+
996
+ .visible {
997
+ display: block;
998
+ }
999
+
1000
+ .flex {
1001
+ display: flex;
1002
+ }
1003
+
1004
+ .flex-center {
1005
+ display: flex;
1006
+ justify-content: center;
1007
+ align-items: center;
1008
+ }
1009
+
1010
+ .flex-between {
1011
+ display: flex;
1012
+ justify-content: space-between;
1013
+ align-items: center;
1014
+ }
1015
+
1016
+ .w-full {
1017
+ width: 100%;
1018
+ }
1019
+
1020
+ .h-full {
1021
+ height: 100%;
1022
+ }
1023
+
1024
+ /* ===================================
1025
+ RESPONSIVE DESIGN
1026
+ =================================== */
1027
+
1028
+ @media (max-width: 1200px) {
1029
+ .main-content {
1030
+ padding: 30px;
1031
+ }
1032
+
1033
+ .dashboard-cards {
1034
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
1035
+ gap: 20px;
1036
+ }
1037
+ }
1038
+
1039
+ @media (max-width: 992px) {
1040
+ .menu-toggle {
1041
+ display: block;
1042
+ }
1043
+
1044
+ .sidebar {
1045
+ transform: translateX(-100%);
1046
+ }
1047
+
1048
  .sidebar.mobile-open {
1049
  transform: translateX(0);
1050
  }
1051
 
1052
  .main-content {
1053
  margin-left: 0;
1054
+ padding: 80px 25px 25px;
 
 
 
 
 
1055
  }
1056
 
1057
  .page-header {
1058
  flex-direction: column;
1059
  align-items: stretch;
1060
+ gap: 20px;
1061
+ text-align: center;
1062
+ }
1063
+
1064
+ .page-header h1 {
1065
+ font-size: 2rem;
1066
  }
1067
 
1068
  .page-controls {
1069
+ justify-content: center;
1070
  }
1071
 
1072
  .modal-content {
1073
+ margin: 5% auto;
1074
  width: 95%;
1075
  }
1076
 
 
1080
 
1081
  .action-buttons {
1082
  flex-direction: column;
1083
+ gap: 10px;
1084
+ }
1085
+
1086
+ .btn {
1087
+ width: 100%;
1088
+ }
1089
+
1090
+ .btn-small {
1091
+ min-width: auto;
1092
+ }
1093
+
1094
+ .toast-container {
1095
+ right: 15px;
1096
+ left: 15px;
1097
+ max-width: none;
1098
+ }
1099
+ }
1100
+
1101
+ @media (max-width: 768px) {
1102
+ .main-content {
1103
+ padding: 80px 20px 20px;
1104
+ }
1105
+
1106
+ .dashboard-cards {
1107
+ grid-template-columns: 1fr;
1108
+ gap: 15px;
1109
+ }
1110
+
1111
+ .card {
1112
+ padding: 25px 20px;
1113
+ }
1114
+
1115
+ .card .stat {
1116
+ font-size: 2.5rem;
1117
+ }
1118
+
1119
+ .alerts-section {
1120
+ padding: 25px 20px;
1121
+ }
1122
+
1123
+ .alert-item {
1124
+ padding: 15px;
1125
+ gap: 15px;
1126
+ }
1127
+
1128
+ th, td {
1129
+ padding: 12px 10px;
1130
+ font-size: 0.9rem;
1131
+ }
1132
+
1133
+ .table-container {
1134
+ overflow-x: auto;
1135
+ }
1136
+
1137
+ table {
1138
+ min-width: 600px;
1139
+ }
1140
+
1141
+ form {
1142
+ padding: 25px 20px;
1143
+ }
1144
+
1145
+ .modal-header {
1146
+ padding: 20px 25px;
1147
+ }
1148
+
1149
+ .modal-header h2 {
1150
+ font-size: 1.3rem;
1151
+ }
1152
+
1153
+ .config-container {
1154
+ padding: 30px 25px;
1155
+ }
1156
+
1157
+ .config-help {
1158
+ padding: 25px 20px;
1159
+ }
1160
+ }
1161
+
1162
+ @media (max-width: 480px) {
1163
+ .main-content {
1164
+ padding: 80px 15px 15px;
1165
+ }
1166
+
1167
+ .page-header h1 {
1168
+ font-size: 1.8rem;
1169
+ }
1170
+
1171
+ .card .stat {
1172
+ font-size: 2rem;
1173
+ }
1174
+
1175
+ th, td {
1176
+ padding: 10px 8px;
1177
+ font-size: 0.85rem;
1178
+ }
1179
+
1180
+ .btn {
1181
+ padding: 10px 16px;
1182
+ font-size: 0.9rem;
1183
+ min-width: 100px;
1184
  }
1185
 
1186
  .btn-small {
1187
+ padding: 8px 12px;
1188
+ font-size: 0.8rem;
1189
  }
1190
+
1191
+ .modal-content {
1192
+ margin: 2% auto;
1193
+ width: 98%;
1194
+ border-radius: 12px;
1195
+ }
1196
+
1197
+ .modal-header {
1198
+ padding: 15px 20px;
1199
+ }
1200
+
1201
+ .modal-header h2 {
1202
+ font-size: 1.2rem;
1203
+ }
1204
+
1205
+ form {
1206
+ padding: 20px 15px;
1207
+ }
1208
+
1209
+ .form-group input,
1210
+ .form-group select,
1211
+ .form-group textarea {
1212
+ padding: 12px 15px;
1213
+ font-size: 0.95rem;
1214
+ }
1215
+
1216
+ .config-container {
1217
+ padding: 25px 20px;
1218
+ }
1219
+
1220
+ .config-help {
1221
+ padding: 20px 15px;
1222
+ }
1223
+
1224
+ .config-help h3 {
1225
+ font-size: 1.1rem;
1226
+ padding-left: 35px;
1227
+ }
1228
+
1229
+ .config-help ol {
1230
+ margin-left: 35px;
1231
+ }
1232
+
1233
+ .alerts-section {
1234
+ padding: 20px 15px;
1235
+ }
1236
+
1237
+ .alert-item {
1238
+ padding: 12px;
1239
+ gap: 12px;
1240
+ flex-direction: column;
1241
+ text-align: center;
1242
+ }
1243
+
1244
+ .alert-content h4 {
1245
+ font-size: 1rem;
1246
+ }
1247
+
1248
+ .alert-content p {
1249
+ font-size: 0.9rem;
1250
+ }
1251
+
1252
+ .toast {
1253
+ padding: 15px 20px;
1254
+ margin-bottom: 10px;
1255
+ }
1256
+
1257
+ .toast-title {
1258
+ font-size: 0.95rem;
1259
+ }
1260
+
1261
+ .toast-message {
1262
+ font-size: 0.9rem;
1263
+ }
1264
+ }
1265
+
1266
+ /* ===================================
1267
+ PRINT STYLES
1268
+ =================================== */
1269
+
1270
+ @media print {
1271
+ .sidebar,
1272
+ .menu-toggle,
1273
+ .btn,
1274
+ .modal,
1275
+ .loading-overlay,
1276
+ .toast-container {
1277
+ display: none !important;
1278
+ }
1279
+
1280
+ .main-content {
1281
+ margin-left: 0;
1282
+ padding: 0;
1283
+ background: white;
1284
+ }
1285
+
1286
+ .page {
1287
+ display: block !important;
1288
+ }
1289
+
1290
+ .page:not(.active) {
1291
+ display: none !important;
1292
+ }
1293
+
1294
+ .card {
1295
+ break-inside: avoid;
1296
+ box-shadow: none;
1297
+ border: 1px solid #ddd;
1298
+ }
1299
+
1300
+ .table-container {
1301
+ box-shadow: none;
1302
+ border: 1px solid #ddd;
1303
+ }
1304
+
1305
+ .alerts-section {
1306
+ box-shadow: none;
1307
+ border: 1px solid #ddd;
1308
+ }
1309
+ }
1310
+
1311
+ /* ===================================
1312
+ DARK MODE SUPPORT (Optional)
1313
+ =================================== */
1314
+
1315
+ @media (prefers-color-scheme: dark) {
1316
+ :root {
1317
+ --bg-primary: #1a202c;
1318
+ --bg-secondary: #2d3748;
1319
+ --text-primary: #f7fafc;
1320
+ --text-secondary: #e2e8f0;
1321
+ --border-color: #4a5568;
1322
+ }
1323
+
1324
+ /* Uncomment below to enable dark mode */
1325
+ /*
1326
+ body {
1327
+ background-color: var(--bg-primary);
1328
+ color: var(--text-primary);
1329
+ }
1330
+
1331
+ .card,
1332
+ .table-container,
1333
+ .alerts-section,
1334
+ .modal-content,
1335
+ .config-container {
1336
+ background-color: var(--bg-secondary);
1337
+ border-color: var(--border-color);
1338
+ color: var(--text-primary);
1339
+ }
1340
+
1341
+ th {
1342
+ background: #374151;
1343
+ color: var(--text-secondary);
1344
+ }
1345
+
1346
+ .form-group input,
1347
+ .form-group select,
1348
+ .form-group textarea {
1349
+ background-color: var(--bg-primary);
1350
+ border-color: var(--border-color);
1351
+ color: var(--text-primary);
1352
+ }
1353
+
1354
+ .form-group input:focus,
1355
+ .form-group select:focus,
1356
+ .form-group textarea:focus {
1357
+ background-color: var(--bg-secondary);
1358
+ }
1359
+ */
1360
+ }
1361
+
1362
+ /* ===================================
1363
+ ACCESSIBILITY IMPROVEMENTS
1364
+ =================================== */
1365
+
1366
+ /* Focus indicators */
1367
+ button:focus,
1368
+ input:focus,
1369
+ select:focus,
1370
+ textarea:focus,
1371
+ .nav-link:focus {
1372
+ outline: 3px solid rgba(102, 126, 234, 0.5);
1373
+ outline-offset: 2px;
1374
+ }
1375
+
1376
+ /* High contrast mode support */
1377
+ @media (prefers-contrast: high) {
1378
+ .btn-primary {
1379
+ background: #000;
1380
+ border: 2px solid #fff;
1381
+ }
1382
+
1383
+ .btn-secondary {
1384
+ background: #666;
1385
+ border: 2px solid #fff;
1386
+ }
1387
+
1388
+ .card {
1389
+ border: 2px solid #333;
1390
+ }
1391
+ }
1392
+
1393
+ /* Reduced motion support */
1394
+ @media (prefers-reduced-motion: reduce) {
1395
+ *,
1396
+ *::before,
1397
+ *::after {
1398
+ animation-duration: 0.01ms !important;
1399
+ animation-iteration-count: 1 !important;
1400
+ transition-duration: 0.01ms !important;
1401
+ }
1402
+
1403
+ .btn:hover {
1404
+ transform: none;
1405
+ }
1406
+
1407
+ .card:hover {
1408
+ transform: none;
1409
+ }
1410
+ }
1411
+
1412
+ /* ===================================
1413
+ CUSTOM SCROLLBAR FOR WEBKIT
1414
+ =================================== */
1415
+
1416
+ .sidebar::-webkit-scrollbar {
1417
+ width: 6px;
1418
+ }
1419
+
1420
+ .sidebar::-webkit-scrollbar-track {
1421
+ background: rgba(255, 255, 255, 0.1);
1422
+ }
1423
+
1424
+ .sidebar::-webkit-scrollbar-thumb {
1425
+ background: rgba(255, 255, 255, 0.3);
1426
+ border-radius: 3px;
1427
+ }
1428
+
1429
+ .sidebar::-webkit-scrollbar-thumb:hover {
1430
+ background: rgba(255, 255, 255, 0.5);
1431
+ }
1432
+
1433
+ /* ===================================
1434
+ ADDITIONAL COMPONENT STYLES
1435
+ =================================== */
1436
+
1437
+ /* Loading states for buttons */
1438
+ .btn.loading {
1439
+ position: relative;
1440
+ color: transparent;
1441
+ pointer-events: none;
1442
+ }
1443
+
1444
+ .btn.loading::after {
1445
+ content: '';
1446
+ position: absolute;
1447
+ top: 50%;
1448
+ left: 50%;
1449
+ transform: translate(-50%, -50%);
1450
+ width: 16px;
1451
+ height: 16px;
1452
+ border: 2px solid rgba(255, 255, 255, 0.3);
1453
+ border-top-color: white;
1454
+ border-radius: 50%;
1455
+ animation: spin 0.8s linear infinite;
1456
+ }
1457
+
1458
+ /* Badges and indicators */
1459
+ .badge {
1460
+ display: inline-block;
1461
+ padding: 4px 8px;
1462
+ font-size: 0.75rem;
1463
+ font-weight: 600;
1464
+ border-radius: 6px;
1465
+ text-transform: uppercase;
1466
+ letter-spacing: 0.5px;
1467
+ }
1468
+
1469
+ .badge-success {
1470
+ background-color: #c6f6d5;
1471
+ color: #22543d;
1472
+ }
1473
+
1474
+ .badge-danger {
1475
+ background-color: #fed7d7;
1476
+ color: #742a2a;
1477
+ }
1478
+
1479
+ .badge-warning {
1480
+ background-color: #feebc8;
1481
+ color: #7b341e;
1482
+ }
1483
+
1484
+ .badge-info {
1485
+ background-color: #bee3f8;
1486
+ color: #2a4365;
1487
+ }
1488
+
1489
+ /* Empty states */
1490
+ .empty-state {
1491
+ text-align: center;
1492
+ padding: 60px 40px;
1493
+ color: #a0aec0;
1494
+ }
1495
+
1496
+ .empty-state-icon {
1497
+ font-size: 4rem;
1498
+ margin-bottom: 20px;
1499
+ opacity: 0.5;
1500
+ }
1501
+
1502
+ .empty-state-title {
1503
+ font-size: 1.5rem;
1504
+ font-weight: 600;
1505
+ margin-bottom: 10px;
1506
+ color: #4a5568;
1507
+ }
1508
+
1509
+ .empty-state-description {
1510
+ font-size: 1rem;
1511
+ line-height: 1.6;
1512
+ max-width: 400px;
1513
+ margin: 0 auto;
1514
+ }
1515
+
1516
+ /* Progress indicators */
1517
+ .progress {
1518
+ width: 100%;
1519
+ height: 8px;
1520
+ background-color: #e2e8f0;
1521
+ border-radius: 4px;
1522
+ overflow: hidden;
1523
+ }
1524
+
1525
+ .progress-bar {
1526
+ height: 100%;
1527
+ background: linear-gradient(135deg, #667eea, #764ba2);
1528
+ border-radius: 4px;
1529
+ transition: width 0.3s ease;
1530
+ }
1531
+
1532
+ /* Tooltips */
1533
+ .tooltip {
1534
+ position: relative;
1535
+ display: inline-block;
1536
+ }
1537
+
1538
+ .tooltip::before {
1539
+ content: attr(data-tooltip);
1540
+ position: absolute;
1541
+ bottom: 125%;
1542
+ left: 50%;
1543
+ transform: translateX(-50%);
1544
+ background-color: #2d3748;
1545
+ color: white;
1546
+ padding: 8px 12px;
1547
+ border-radius: 6px;
1548
+ font-size: 0.85rem;
1549
+ white-space: nowrap;
1550
+ opacity: 0;
1551
+ visibility: hidden;
1552
+ transition: all 0.3s ease;
1553
+ z-index: 1000;
1554
+ }
1555
+
1556
+ .tooltip::after {
1557
+ content: '';
1558
+ position: absolute;
1559
+ bottom: 117%;
1560
+ left: 50%;
1561
+ transform: translateX(-50%);
1562
+ border: 5px solid transparent;
1563
+ border-top-color: #2d3748;
1564
+ opacity: 0;
1565
+ visibility: hidden;
1566
+ transition: all 0.3s ease;
1567
+ }
1568
+
1569
+ .tooltip:hover::before,
1570
+ .tooltip:hover::after {
1571
+ opacity: 1;
1572
+ visibility: visible;
1573
  }
1574
 
1575
+ /* End of VMMS CSS */