source: lan-frontend/src/App.css@ 640ed89

Last change on this file since 640ed89 was 640ed89, checked in by istevanoska <ilinastevanoska@…>, 7 months ago

Initial commit

  • Property mode set to 100644
File size: 18.6 KB
Line 
1/* Reset and Base Styles */
2* {
3 margin: 0;
4 padding: 0;
5 box-sizing: border-box;
6}
7
8body {
9 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
10 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
11 min-height: 100vh;
12 color: #333;
13}
14
15.app-container {
16 display: flex;
17 min-height: 100vh;
18 background: #f5f7fa;
19}
20
21/* Sidebar */
22.sidebar {
23 width: 280px;
24 background: white;
25 border-right: 1px solid #e1e5eb;
26 display: flex;
27 flex-direction: column;
28 box-shadow: 2px 0 20px rgba(0, 0, 0, 0.05);
29 z-index: 100;
30}
31
32.sidebar-header {
33 padding: 24px 20px;
34 border-bottom: 1px solid #e1e5eb;
35 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
36 color: white;
37}
38
39.sidebar-header h2 {
40 font-size: 1.5rem;
41 margin-bottom: 4px;
42}
43
44.sidebar-subtitle {
45 font-size: 0.875rem;
46 opacity: 0.9;
47}
48
49.sidebar-section {
50 padding: 20px;
51 border-bottom: 1px solid #e1e5eb;
52}
53
54.sidebar-section h3 {
55 font-size: 0.875rem;
56 text-transform: uppercase;
57 color: #6c757d;
58 margin-bottom: 16px;
59 letter-spacing: 0.5px;
60}
61
62.filter-group {
63 margin-bottom: 16px;
64}
65
66.filter-group label {
67 display: block;
68 font-size: 0.875rem;
69 color: #495057;
70 margin-bottom: 6px;
71 font-weight: 500;
72}
73
74.filter-select,
75.filter-input {
76 width: 100%;
77 padding: 8px 12px;
78 border: 1px solid #d1d5db;
79 border-radius: 6px;
80 font-size: 0.875rem;
81 transition: all 0.2s;
82}
83
84.filter-select:focus,
85.filter-input:focus {
86 outline: none;
87 border-color: #667eea;
88 box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
89}
90
91.filter-slider {
92 width: 100%;
93 height: 6px;
94 background: #e9ecef;
95 border-radius: 3px;
96 outline: none;
97 -webkit-appearance: none;
98}
99
100.filter-slider::-webkit-slider-thumb {
101 -webkit-appearance: none;
102 width: 18px;
103 height: 18px;
104 background: #667eea;
105 border-radius: 50%;
106 cursor: pointer;
107}
108
109.sidebar-action {
110 width: 100%;
111 padding: 10px 16px;
112 margin-bottom: 8px;
113 background: #f8f9fa;
114 border: 1px solid #e1e5eb;
115 border-radius: 6px;
116 color: #495057;
117 font-size: 0.875rem;
118 text-align: left;
119 cursor: pointer;
120 transition: all 0.2s;
121}
122
123.sidebar-action:hover {
124 background: #e9ecef;
125 border-color: #667eea;
126 color: #667eea;
127}
128
129.btn-outline {
130 width: 100%;
131 padding: 10px 16px;
132 background: transparent;
133 border: 1px solid #667eea;
134 border-radius: 6px;
135 color: #667eea;
136 font-size: 0.875rem;
137 cursor: pointer;
138 transition: all 0.2s;
139}
140
141.btn-outline:hover {
142 background: #667eea;
143 color: white;
144}
145
146.sidebar-footer {
147 margin-top: auto;
148 padding: 20px;
149 border-top: 1px solid #e1e5eb;
150 background: #f8f9fa;
151}
152
153.status-indicator {
154 display: flex;
155 align-items: center;
156 gap: 8px;
157 margin-bottom: 12px;
158}
159
160.status-indicator-dot {
161 width: 8px;
162 height: 8px;
163 background: #28a745;
164 border-radius: 50%;
165}
166
167.status-indicator-dot.active {
168 background: #28a745;
169 animation: pulse 2s infinite;
170}
171
172@keyframes pulse {
173 0%, 100% { opacity: 1; }
174 50% { opacity: 0.5; }
175}
176
177.last-updated {
178 font-size: 0.75rem;
179 color: #6c757d;
180}
181
182/* Main Content */
183.main-content {
184 flex: 1;
185 padding: 24px;
186 overflow-y: auto;
187}
188
189.main-header {
190 display: flex;
191 justify-content: space-between;
192 align-items: center;
193 margin-bottom: 24px;
194}
195
196.main-header h1 {
197 font-size: 2rem;
198 color: #212529;
199 margin-bottom: 4px;
200}
201
202.main-subtitle {
203 color: #6c757d;
204 font-size: 0.875rem;
205}
206
207.header-stats {
208 display: flex;
209 align-items: center;
210 gap: 16px;
211}
212
213.btn-refresh {
214 padding: 8px 16px;
215 background: #667eea;
216 color: white;
217 border: none;
218 border-radius: 6px;
219 font-size: 0.875rem;
220 cursor: pointer;
221 transition: background 0.2s;
222}
223
224.btn-refresh:hover {
225 background: #5a6fd8;
226}
227
228/* Stats Grid */
229.stats-grid {
230 display: grid;
231 grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
232 gap: 16px;
233 margin-bottom: 32px;
234}
235
236.stat-card {
237 background: white;
238 border-radius: 10px;
239 padding: 20px;
240 display: flex;
241 align-items: center;
242 gap: 16px;
243 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
244 transition: transform 0.2s, box-shadow 0.2s;
245}
246
247.stat-card:hover {
248 transform: translateY(-2px);
249 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
250}
251
252.stat-online {
253 border-left: 4px solid #28a745;
254}
255
256.stat-idle {
257 border-left: 4px solid #ffc107;
258}
259
260.stat-offline {
261 border-left: 4px solid #dc3545;
262}
263
264.stat-sysmon {
265 border-left: 4px solid #6610f2;
266}
267
268.stat-alerts {
269 border-left: 4px solid #fd7e14;
270}
271
272.stat-icon {
273 font-size: 2rem;
274}
275
276.stat-info {
277 flex: 1;
278}
279
280.stat-label {
281 font-size: 0.875rem;
282 color: #6c757d;
283 margin-bottom: 4px;
284}
285
286.stat-value {
287 font-size: 2rem;
288 font-weight: bold;
289 color: #212529;
290}
291
292.stat-percentage {
293 font-size: 0.875rem;
294 color: #28a745;
295 font-weight: 500;
296}
297
298.stat-trend {
299 font-size: 0.75rem;
300 color: #6c757d;
301}
302
303/* Section Styles */
304.section {
305 background: white;
306 border-radius: 10px;
307 padding: 24px;
308 margin-bottom: 24px;
309 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
310}
311
312.section-header {
313 display: flex;
314 justify-content: space-between;
315 align-items: center;
316 margin-bottom: 20px;
317}
318
319.section-header h2 {
320 font-size: 1.5rem;
321 color: #212529;
322}
323
324.section-actions {
325 display: flex;
326 gap: 12px;
327 align-items: center;
328}
329
330.filter-badge {
331 padding: 6px 12px;
332 background: #e9ecef;
333 border-radius: 20px;
334 font-size: 0.875rem;
335 color: #495057;
336}
337
338/* Devices Grid */
339.devices-grid {
340 display: grid;
341 grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
342 gap: 20px;
343}
344
345.device-card {
346 background: white;
347 border-radius: 10px;
348 padding: 20px;
349 border: 1px solid #e1e5eb;
350 cursor: pointer;
351 transition: all 0.2s;
352 position: relative;
353 overflow: hidden;
354}
355
356.device-card:hover {
357 transform: translateY(-4px);
358 box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
359 border-color: #667eea;
360}
361
362.device-card.status-online {
363 border-left: 4px solid #28a745;
364}
365
366.device-card.status-idle {
367 border-left: 4px solid #ffc107;
368}
369
370.device-card.status-offline {
371 border-left: 4px solid #dc3545;
372}
373
374.device-card-header {
375 display: flex;
376 justify-content: space-between;
377 align-items: flex-start;
378 margin-bottom: 16px;
379}
380
381.device-name {
382 display: flex;
383 align-items: center;
384 gap: 12px;
385}
386
387.device-icon {
388 font-size: 1.5rem;
389}
390
391.device-name h3 {
392 font-size: 1.25rem;
393 color: #212529;
394}
395
396.status-badge {
397 padding: 4px 12px;
398 border-radius: 20px;
399 font-size: 0.75rem;
400 font-weight: 500;
401 text-transform: uppercase;
402 letter-spacing: 0.5px;
403}
404
405.status-badge.status-online {
406 background: #d4edda;
407 color: #155724;
408}
409
410.status-badge.status-idle {
411 background: #fff3cd;
412 color: #856404;
413}
414
415.status-badge.status-offline {
416 background: #f8d7da;
417 color: #721c24;
418}
419
420.device-info {
421 margin-bottom: 20px;
422}
423
424.info-item {
425 display: flex;
426 justify-content: space-between;
427 margin-bottom: 8px;
428 font-size: 0.875rem;
429}
430
431.info-label {
432 color: #6c757d;
433}
434
435.info-value {
436 color: #212529;
437 font-weight: 500;
438}
439
440.device-metrics {
441 display: grid;
442 grid-template-columns: 1fr 1fr;
443 gap: 16px;
444 margin-bottom: 20px;
445}
446
447.metric {
448 display: flex;
449 flex-direction: column;
450 gap: 6px;
451}
452
453.metric-label {
454 font-size: 0.75rem;
455 color: #6c757d;
456 text-transform: uppercase;
457 letter-spacing: 0.5px;
458}
459
460.metric-value {
461 font-size: 1.25rem;
462 font-weight: bold;
463 color: #212529;
464}
465
466.metric-bar {
467 height: 6px;
468 background: #e9ecef;
469 border-radius: 3px;
470 overflow: hidden;
471}
472
473.metric-fill {
474 height: 100%;
475 border-radius: 3px;
476 transition: width 0.3s ease;
477}
478
479.cpu-fill {
480 background: linear-gradient(90deg, #667eea, #764ba2);
481}
482
483.ram-fill {
484 background: linear-gradient(90deg, #f093fb, #f5576c);
485}
486
487.device-footer {
488 display: flex;
489 justify-content: space-between;
490 font-size: 0.75rem;
491 color: #6c757d;
492 padding-top: 16px;
493 border-top: 1px solid #e9ecef;
494}
495
496.footer-item {
497 display: flex;
498 flex-direction: column;
499 gap: 2px;
500}
501
502.footer-label {
503 font-size: 0.7rem;
504 opacity: 0.7;
505}
506
507.sysmon-indicator {
508 position: absolute;
509 top: 20px;
510 right: 20px;
511 display: flex;
512 align-items: center;
513 gap: 6px;
514 padding: 4px 8px;
515 background: rgba(102, 126, 234, 0.1);
516 border-radius: 4px;
517 font-size: 0.75rem;
518 color: #667eea;
519}
520
521.sysmon-icon {
522 font-size: 0.875rem;
523}
524
525/* Empty State */
526.empty-state {
527 grid-column: 1 / -1;
528 text-align: center;
529 padding: 60px 20px;
530}
531
532.empty-icon {
533 font-size: 3rem;
534 margin-bottom: 16px;
535 opacity: 0.3;
536}
537
538.empty-state h3 {
539 font-size: 1.5rem;
540 color: #6c757d;
541 margin-bottom: 8px;
542}
543
544.empty-state p {
545 color: #adb5bd;
546 margin-bottom: 24px;
547}
548
549.btn {
550 padding: 10px 24px;
551 background: #667eea;
552 color: white;
553 border: none;
554 border-radius: 6px;
555 font-size: 0.875rem;
556 cursor: pointer;
557 transition: background 0.2s;
558}
559
560.btn:hover {
561 background: #5a6fd8;
562}
563
564/* AI Assistant */
565.ai-assistant {
566 background: white;
567 border-radius: 10px;
568 margin-bottom: 24px;
569 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
570 overflow: hidden;
571}
572
573.ai-assistant.expanded {
574 box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
575}
576
577.ai-header {
578 display: flex;
579 justify-content: space-between;
580 align-items: center;
581 padding: 20px 24px;
582 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
583 color: white;
584 cursor: pointer;
585}
586
587.ai-title {
588 display: flex;
589 align-items: center;
590 gap: 12px;
591}
592
593.ai-icon {
594 font-size: 1.5rem;
595}
596
597.ai-toggle {
598 background: transparent;
599 border: 2px solid white;
600 color: white;
601 width: 32px;
602 height: 32px;
603 border-radius: 50%;
604 font-size: 1.2rem;
605 cursor: pointer;
606 display: flex;
607 align-items: center;
608 justify-content: center;
609}
610
611.ai-content {
612 padding: 24px;
613}
614
615.chat-history {
616 height: 300px;
617 overflow-y: auto;
618 margin-bottom: 20px;
619 padding-right: 10px;
620}
621
622.chat-message {
623 margin-bottom: 16px;
624 padding: 16px;
625 border-radius: 10px;
626 max-width: 85%;
627}
628
629.chat-message.question {
630 background: #e3f2fd;
631 margin-left: auto;
632 border-bottom-right-radius: 4px;
633}
634
635.chat-message.answer {
636 background: #f5f5f5;
637 margin-right: auto;
638 border-bottom-left-radius: 4px;
639}
640
641.message-header {
642 display: flex;
643 justify-content: space-between;
644 align-items: center;
645 margin-bottom: 8px;
646 font-size: 0.75rem;
647}
648
649.message-type {
650 font-weight: 500;
651}
652
653.message-computer {
654 background: rgba(0, 0, 0, 0.1);
655 padding: 2px 8px;
656 border-radius: 10px;
657}
658
659.message-content {
660 line-height: 1.5;
661 font-size: 0.875rem;
662}
663
664.message-time {
665 font-size: 0.7rem;
666 color: #6c757d;
667 text-align: right;
668 margin-top: 8px;
669}
670
671.typing-indicator {
672 display: flex;
673 gap: 4px;
674 padding: 10px 0;
675}
676
677.typing-indicator span {
678 width: 8px;
679 height: 8px;
680 background: #6c757d;
681 border-radius: 50%;
682 animation: typing 1.4s infinite;
683}
684
685.typing-indicator span:nth-child(2) { animation-delay: 0.2s; }
686.typing-indicator span:nth-child(3) { animation-delay: 0.4s; }
687
688@keyframes typing {
689 0%, 100% { transform: translateY(0); }
690 50% { transform: translateY(-5px); }
691}
692
693.chat-input-area {
694 display: flex;
695 flex-direction: column;
696 gap: 12px;
697}
698
699.chat-select {
700 padding: 8px 12px;
701 border: 1px solid #d1d5db;
702 border-radius: 6px;
703 font-size: 0.875rem;
704 width: 200px;
705}
706
707.input-with-button {
708 display: flex;
709 gap: 8px;
710}
711
712.chat-input {
713 flex: 1;
714 padding: 12px 16px;
715 border: 1px solid #d1d5db;
716 border-radius: 6px;
717 font-size: 0.875rem;
718}
719
720.chat-input:focus {
721 outline: none;
722 border-color: #667eea;
723}
724
725.chat-send-btn {
726 padding: 12px 24px;
727 background: #667eea;
728 color: white;
729 border: none;
730 border-radius: 6px;
731 font-size: 1rem;
732 cursor: pointer;
733 transition: background 0.2s;
734}
735
736.chat-send-btn:hover:not(:disabled) {
737 background: #5a6fd8;
738}
739
740.chat-send-btn:disabled {
741 opacity: 0.5;
742 cursor: not-allowed;
743}
744
745.chat-actions {
746 display: flex;
747 justify-content: space-between;
748 align-items: center;
749}
750
751.btn-ghost {
752 padding: 8px 16px;
753 background: transparent;
754 border: 1px solid #d1d5db;
755 border-radius: 6px;
756 color: #6c757d;
757 font-size: 0.875rem;
758 cursor: pointer;
759 transition: all 0.2s;
760}
761
762.btn-ghost:hover:not(:disabled) {
763 background: #f8f9fa;
764 border-color: #667eea;
765 color: #667eea;
766}
767
768.btn-ghost:disabled {
769 opacity: 0.5;
770 cursor: not-allowed;
771}
772
773.quick-questions {
774 display: flex;
775 align-items: center;
776 gap: 8px;
777}
778
779.quick-label {
780 font-size: 0.75rem;
781 color: #6c757d;
782}
783
784.quick-btn {
785 padding: 6px 12px;
786 background: #f8f9fa;
787 border: 1px solid #e1e5eb;
788 border-radius: 4px;
789 font-size: 0.75rem;
790 color: #495057;
791 cursor: pointer;
792 transition: all 0.2s;
793}
794
795.quick-btn:hover {
796 background: #e9ecef;
797 border-color: #667eea;
798 color: #667eea;
799}
800
801/* Modal Styles */
802.modal-overlay {
803 position: fixed;
804 top: 0;
805 left: 0;
806 right: 0;
807 bottom: 0;
808 background: rgba(0, 0, 0, 0.5);
809 display: flex;
810 align-items: center;
811 justify-content: center;
812 z-index: 1000;
813 backdrop-filter: blur(4px);
814}
815
816.modal {
817 background: white;
818 border-radius: 12px;
819 width: 90%;
820 max-width: 1200px;
821 max-height: 90vh;
822 overflow-y: auto;
823 box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
824}
825
826.modal-header {
827 display: flex;
828 justify-content: space-between;
829 align-items: flex-start;
830 padding: 24px;
831 border-bottom: 1px solid #e1e5eb;
832 background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
833 color: white;
834 border-radius: 12px 12px 0 0;
835}
836
837.modal-title h2 {
838 font-size: 1.75rem;
839 margin-bottom: 8px;
840}
841
842.modal-subtitle {
843 display: flex;
844 gap: 16px;
845 font-size: 0.875rem;
846 opacity: 0.9;
847}
848
849.subtitle-item {
850 display: flex;
851 align-items: center;
852 gap: 4px;
853}
854
855.modal-close {
856 background: transparent;
857 border: none;
858 color: white;
859 font-size: 1.5rem;
860 cursor: pointer;
861 padding: 4px;
862 opacity: 0.7;
863 transition: opacity 0.2s;
864}
865
866.modal-close:hover {
867 opacity: 1;
868}
869
870.modal-content {
871 padding: 24px;
872}
873
874.loading-state {
875 display: flex;
876 flex-direction: column;
877 align-items: center;
878 justify-content: center;
879 padding: 60px;
880 gap: 20px;
881}
882
883.loading-spinner {
884 width: 40px;
885 height: 40px;
886 border: 4px solid #e9ecef;
887 border-top-color: #667eea;
888 border-radius: 50%;
889 animation: spin 1s linear infinite;
890}
891
892@keyframes spin {
893 to { transform: rotate(360deg); }
894}
895
896/* Modal Grid */
897.modal-grid {
898 display: grid;
899 grid-template-columns: 1fr 1fr;
900 gap: 20px;
901 margin-bottom: 24px;
902}
903
904.modal-card {
905 background: #f8f9fa;
906 border-radius: 8px;
907 padding: 20px;
908 border: 1px solid #e1e5eb;
909}
910
911.card-title {
912 font-size: 1rem;
913 color: #495057;
914 margin-bottom: 16px;
915 display: flex;
916 align-items: center;
917 gap: 8px;
918}
919
920.metrics-grid {
921 display: grid;
922 grid-template-columns: 1fr 1fr;
923 gap: 16px;
924}
925
926.metric-item {
927 display: flex;
928 flex-direction: column;
929 gap: 4px;
930}
931
932.metric-label {
933 font-size: 0.75rem;
934 color: #6c757d;
935 text-transform: uppercase;
936 letter-spacing: 0.5px;
937}
938
939.metric-value {
940 font-size: 1.5rem;
941 font-weight: bold;
942 color: #212529;
943}
944
945.info-list {
946 display: flex;
947 flex-direction: column;
948 gap: 12px;
949}
950
951.info-item {
952 display: flex;
953 justify-content: space-between;
954 align-items: center;
955}
956
957.info-label {
958 font-size: 0.875rem;
959 color: #6c757d;
960}
961
962.info-value {
963 font-size: 0.875rem;
964 font-weight: 500;
965 color: #212529;
966}
967
968.status-tag {
969 padding: 4px 12px;
970 border-radius: 20px;
971 font-size: 0.75rem;
972 font-weight: 500;
973 text-transform: uppercase;
974}
975
976.status-tag.status-online {
977 background: #d4edda;
978 color: #155724;
979}
980
981.status-tag.status-idle {
982 background: #fff3cd;
983 color: #856404;
984}
985
986.status-tag.status-offline {
987 background: #f8d7da;
988 color: #721c24;
989}
990
991/* Modal Tabs */
992.modal-tabs {
993 margin-top: 24px;
994}
995
996.section {
997 margin-bottom: 32px;
998}
999
1000.section-title {
1001 font-size: 1.25rem;
1002 color: #212529;
1003 margin-bottom: 16px;
1004 display: flex;
1005 align-items: center;
1006 gap: 8px;
1007}
1008
1009/* Tables */
1010.table-container {
1011 overflow-x: auto;
1012 border-radius: 8px;
1013 border: 1px solid #e1e5eb;
1014}
1015
1016.data-table {
1017 width: 100%;
1018 border-collapse: collapse;
1019 font-size: 0.875rem;
1020}
1021
1022.data-table thead {
1023 background: #f8f9fa;
1024}
1025
1026.data-table th {
1027 padding: 12px 16px;
1028 text-align: left;
1029 font-weight: 500;
1030 color: #495057;
1031 border-bottom: 2px solid #e1e5eb;
1032}
1033
1034.data-table td {
1035 padding: 12px 16px;
1036 border-bottom: 1px solid #e1e5eb;
1037 vertical-align: top;
1038}
1039
1040.data-table tbody tr:hover {
1041 background: #f8f9fa;
1042}
1043
1044.event-id {
1045 display: inline-block;
1046 padding: 2px 8px;
1047 background: #e9ecef;
1048 border-radius: 4px;
1049 font-family: monospace;
1050 font-size: 0.75rem;
1051}
1052
1053.event-type {
1054 display: inline-block;
1055 padding: 2px 8px;
1056 border-radius: 4px;
1057 font-size: 0.75rem;
1058 font-weight: 500;
1059}
1060
1061.event-type.type-process_create {
1062 background: #d4edda;
1063 color: #155724;
1064}
1065
1066.event-type.type-network_connection {
1067 background: #cce5ff;
1068 color: #004085;
1069}
1070
1071.event-type.type-file_create {
1072 background: #fff3cd;
1073 color: #856404;
1074}
1075
1076.event-description {
1077 max-width: 300px;
1078 word-wrap: break-word;
1079}
1080
1081.no-data {
1082 text-align: center;
1083 color: #6c757d;
1084 font-style: italic;
1085}
1086
1087.process-name {
1088 font-weight: 500;
1089 color: #495057;
1090}
1091
1092.cpu-indicator {
1093 display: flex;
1094 align-items: center;
1095 gap: 8px;
1096}
1097
1098.progress-bar {
1099 flex: 1;
1100 height: 6px;
1101 background: #e9ecef;
1102 border-radius: 3px;
1103 overflow: hidden;
1104}
1105
1106.progress-fill {
1107 height: 100%;
1108 background: linear-gradient(90deg, #667eea, #764ba2);
1109 border-radius: 3px;
1110 transition: width 0.3s ease;
1111}
1112
1113.connection-status {
1114 display: inline-block;
1115 padding: 4px 8px;
1116 border-radius: 4px;
1117 font-size: 0.75rem;
1118 font-weight: 500;
1119}
1120
1121.connection-status.status-established {
1122 background: #d4edda;
1123 color: #155724;
1124}
1125
1126.connection-status.status-listening {
1127 background: #fff3cd;
1128 color: #856404;
1129}
1130
1131.connection-status.status-time_wait {
1132 background: #f8d7da;
1133 color: #721c24;
1134}
1135
1136/* Scrollbar Styling */
1137::-webkit-scrollbar {
1138 width: 8px;
1139 height: 8px;
1140}
1141
1142::-webkit-scrollbar-track {
1143 background: #f1f1f1;
1144 border-radius: 4px;
1145}
1146
1147::-webkit-scrollbar-thumb {
1148 background: #c1c1c1;
1149 border-radius: 4px;
1150}
1151
1152::-webkit-scrollbar-thumb:hover {
1153 background: #a8a8a8;
1154}
1155
1156/* Responsive Design */
1157@media (max-width: 1024px) {
1158 .app-container {
1159 flex-direction: column;
1160 }
1161
1162 .sidebar {
1163 width: 100%;
1164 border-right: none;
1165 border-bottom: 1px solid #e1e5eb;
1166 }
1167
1168 .sidebar-header {
1169 text-align: center;
1170 }
1171
1172 .stats-grid {
1173 grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
1174 }
1175
1176 .devices-grid {
1177 grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
1178 }
1179
1180 .modal-grid {
1181 grid-template-columns: 1fr;
1182 }
1183}
1184
1185@media (max-width: 768px) {
1186 .main-content {
1187 padding: 16px;
1188 }
1189
1190 .main-header {
1191 flex-direction: column;
1192 gap: 16px;
1193 align-items: flex-start;
1194 }
1195
1196 .section-header {
1197 flex-direction: column;
1198 gap: 12px;
1199 align-items: flex-start;
1200 }
1201
1202 .devices-grid {
1203 grid-template-columns: 1fr;
1204 }
1205
1206 .chat-actions {
1207 flex-direction: column;
1208 gap: 12px;
1209 align-items: flex-start;
1210 }
1211
1212 .quick-questions {
1213 flex-wrap: wrap;
1214 }
1215}
1216
1217@media (max-width: 480px) {
1218 .stats-grid {
1219 grid-template-columns: 1fr 1fr;
1220 }
1221
1222 .modal {
1223 width: 95%;
1224 margin: 10px;
1225 }
1226
1227 .input-with-button {
1228 flex-direction: column;
1229 }
1230
1231 .chat-select {
1232 width: 100%;
1233 }
1234}
Note: See TracBrowser for help on using the repository browser.