master
css 4,916 lines 111 KB
Raw
1 
2 :root {
3 --sub-menu-bg: linear-gradient(180deg,#fff,#fff,#e9ecef);
4 --sub-menu-color: #888;
5 }
6
7 :focus {
8 outline: 0;
9 }
10
11
12 html, body {
13 width: 100%;
14 height: 100%;
15 }
16
17 body {
18 margin: 0;
19 padding: 0;
20 border: 0;
21 color: black;
22 font-size: 13px;
23 font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
24 background-color: #d3d9d6;
25 /* overflow-y: hidden; */
26 }
27
28 .night .collapseImage {
29 filter: invert(100%);
30 }
31
32 #container {
33 background-color: #fff;
34 width: 960px;
35 min-width: 960px;
36 max-height: 100vh;
37 margin: 0 auto;
38 border-top: 0;
39 border-right: 1px solid #b7b7b7;
40 border-bottom: 0;
41 border-left: 1px solid #b7b7b7;
42 padding: 0;
43 }
44
45 .night #container {
46 color: #bbb;
47 background-color: #000;
48 }
49
50 .fullscreen.login #container {
51 -ms-grid-rows: 66px 24px 1fr 45px;
52 grid-template-rows: 66px 24px auto 45px;
53 -ms-grid-columns: 90px 1fr;
54 /*grid-template-columns: 90px repeat(auto-fit, minmax(900px, 1fr));*/
55 grid-template-areas: "header header" "nav nav" "content content" "footer footer";
56 }
57
58 .fullscreen.arg_hide #container {
59 -ms-grid-rows: 66px 24px 1fr 45px;
60 grid-template-rows: 66px 24px auto 45px;
61 -ms-grid-columns: 90px 1fr;
62 /*grid-template-columns: 90px repeat(auto-fit, minmax(900px, 1fr));*/
63 grid-template-areas: "header header" "nav nav" "content content" "footer footer";
64 }
65
66 .fullscreen.menu_stack #container {
67 -ms-grid-rows: 66px minmax(24px, max-content) 1fr 45px;
68 grid-template-rows: 66px minmax(24px, max-content) auto 45px;
69 -ms-grid-columns: 90px 1fr;
70 /*grid-template-columns: 90px repeat(auto-fit, minmax(900px, 1fr));*/
71 grid-template-areas: "header header" "nav nav" "content content" "footer footer";
72 }
73
74 .nofooter.fullscreen.menu_stack #container {
75 -ms-grid-rows: 66px minmax(24px, max-content) 1fr 0px;
76 grid-template-rows: 66px minmax(24px, max-content) auto 0px;
77 -ms-grid-columns: 90px 1fr;
78 /*grid-template-columns: 90px repeat(auto-fit, minmax(900px, 1fr));*/
79 grid-template-areas: "header header" "nav nav" "content content" "footer footer";
80 }
81
82 .fullscreen #container {
83 width: 100%;
84 min-width: 100%;
85 min-height: 0px;
86 border-right: 0px none #b7b7b7;
87 border-left: 0px none #b7b7b7;
88 height: calc(100% - 0px);
89 position: relative;
90 display: -ms-grid;
91 display: grid;
92 grid-gap: 0px;
93 grid-template-areas: "header header" "sidebar nav" "sidebar content" "sidebar footer";
94 -ms-grid-columns: 90px 1fr;
95 grid-template-columns: 70px auto;
96 -ms-grid-rows: 66px 24px 1fr 45px;
97 grid-template-rows: 66px 24px auto 45px;
98 }
99
100 .nofooter #container {
101 -ms-grid-rows: 66px 24px 1fr 0px;
102 grid-template-rows: 66px 24px auto 0px;
103 }
104
105 .fulldesk #container {
106 width: 100%;
107 height: 100%;
108 min-width: 700px;
109 min-height: 0px;
110 border-right: 0px none #b7b7b7;
111 border-left: 0px none #b7b7b7;
112 position: unset;
113 position: relative;
114 display: -ms-grid !important;
115 display: grid !important;
116 grid-gap: 0px;
117 grid-template-areas: "content" !important;
118 -ms-grid-columns: 1fr;
119 grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)) !important;
120 -ms-grid-rows: 1fr;
121 grid-template-rows: repeat(auto-fit, minmax(100px, 1fr)) !important;
122 }
123
124 .AgentInviteMasthead {
125 background:url(logo.png) 0px 0px;
126 background-color:#036;
127 background-repeat:no-repeat;height:66px;width:100%;overflow:hidden;
128 }
129
130 #masthead {
131 display: flex;
132 justify-content: space-between;
133 align-items: center;
134 width: auto;
135 margin: 0;
136 padding: 0 1rem;
137 background-color: #036;
138 background-image: url(../logo.png);
139 background-position: 0 0;
140 background-repeat: no-repeat;
141 height: 66px;
142 }
143 .masthead-container {
144 display: flex;
145 justify-content: space-between;
146 align-items: center;
147 padding: 0.5rem 1rem;
148 width: 100%;
149 }
150 .idle-timeout-notify {
151 color: yellow;
152 }
153 .masthead-left {
154 display: flex;
155 align-items: center;
156 gap: 1rem;
157 flex: 1 1 auto;
158 min-width: 0;
159 overflow: hidden;
160 }
161
162 .masthead-right {
163 display: flex;
164 align-items: center;
165 gap: 1.5rem;
166 flex: 0 0 auto;
167 }
168
169 .notification-icon {
170 cursor: pointer;
171 }
172
173 .user-menu-container {
174 display: flex;
175 align-items: center;
176 }
177
178 .fullscreen #masthead {
179 width: 100%;
180 grid-area: header;
181 -ms-grid-column: 1;
182 -ms-grid-column-span: 2;
183 -ms-grid-row: 1;
184 }
185
186 .fulldesk #masthead {
187 display: none;
188 }
189
190 .fulldesk #mastheadx {
191 display: none;
192 }
193
194 .fulldesk #p11deviceNameHeader {
195 display: none;
196 }
197
198 .masthead-left {
199 display: flex;
200 align-items: center;
201 gap: 1rem;
202 flex: 1 1 auto;
203 min-width: 0;
204 overflow: hidden;
205 }
206
207 .masthead-title {
208 display: flex;
209 align-items: center;
210 flex-shrink: 0;
211 }
212
213 .masthead-titles-container {
214 display: flex;
215 align-items: center;
216 gap: 0.5rem;
217 flex: 1 1 auto;
218 min-width: 0;
219 overflow: hidden;
220 }
221
222 #masthead .title {
223 color: #c8c8c8;
224 font-size: 46px;
225 font-family: Arial,Helvetica,sans-serif;
226 font-weight: bold;
227 text-shadow: 1px 1px 2px #000;
228 cursor: pointer;
229 overflow: hidden;
230 text-overflow: ellipsis;
231 white-space: nowrap;
232 flex-shrink: 1;
233 min-width: 0;
234 }
235
236 #masthead .title2 {
237 color: #c8c8c8;
238 font-size: 14px;
239 font-family: Arial,Helvetica,sans-serif;
240 font-weight: bold;
241 text-shadow: 1px 1px 2px #000;
242 cursor: pointer;
243 padding-top: 12px;
244 padding-bottom: 30px;
245 overflow: hidden;
246 text-overflow: ellipsis;
247 white-space: nowrap;
248 flex-shrink: 1;
249 min-width: 0;
250 }
251
252 @media (max-width: 1500px) {
253 #masthead .title {
254 font-size: 40px;
255 }
256 }
257
258 @media (max-width: 1300px) {
259 #masthead .title {
260 font-size: 34px;
261 white-space: normal;
262 line-height: 1.1;
263 }
264
265 #masthead .title2 {
266 font-size: 13px;
267 padding-top: 10px;
268 padding-bottom: 20px;
269 white-space: normal;
270 line-height: 1.2;
271 }
272 }
273
274 @media (max-width: 1100px) {
275 .masthead-left {
276 gap: 0.75rem;
277 }
278
279 .masthead-titles-container {
280 max-width: 100%;
281 }
282
283 #masthead .title {
284 font-size: 30px;
285 }
286 }
287
288 .masthead-right {
289 display: flex;
290 align-items: center;
291 gap: 0.5rem;
292 margin-left: auto;
293 flex-direction: row; /* Ensure horizontal layout */
294 }
295
296 .notification-icon {
297 display: flex;
298 align-items: center;
299 cursor: pointer;
300 padding: 0.5rem;
301 border-radius: 4px;
302 }
303
304 .notification-icon:hover {
305 background-color: rgba(255, 255, 255, 0.1);
306 }
307
308 #notificationCount {
309 display: inline-flex;
310 align-items: center;
311 justify-content: center;
312 cursor: pointer;
313 height: 40px;
314 padding: 6px 8px;
315 border-radius: 4px;
316 position: static;
317 flex: 0 0 auto;
318 min-width: unset;
319 margin: 0;
320 top: auto;
321 right: auto;
322 }
323
324 #notificationCount:hover {
325 background-color: rgba(255, 255, 255, 0.1);
326 }
327
328 #notificationBadge {
329 font-size: 0.65rem !important;
330 box-shadow: -0.1px 1px 2px #000000;
331 -webkit-box-shadow: -0.1px 1px 2px #000000;
332 -moz-box-shadow: -0.1px 1px 2px #000000;
333 }
334
335 .user-menu-container {
336 display: flex;
337 align-items: center;
338 flex: 0 0 auto; /* Prevent flex item from growing or shrinking */
339 }
340
341
342
343 #page_leftbar {
344 -ms-grid-column: 1;
345 -ms-grid-row: 2;
346 -ms-grid-row-span: 3;
347 height: 100%;
348 /* height: calc(100vh - 66px); */
349 width: 70px;
350 z-index: 1000;
351 background: #113962;
352 background: linear-gradient(to bottom, #104893 0%,#113962 100%);
353 color: white;
354 overflow-y: hidden;
355 overflow-x: hidden;
356 display: none;
357 }
358
359 .fullscreen #page_leftbar {
360 grid-area: sidebar;
361 display: block;
362 }
363
364 .menu_stack #page_leftbar {
365 display: none;
366 }
367
368 .arg_hide #page_leftbar {
369 display: none;
370 }
371
372 .fulldesk #page_leftbar {
373 display: none;
374 }
375
376
377 #topbar {
378 position: relative;
379 grid-area: nav;
380 -ms-grid-column: 2;
381 -ms-grid-row: 2;
382 }
383
384 .fulldesk #topbar {
385 display: none;
386 }
387
388 .menu_stack #topbar, .login #topbar, .arg_hide #topbar {
389 -ms-grid-column: 1;
390 -ms-grid-column-span: 2;
391 -ms-grid-row: 2;
392 }
393
394 .logoncontrolspan, .logoncontrolspan2 {
395 color: white;
396 }
397
398 .topbar_td {
399 width: 100px;
400 height: 24px;
401 cursor: pointer;
402 white-space: nowrap;
403 }
404
405 .nonenglish .topbar_td {
406 height: 24px;
407 cursor: pointer;
408 padding-left:16px;
409 padding-right:16px;
410 }
411
412 .topbar_td_end {
413 text-align: right;
414 height: 24px;
415 }
416
417 #uiMenuButton {
418 cursor: pointer;
419 /* color: white; */
420 position: absolute;
421 padding: 3px;
422 right: 3px;
423 }
424
425 .textnewui {
426 color: white;
427 font-weight: bold;
428 padding-top: 5px;
429 cursor: pointer;
430 position: absolute;
431 right: 0;
432 margin-right: 10px;
433 }
434
435 .LogoffLinkColor {
436 color:white;
437 }
438
439 #logoutControlSpan2 {
440 cursor: pointer;
441 color: white;
442 position: absolute;
443 top: 5px;
444 right: 24px;
445 }
446
447 #uiMenu {
448 position: absolute;
449 top: 17px;
450 right: 0;
451 background-color: #eee;
452 z-index: 10;
453 border-radius: 5px;
454 box-shadow: 1px 0px 10px 5px #333;
455 padding: 5px;
456 }
457
458 /* #UserDummyMenuSpan, */
459 #MainSubMenuSpan, #MeshSubMenuSpan, #EventsSubMenuSpan, #UserSubMenuSpan, #UsersSubMenuSpan, #ServerSubMenuSpan, #MainMenuSpan, #MainSubMenu, #MeshSubMenu, #UserSubMenu, #ServerSubMenu, #UserDummyMenu, #PluginSubMenu {
460 width: 100%;
461 height: 24px;
462 color: var(--bs-secondary-color);
463 background: var(--bs-secondary-bg);
464 }
465
466 .menu_stack #UserDummyMenu {
467 display: none;
468 }
469
470 .menu_stack #PluginSubMenu {
471 display: none;
472 }
473
474 #MainMenuSpan {
475 display: table;
476 }
477
478 .fullscreen #MainMenuSpan {
479 display: none;
480 }
481
482 .fulldesk #MainMenuSpan {
483 display: none;
484 }
485
486 .menu_stack #MainMenuSpan {
487 display: block;
488 }
489
490 #column_l {
491 position: relative;
492 /* float: left; */
493 width: 100%;
494 box-sizing: border-box;
495 margin: 0;
496 padding: 0 15px;
497 background-color: #fff;
498 /* max-height: calc(100vh - 151px); */
499 min-width: unset;
500 overflow: hidden;
501 }
502
503 .boxsize {
504 -ms-box-sizing:border-box;
505 -moz-box-sizing:border-box;
506 box-sizing:border-box;
507 -webkit-box-sizing:border-box;
508 }
509
510 .night #column_l {
511 background-color: #000;
512 }
513
514 .menu_stack.fullscreen.fulldesk #column_l {
515 -ms-grid-column: 1;
516 -ms-grid-row: 1;
517 -ms-grid-column-span: 2;
518 -ms-grid-row-span: 4;
519 }
520
521 .fullscreen #column_l {
522 -ms-grid-column: 2;
523 -ms-grid-row: 3;
524 grid-area: content;
525 width: unset;
526 /* height: calc(100vh - 111px);
527 width: calc(100% - 30px); */
528 overflow: hidden;
529 }
530
531 .menu_stack.fullscreen #column_l, .login #column_l, .arg_hide #column_l {
532 -ms-grid-column: 1;
533 -ms-grid-column-span: 2;
534 -ms-grid-row: 3;
535 }
536
537 .fulldesk #column_l {
538 height: 100%;
539 width: 100%;
540 height: unset;
541 margin-left: unset;
542 overflow-y: hidden;
543 padding: 0;
544 max-height: none;
545 -ms-grid-column: 1;
546 -ms-grid-row: 1;
547 background-color: rgb(0, 51, 102);
548 }
549
550 .fulldesk #column_l_bottomgap {
551 display: none;
552 }
553
554 .room4submenu {
555 /*min-height: calc(100vh - 159px);*/
556 min-height: calc(100vh - 184px);
557 }
558
559 #centralTable {
560 width: 100%;
561 }
562
563 #welcomeimage {
564 text-align: center;
565 width:50%;
566 }
567
568 @media (max-width: 800px) {
569 .fullscreen #welcomeimage {
570 display: none;
571 }
572 #devListToolbar, #kvmListToolbar {
573 flex-wrap: wrap;
574 gap: 8px;
575 width: 100%;
576 min-width: 0;
577 }
578 #devListToolbarSpan {
579 flex-wrap: wrap;
580 gap: 8px;
581 }
582 #devListToolbarSpan > .d-flex.ms-auto {
583 flex-basis: 100%;
584 flex-wrap: wrap;
585 gap: 8px;
586 justify-content: flex-start;
587 }
588 }
589
590 #welcomeimage img {
591 height: 310px;
592 width: 359px;
593 }
594
595 #logincell {
596 text-align: center;
597 width:50%;
598 }
599
600 .night #logincell a {
601 color: blue;
602 }
603
604 #loginpanel, #createpanel, #resetpanel, #tokenpanel, #resettokenpanel, #resetpasswordpanel, #resetpasswordpanel, #checkemailpanel, #waitpushpanel {
605 display: inline-block;
606 margin: 0;
607 background-color: #979797;
608 border-radius: 16px;
609 width: 300px;
610 padding: 16px;
611 text-align: center;
612 color: black;
613 }
614
615 #passwordPolicyCallout, #rpasswordPolicyCallout {
616 left: -10px;
617 width: 100px;
618 position: absolute;
619 background-color: #FFC;
620 border-radius: 5px;
621 padding: 5px;
622 box-shadow: 0px 0px 15px #666;
623 font-size: 10px;
624 }
625
626 #passWarning {
627 padding-top: 6px;
628 }
629
630 #footer {
631 position: fixed;
632 bottom: 0;
633 left: 0;
634 width: 100%;
635 background-color: #113962;
636 padding: 5px 0;
637 text-align: center;
638 z-index: 1000;
639 }
640
641 .fulldesk #footer {
642 display: none;
643 }
644
645 .menu_stack.fullscreen #footer, .login #footer, .arg_hide #footer {
646 -ms-grid-column: 1;
647 -ms-grid-column-span: 2;
648 -ms-grid-row: 4;
649 }
650
651 /* Support for footer made with table */
652 #footer table {
653 width: 100%;
654 border-spacing: 10px;
655 border-collapse: separate;
656 }
657
658 #footer td:first-child {
659 text-align: left;
660 color: white;
661 }
662
663 #footer td {
664 padding: 0px;
665 text-align: right;
666 color: white;
667 }
668
669 .footer1 {
670 text-align: left;
671 float: left;
672 padding: 10px;
673 color: white;
674 }
675
676 .footer2 {
677 padding: 10px;
678 text-align: right;
679 color: white;
680 }
681
682 #masthead img {
683 float: left;
684 }
685
686 #masthead p {
687 font-size: 11px;
688 color: #fff;
689 margin: 10px 10px 0;
690 }
691
692 #footer a {
693 color: #fff;
694 text-decoration: underline;
695 }
696
697 #footer a:hover {
698 color: #fff;
699 text-decoration: none;
700 }
701
702 #verifyEmailId2 {
703 color: yellow;
704 margin-left: 3px;
705 cursor: pointer;
706 }
707
708 #dialog {
709 z-index: 1000;
710 background-color: #EEE;
711 box-shadow: 0px 0px 15px #666;
712 font-family: Arial,Helvetica,sans-serif;
713 border-radius: 5px;
714 position: fixed;
715 top: 180px;
716 left: calc((100% / 2) - 200px);
717 width: 400px;
718 color: black;
719 }
720
721 #dialogHeader {
722 width: 100%;
723 background-color: #003366;
724 color: #FFF;
725 border-radius: 5px 5px 0 0;
726 margin-bottom: 6px;
727 cursor: move;
728 }
729
730 #id_dialogclose {
731 float: right;
732 padding: 3px;
733 margin-right: 3px;
734 cursor: pointer;
735 background-color: white;
736 }
737
738 #id_dialogtitle {
739 padding: 5px;
740 }
741
742 #dialogBody {
743 margin-right: 16px;
744 margin-left: 8px;
745 }
746
747 .dialogText {
748 width: 100%;
749 max-height: 260px;
750 overflow-x: hidden;
751 overflow-y: auto;
752 line-height: 160%;
753 }
754
755 .dialogTextLog {
756 font-size: 10px;
757 }
758
759 #dialog1 {
760 margin: auto;
761 text-align: center;
762 margin: 3px;
763 }
764
765 #id_dialogMessage {
766 padding: 10px;
767 }
768
769 #dialog2, #dialog3, #dialog7 {
770 margin: 3px;
771 }
772
773 #d3uploadMode, #d3localFile {
774 float: right;
775 width: 260px;
776 }
777
778 #d3serveraction, #d2serveraction {
779 width: 100%;
780 background-color: #d3d9d6;
781 text-align: left;
782 padding: 3px;
783 }
784
785 #d3serverfiles, #d2serverfiles {
786 width: 100%;
787 height: 150px;
788 background-color: white;
789 padding: 2px;
790 border: 1px solid gray;
791 overflow-y: scroll;
792 }
793
794
795 #d3upload, #d3localmode {
796 margin: 3px 0 3px 0;
797 display: flex;
798 justify-content: space-between;
799 }
800
801 #dialog7 h4 {
802 width: 100%;
803 border-bottom: 1px solid gray;
804 }
805
806 #d7otherset, #d7otherset2, #d7rdpflags {
807 border: 1px solid #666;
808 max-height: 180px;
809 overflow-y: scroll;
810 }
811
812 #idx_dlgButtonBar {
813 padding: 10px;
814 margin-bottom: 5px;
815 margin-right: 10px;
816 overflow: auto;
817 }
818
819 #idx_dlgCancelButton, #idx_dlgCancelButton2 {
820 float: right;
821 min-width: 80px;
822 margin-left: 5px;
823 }
824
825 #idx_dlgOkButton, #idx_dlgOkButton2 {
826 float: right;
827 min-width: 80px;
828 margin-left: 5px;
829 }
830
831 #idx_dlgDeleteButton {
832 float: left;
833 min-width: 80px;
834 margin-left: 5px;
835 }
836
837 #ua_fileaccessquota {
838 width: 80px;
839 text-align: right;
840 }
841
842 #broadcastMessage {
843 width: 370px;
844 height: 100px;
845 resize: none;
846 }
847
848 #idx_deskFullBtn2, #idx_termFullBtn2 {
849 float: left;
850 font-size: 16px;
851 cursor: pointer;
852 display: none;
853 margin-right: 5px;
854 }
855
856 .fulldesk #idx_deskFullBtn2, .fulldesk #idx_termFullBtn2 {
857 display: block;
858 }
859
860 .fulldesk #deskFullBtn {
861 display: none;
862 }
863
864 #p0message {
865 margin: 50px;
866 text-align: center;
867 }
868
869 .DeviceCheckbox {
870 margin-top: 2px !important;
871 }
872
873 .deviceBarCheckbox {
874 width:22px;
875 float:left;
876 background-color:white;
877 }
878
879 .night .deviceBarCheckbox {
880 background-color:black;
881 }
882
883 #devs {
884 color:black;
885 }
886
887 .deviceBarIcon {
888 float:left;
889 height:18px;
890 width:18px;
891 background-color:white
892 }
893
894 .night .deviceBarIcon {
895 background-color:black;
896 }
897
898 #devListToolbarViewIcons {
899 float: right;
900 }
901
902 #devListToolbarViewIcons3 {
903 float: right;
904 }
905
906 #devListToolbarSpan {
907 width: 100%;
908 background: var(--bs-secondary-bg);
909 color: var(--bs-secondary-color);
910 vertical-align: middle;
911 border-spacing: 0;
912 }
913
914 #SearchInput, #KvmSearchInput {
915 width: 120px;
916 }
917
918 #SearchInput.search, #KvmSearchInput.search {
919 background-color: #FDFFBE;
920 }
921
922 .night #SearchInput.search, .night #KvmSearchInput.search {
923 background-color: grey;
924 }
925
926 #devListToolbarView, #devListToolbarSort, #devListToolbarSize, #devListToolbarSettings {
927 float: right;
928 }
929
930 #refreshmap {
931 margin-left: 5px;
932 }
933
934 /* Example if <table> is relplaced with <div><p> then image can be defined in css
935 #NoMeshesPanel {
936 background: url(../images/info.png) no-repeat 23px 20px;
937 height: 48px;
938 width: 47px;
939 width: 100%;
940 border: none;
941 margin: auto;
942 padding: 20px;
943 }
944 #NoMeshesPanel p {
945 display: inline-block;
946 vertical-align: middle;
947 margin-left: 60px;
948 } */
949
950 #NoMeshesPanel a {
951 cursor: pointer;
952 }
953
954 #NoMeshesPanel table {
955 width: 100%;
956 padding: 20px;
957 }
958
959 NoMeshesPanel img {
960 height: 48px;
961 width: 47px;
962 }
963
964 .deviceNotifyDot {
965 position:absolute;
966 right:10px;
967 top:0px;
968 height:16px;
969 }
970
971 .deviceNotifyDotSub {
972 text-align:center;
973 color:#FFF;
974 height:16px;
975 width:16px;
976 background-color:#00F;
977 padding:2px;
978 border-radius:10px;
979 box-shadow: 2px 2px 10px black;
980 cursor:pointer;
981 margin-left:3px;
982 font-size: 14px;
983 float:left;
984 }
985
986 .deviceNotifyDotSub:hover {
987 background-color:#44F;
988 }
989
990 .deviceNotifySmallDot {
991 position:absolute;
992 right:10px;
993 top:4px;
994 height:10px;
995 }
996
997 .deviceNotifySmallDotSub {
998 text-align:center;
999 color:#FFF;
1000 height:14px;
1001 width:14px;
1002 padding:2px;
1003 background-color:#00F;
1004 border-radius:10px;
1005 box-shadow: 2px 2px 10px black;
1006 cursor:pointer;
1007 margin-left:2px;
1008 font-size: 6px;
1009 float:left;
1010 }
1011
1012 .deviceNotifySmallDotSub:hover {
1013 background-color:#44F;
1014 }
1015
1016 .NotifyIcon1 { width:48px; height:48px; background: url(../images/notify48.png) 0px 0px; }
1017 .NotifyIcon2 { width:48px; height:48px; background: url(../images/notify48.png) -48px 0px; }
1018 .NotifyIcon3 { width:48px; height:48px; background: url(../images/notify48.png) -96px 0px; }
1019 .NotifyIcon4 { width:48px; height:48px; background: url(../images/notify48.png) -144px 0px; }
1020 .NotifyIcon5 { width:48px; height:48px; background: url(../images/notify48.png) -192px 0px; }
1021 .NotifyIcon6 { width:48px; height:48px; background: url(../images/notify48.png) -240px 0px; }
1022 .NotifyIcon7 { width:48px; height:48px; background: url(../images/notify48.png) -288px 0px; }
1023 .NotifyIcon8 { width:48px; height:48px; background: url(../images/notify48.png) -336px 0px; }
1024 .NotifyIcon9 { width:48px; height:48px; background: url(../images/notify48.png) -384px 0px; }
1025 .NotifyIconSmall1 { width:24px; height:24px; background: url(../images/notify24.png) 0px 0px; }
1026 .NotifyIconSmall2 { width:24px; height:24px; background: url(../images/notify24.png) -24px 0px; }
1027 .NotifyIconSmall3 { width:24px; height:24px; background: url(../images/notify24.png) -48px 0px; }
1028 .NotifyIconSmall4 { width:24px; height:24px; background: url(../images/notify24.png) -72px 0px; }
1029 .NotifyIconSmall5 { width:24px; height:24px; background: url(../images/notify24.png) -96px 0px; }
1030 .NotifyIconSmall6 { width:24px; height:24px; background: url(../images/notify24.png) -120px 0px; }
1031 .NotifyIconSmall7 { width:24px; height:24px; background: url(../images/notify24.png) -144px 0px; }
1032 .NotifyIconSmall8 { width:24px; height:24px; background: url(../images/notify24.png) -168px 0px; }
1033 .NotifyIconSmall9 { width:24px; height:24px; background: url(../images/notify24.png) -192px 0px; }
1034 .NotifyIconTiny1 { width:16px; height:16px; background: url(../images/notify16.png) 0px 0px; }
1035 .NotifyIconTiny2 { width:16px; height:16px; background: url(../images/notify16.png) -16px 0px; }
1036 .NotifyIconTiny3 { width:16px; height:16px; background: url(../images/notify16.png) -32px 0px; }
1037 .NotifyIconTiny4 { width:16px; height:16px; background: url(../images/notify16.png) -48px 0px; }
1038 .NotifyIconTiny5 { width:16px; height:16px; background: url(../images/notify16.png) -64px 0px; }
1039 .NotifyIconTiny6 { width:16px; height:16px; background: url(../images/notify16.png) -80px 0px; }
1040 .NotifyIconTiny7 { width:16px; height:16px; background: url(../images/notify16.png) -96px 0px; }
1041 .NotifyIconTiny8 { width:16px; height:16px; background: url(../images/notify16.png) -112px 0px; }
1042 .NotifyIconTiny9 { width:16px; height:16px; background: url(../images/notify16.png) -128px 0px; }
1043
1044 .deviceBatteryLarge {
1045 position:absolute;
1046 left:10px;
1047 top:140px;
1048 width:28px;
1049 height:48px;
1050 border:none;
1051 box-shadow:none;
1052 }
1053
1054 .deviceBatteryLarge1 { background: url(../images/batteries48.png) 0px 0px; }
1055 .deviceBatteryLarge2 { background: url(../images/batteries48.png) -28px 0px; }
1056 .deviceBatteryLarge3 { background: url(../images/batteries48.png) -56px 0px; }
1057 .deviceBatteryLarge4 { background: url(../images/batteries48.png) -84px 0px; }
1058 .deviceBatteryLarge5 { background: url(../images/batteries48.png) -112px 0px; }
1059 .deviceBatteryLarge6 { background: url(../images/batteries48.png) -140px 0px; }
1060 .deviceBatteryLarge7 { background: url(../images/batteries48.png) -168px 0px; }
1061 .deviceBatteryLarge8 { background: url(../images/batteries48.png) -196px 0px; }
1062 .deviceBatteryLarge9 { background: url(../images/batteries48.png) -224px 0px; }
1063 .deviceBatteryLarge10 { background: url(../images/batteries48.png) -252px 0px; }
1064 .deviceBatteryLarge11 { background: url(../images/batteries48.png) -280px 0px; }
1065
1066 .deviceBatterySmall {
1067 position:absolute;
1068 left:26px;
1069 top:32px;
1070 width:14px;
1071 height:24px;
1072 border:none;
1073 box-shadow:none;
1074 }
1075
1076 .deviceBatterySmall1 { background: url(../images/batteries24.png) 0px 0px; background-image: image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
1077 .deviceBatterySmall2 { background: url(../images/batteries24.png) -14px 0px; background-image: image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
1078 .deviceBatterySmall3 { background: url(../images/batteries24.png) -28px 0px; background-image: image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
1079 .deviceBatterySmall4 { background: url(../images/batteries24.png) -42px 0px; background-image: image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
1080 .deviceBatterySmall5 { background: url(../images/batteries24.png) -56px 0px; background-image: image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
1081 .deviceBatterySmall6 { background: url(../images/batteries24.png) -70px 0px; background-image: image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
1082 .deviceBatterySmall7 { background: url(../images/batteries24.png) -84px 0px; background-image: image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
1083 .deviceBatterySmall8 { background: url(../images/batteries24.png) -98px 0px; background-image: image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
1084 .deviceBatterySmall9 { background: url(../images/batteries24.png) -112px 0px; background-image: image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
1085 .deviceBatterySmall10 { background: url(../images/batteries24.png) -126px 0px; background-image: image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
1086 .deviceBatterySmall11 { background: url(../images/batteries24.png) -140px 0px; background-image: image-set(url(../images/batteries24.png) 1x, url(../images/batteries48.png) 2x); }
1087
1088 .deviceNotifyLargeDot {
1089 position:absolute;
1090 right:10px;
1091 top:170px;
1092 height:40px;
1093 }
1094
1095 .deviceNotifyLargeDotSub {
1096 text-align:center;
1097 width:40px;
1098 height:40px;
1099 color:#FFF;
1100 padding:2px;
1101 background-color:#00F;
1102 border-radius:20px;
1103 box-shadow: 2px 2px 10px black;
1104 cursor:pointer;
1105 margin-left:4px;
1106 }
1107
1108 .deviceNotifyLargeDotSub:hover {
1109 background-color:#44F;
1110 }
1111
1112 .userAuthStrategyLogo {
1113 text-align:center;
1114 position:absolute;
1115 right:20px;
1116 top:125px;
1117 width:64px;
1118 height:64px;
1119 color:#FFF;
1120 padding:2px;
1121 background-color:#FFF;
1122 border-radius:20px;
1123 box-shadow: 2px 2px 10px black;
1124 z-index:1;
1125 }
1126
1127 #xdevices {
1128 max-height: calc(100vh - 242px);
1129 overflow-y: auto;
1130 overflow-x: hidden;
1131 -webkit-overflow-scrolling: touch;
1132 }
1133
1134 #xdevices th {
1135 color: gray;
1136 text-align: center;
1137 position: sticky;
1138 top: 0;
1139 z-index: 1;
1140 background-color: var(--bs-body-bg);
1141 }
1142
1143 #xdevicesmap {
1144 height: calc(100vh - 239px);
1145 width: 100%;
1146 overflow: hidden;
1147 position: relative;
1148 }
1149
1150 #xmapSearchResultsDlg {
1151 position: absolute;
1152 max-height: 280px;
1153 left: 5px;
1154 top: 5px;
1155 max-width: 250px;
1156 z-index: 1000;
1157 background-color: #EEE;
1158 box-shadow: 0px 0px 15px #666;
1159 }
1160
1161 #xmapSearchResultsBck {
1162 width: 100%;
1163 background-color: #003366;
1164 color: #FFF;
1165 border-radius: 5px 5px 0 0;
1166 }
1167
1168 #xmapSearchClose {
1169 float: right;
1170 padding: 5px;
1171 cursor: pointer;
1172 }
1173
1174 .xmapItem {
1175 overflow-y: auto;
1176 width: 100%;
1177 max-height: 240px;
1178 }
1179
1180 .xmapItemSel1 {
1181 cursor: pointer;
1182 padding: 5px;
1183 background-color: #F5F5F5;
1184 }
1185
1186 .xmapItemSel1 {
1187 cursor: pointer;
1188 padding: 5px;
1189 background-color: #EBEBEB;
1190 }
1191
1192 #xmap-info-window {
1193 text-shadow: 0px 0px 15px #FFF;
1194 }
1195
1196 #p2 a, #p6 a, #p10 a {
1197 cursor: pointer;
1198 }
1199
1200 #p2AccountImageFrame {
1201 float: right;
1202 text-align: center;
1203 margin-bottom: 10px;
1204 margin-right: 10px;
1205 margin-top: 7px;
1206 }
1207
1208 #p2AccountImage, #p2AccountImage2, #MainUserImageEx {
1209 width: 200px;
1210 height: 200px;
1211 border-radius: 8px;
1212 cursor: pointer;
1213 margin: 8px;
1214 /* box-shadow: 0px 0px 7px #000; */
1215 background: var(--sub-menu-bg);
1216 border: 1px solid #cfcdcd;
1217 }
1218
1219 .p2AccountActions {
1220 width: 15px;
1221 display: inline-block;
1222 }
1223
1224 .p2AccountActions span {
1225 color: green;
1226 font-size: 10px;
1227 }
1228
1229 #p2AccountActions .mL {
1230 margin-left: 40px;
1231 }
1232
1233 #p2ServerActions .mL {
1234 margin-left: 40px;
1235 }
1236
1237 .newMeshBtn {
1238 background: url(../images/icon-addnew.png) no-repeat 0px 0px;
1239 height: 12px;
1240 width: 12px;
1241 cursor: pointer;
1242 border: none;
1243 padding-left: 15px;
1244 }
1245
1246 #p2noMeshFound, #serverStats, #serverWarnings, #serverCertWarnings {
1247 margin-left: 40px;
1248 }
1249
1250 #p2ServerActionsBackup, #p2ServerActionsRestore, #p2ServerActionsVersion, #p2ServerActionsErrors {
1251 margin-left: 0px;
1252 }
1253
1254 .pTable {
1255 width: 100%;
1256 }
1257
1258 #p50groups {
1259 max-height: calc(100vh - 244px);
1260 overflow-y: auto;
1261 }
1262
1263 #p3users {
1264 max-height: calc(100vh - 244px);
1265 overflow-y: auto;
1266 }
1267
1268 .p3usersTable {
1269 width: 100%;
1270 border-spacing: 0;
1271 padding: 0;
1272 }
1273
1274 .p3usersTable th {
1275 color: var(--sub-menu-bg);
1276 }
1277
1278 #p3events, #p16events, #p31events, #p41events {
1279 height: calc(100vh - 245px);
1280 overflow-y: scroll;
1281 }
1282
1283 .p3eventsTable {
1284 width: 100%;
1285 border-spacing: 0;
1286 padding: 0;
1287 }
1288
1289 /* #p4name, #p4email, #p4pass1, #p4pass2 {
1290 width: 230px;
1291 } */
1292
1293 #p5toolbar {
1294 width: 100%;
1295 }
1296
1297 #p5filehead {
1298 width: 100%;
1299 background: var(--bs-secondary-bg);
1300 padding: 4px 0px;
1301 }
1302
1303 #p5filesubhead {
1304 background: var(--bs-secondary-bg);
1305 height: 28px;
1306 }
1307
1308 #p5rightOfButtons {
1309 float: right;
1310 margin-top: 3px;
1311 }
1312
1313 #p5filetable {
1314 width: 100%;
1315 height: calc(100vh - 295px);
1316 overflow: auto;
1317 -webkit-user-select: none;
1318 user-select: none;
1319 position: relative;
1320 }
1321
1322 #p5PublicShare {
1323 display: none;
1324 width: 100%;
1325 overflow: auto;
1326 -webkit-user-select: none;
1327 user-select: none;
1328 background-color: lightsteelblue;
1329 }
1330
1331 #p5PublicShare div {
1332 padding: 4px;
1333 }
1334
1335 #bigok, #p11bigok, #p13bigok {
1336 width: 256px;
1337 overflow: hidden;
1338 position: absolute;
1339 left: 337px;
1340 top: 20px;
1341 text-align: center;
1342 font-size: 1600%;
1343 color: #AAAAAA;
1344 z-index: 99999;
1345 }
1346
1347 #bigfail, #p11bigfail, #p13bigfail {
1348 width: 256px;
1349 overflow: hidden;
1350 position: absolute;
1351 left: 337px;
1352 top: 20px;
1353 text-align: center;
1354 font-size: 1600%;
1355 color: #AAAAAA;
1356 z-index: 99999;
1357 }
1358
1359 .chartViewCanvas {
1360 width: 80px;
1361 display: inline-block;
1362 }
1363
1364 .chartViewText {
1365 width: 200px;
1366 display: inline-block;
1367 }
1368
1369 #serverCpuChart, #serverMemoryChart {
1370 width: 60px;
1371 height: 60px;
1372 }
1373
1374 #serverMainStats {
1375 height: calc(100vh - 251px);
1376 max-height: calc(100vh - 251px);
1377 width: 100%;
1378 }
1379
1380 #p10BackButton, #p11BackButton {
1381 float: left;
1382 }
1383
1384 #p10html2 table {
1385 color: black;
1386 background: var(--sub-menu-bg);
1387 border-color: #AAA;
1388 border-width: 1px;
1389 border-style: solid;
1390 border-collapse: collapse;
1391 width: 100%;
1392 }
1393
1394 #p10html2 thead {
1395 background-color: #AAA;
1396 font-weight: bold;
1397 }
1398
1399 #p10html2 thead tr {
1400 background-color: #AAA;
1401 font-weight: bold;
1402 }
1403
1404 #p10html2 thead img {
1405 float: right;
1406 cursor: pointer;
1407 padding: 3px;
1408 }
1409
1410 #p10html2 .altBack {
1411 background-color: #DDD;
1412 }
1413
1414 .mobileFileActionDropdown,
1415 .mobileActionDropdown {
1416 display: none !important;
1417 }
1418
1419 .pwState {
1420 display: table-cell;
1421 height: 16px;
1422 }
1423
1424 .pwsYellow {
1425 background-color: yellow;
1426 }
1427
1428 .pwsTransparent {
1429 background-color: #00000000;
1430 }
1431
1432 .pwsBlack {
1433 background-color: var(--bs-body-color);
1434 }
1435
1436 .pwsBlue {
1437 background-color: blue;
1438 }
1439
1440 .pwsBlue2 {
1441 background-color: blue;
1442 }
1443
1444 .pwsLightblue {
1445 background-color: lightblue;
1446 }
1447
1448 .pwsBlueviolet {
1449 background-color: blueviolet;
1450 }
1451
1452 .pwsDarkgreen {
1453 background-color: darkgreen;
1454 }
1455
1456 .pwsLightseagreen {
1457 background-color: lightseagreen;
1458 }
1459
1460 .pwsLightseagreen2 {
1461 background-color: lightseagreen;
1462 }
1463
1464 .p10html3right {
1465 float: right;
1466 font-size: small;
1467 }
1468
1469 .p10html3left {
1470 font-size: small;
1471 }
1472
1473 .fulldesk #p11 {
1474 height: 100%;
1475 }
1476
1477 #MainComputerImage {
1478 border-width: 0px;
1479 height: 200px;
1480 width: 200px;
1481 }
1482
1483 #MainComputerState {
1484 font-size: 12px;
1485 font-weight: bold;
1486 width: 100%;
1487 text-align: center;
1488 }
1489
1490 #d2netinfo .dialogText {
1491 padding-right: 10px;
1492 }
1493
1494 #p12warning, #p12warning2, #p11warning, #p11warning2 {
1495 max-width: 100%;
1496 display: none;
1497 cursor: pointer;
1498 margin-bottom: 5px;
1499 }
1500
1501 #MainMeshImage {
1502 border-width: 0px;
1503 height: 200px;
1504 width: 200px;
1505 float: right;
1506 }
1507
1508 #DeskTools {
1509 position: absolute;
1510 width: 400px;
1511 height: 100%;
1512 background: var(--sub-menu-bg);
1513 top: 0;
1514 right: 0;
1515 border-left: 2px solid lightgray;
1516 }
1517
1518 #DeskToolsRefreshButton {
1519 float: right;
1520 padding: 3px;
1521 cursor: pointer;
1522 }
1523
1524 a {
1525 color: #036;
1526 text-decoration: underline;
1527 cursor: pointer;
1528 }
1529
1530 .night a {
1531 color: #69B;
1532 }
1533
1534 .i1 {
1535 background: url(../images/icons50.png) 0px 0px;
1536 background-image: image-set(url(../images/icons50.png) 1x, url(../images/icons100.png) 2x);
1537 height: 50px;
1538 width: 50px;
1539 cursor: pointer;
1540 border: none;
1541 }
1542
1543 .i2 {
1544 background: url(../images/icons50.png) -50px 0px;
1545 background-image: image-set(url(../images/icons50.png) 1x, url(../images/icons100.png) 2x);
1546 height: 50px;
1547 width: 50px;
1548 cursor: pointer;
1549 border: none;
1550 }
1551
1552 .i3 {
1553 background: url(../images/icons50.png) -100px 0px;
1554 background-image: image-set(url(../images/icons50.png) 1x, url(../images/icons100.png) 2x);
1555 height: 50px;
1556 width: 50px;
1557 cursor: pointer;
1558 border: none;
1559 }
1560
1561 .i4 {
1562 background: url(../images/icons50.png) -150px 0px;
1563 background-image: image-set(url(../images/icons50.png) 1x, url(../images/icons100.png) 2x);
1564 height: 50px;
1565 width: 50px;
1566 cursor: pointer;
1567 border: none;
1568 }
1569
1570 .i5 {
1571 background: url(../images/icons50.png) -200px 0px;
1572 background-image: image-set(url(../images/icons50.png) 1x, url(../images/icons100.png) 2x);
1573 height: 50px;
1574 width: 50px;
1575 cursor: pointer;
1576 border: none;
1577 }
1578
1579 .i6 {
1580 background: url(../images/icons50.png) -250px 0px;
1581 background-image: image-set(url(../images/icons50.png) 1x, url(../images/icons100.png) 2x);
1582 height: 50px;
1583 width: 50px;
1584 cursor: pointer;
1585 border: none;
1586 }
1587
1588 .i7 {
1589 background: url(../images/icons50.png) -300px 0px;
1590 background-image: image-set(url(../images/icons50.png) 1x, url(../images/icons100.png) 2x);
1591 height: 50px;
1592 width: 50px;
1593 cursor: pointer;
1594 border: none;
1595 }
1596
1597 .i8 {
1598 background: url(../images/icons50.png) -350px 0px;
1599 background-image: image-set(url(../images/icons50.png) 1x, url(../images/icons100.png) 2x);
1600 height: 50px;
1601 width: 50px;
1602 cursor: pointer;
1603 border: none;
1604 }
1605
1606 .j1 {
1607 background: url(../images/icons16.png) 0px 0px;
1608 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1609 height: 16px;
1610 width: 16px;
1611 cursor: pointer;
1612 border: none;
1613 }
1614
1615 .j2 {
1616 background: url(../images/icons16.png) -16px 0px;
1617 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1618 height: 16px;
1619 width: 16px;
1620 cursor: pointer;
1621 border: none;
1622 }
1623
1624 .j3 {
1625 background: url(../images/icons16.png) -32px 0px;
1626 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1627 height: 16px;
1628 width: 16px;
1629 cursor: pointer;
1630 border: none;
1631 }
1632
1633 .j4 {
1634 background: url(../images/icons16.png) -48px 0px;
1635 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1636 height: 16px;
1637 width: 16px;
1638 cursor: pointer;
1639 border: none;
1640 }
1641
1642 .j5 {
1643 background: url(../images/icons16.png) -64px 0px;
1644 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1645 height: 16px;
1646 width: 16px;
1647 cursor: pointer;
1648 border: none;
1649 }
1650
1651 .j6 {
1652 background: url(../images/icons16.png) -80px 0px;
1653 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1654 height: 16px;
1655 width: 16px;
1656 cursor: pointer;
1657 border: none;
1658 }
1659
1660 .j7 {
1661 background: url(../images/icons16.png) -96px 0px;
1662 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1663 height: 16px;
1664 width: 16px;
1665 cursor: pointer;
1666 border: none;
1667 }
1668
1669 .j8 {
1670 background: url(../images/icons16.png) -112px 0px;
1671 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1672 height: 16px;
1673 width: 16px;
1674 cursor: pointer;
1675 border: none;
1676 }
1677
1678 .relayIcon16 {
1679 background: url(../images/icon-relay.png);
1680 height: 16px;
1681 width: 16px;
1682 cursor: pointer;
1683 border: none;
1684 }
1685
1686 .lbbutton {
1687 width: 74px;
1688 height: 74px;
1689 border-radius: 5px;
1690 background-color: white;
1691 margin-left: 8px;
1692 margin-top: 8px;
1693 position: relative;
1694 cursor: pointer;
1695 opacity: 0.5;
1696 }
1697
1698 .night .lbbutton {
1699 background-color: black;
1700 }
1701
1702 .lbbutton:hover {
1703 opacity: 1;
1704 }
1705
1706 nav .lbbuttonsel {
1707 width: 100%;
1708 border-radius: 5px 0px 0px 5px;
1709 opacity: 0.9;
1710 background-color: #ffffff;
1711 color: #113962 !important;
1712 }
1713
1714 nav .lbbuttonsel2 {
1715 width: 100%;
1716 border-radius: 5px 0px 0px 5px;
1717 opacity: 1;
1718 background-color: #ffffff;
1719 color: #113962 !important;
1720 }
1721
1722 /*groups all buttons repeated code into one block*/
1723 .lbtg {
1724 height: 62px;
1725 width: 62px;
1726 cursor: pointer;
1727 border: none;
1728 position: absolute;
1729 top: 6px;
1730 left: 6px;
1731 }
1732
1733 .lb1 {
1734 background: url(../images/leftbar-64.png) -1px -2px;
1735 background-image: image-set(url(../images/leftbar-64.png) 1x, url(../images/leftbar-128.png) 2x);
1736 }
1737
1738 .lb2 {
1739 background: url(../images/leftbar-64.png) -66px -2px;
1740 background-image: image-set(url(../images/leftbar-64.png) 1x, url(../images/leftbar-128.png) 2x);
1741 }
1742
1743 .lb3 {
1744 background: url(../images/leftbar-64.png) -130px -2px;
1745 background-image: image-set(url(../images/leftbar-64.png) 1x, url(../images/leftbar-128.png) 2x);
1746 }
1747
1748 .lb4 {
1749 background: url(../images/leftbar-64.png) -194px -2px;
1750 background-image: image-set(url(../images/leftbar-64.png) 1x, url(../images/leftbar-128.png) 2x);
1751 }
1752
1753 .lb5 {
1754 background: url(../images/leftbar-64.png) -257px -2px;
1755 background-image: image-set(url(../images/leftbar-64.png) 1x, url(../images/leftbar-128.png) 2x);
1756 }
1757
1758 .lb6 {
1759 background: url(../images/leftbar-64.png) -318px -2px;
1760 background-image: image-set(url(../images/leftbar-64.png) 1x, url(../images/leftbar-128.png) 2x);
1761 }
1762
1763 .m0 {
1764 background: url(../images/images16.png) -32px 0px;
1765 height: 16px;
1766 width: 16px;
1767 border: none;
1768 float: left;
1769 }
1770
1771 .m1 {
1772 background: url(../images/images16.png) -16px 0px;
1773 height: 16px;
1774 width: 16px;
1775 border: none;
1776 float: left;
1777 }
1778
1779 .m2 {
1780 background: url(../images/images16.png) -96px 0px;
1781 height: 16px;
1782 width: 16px;
1783 border: none;
1784 float: left;
1785 }
1786
1787 .m3 {
1788 background: url(../images/images16.png) -112px 0px;
1789 height: 16px;
1790 width: 16px;
1791 border: none;
1792 float: left;
1793 }
1794
1795 .m4 {
1796 background: url(../images/images16.png) -128px 0px;
1797 height: 16px;
1798 width: 16px;
1799 border: none;
1800 float: left;
1801 }
1802
1803 .m99 {
1804 background: url(../images/meshicon16.png);
1805 height: 16px;
1806 width: 16px;
1807 border: none;
1808 float: left;
1809 }
1810
1811 .si1 {
1812 background: url(../images/icons16.png) 0px 0px;
1813 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1814 height: 16px;
1815 width: 16px;
1816 border: none;
1817 float: left;
1818 }
1819
1820 .si2 {
1821 background: url(../images/icons16.png) -16px 0px;
1822 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1823 height: 16px;
1824 width: 16px;
1825 border: none;
1826 float: left;
1827 }
1828
1829 .si3 {
1830 background: url(../images/icons16.png) -32px 0px;
1831 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1832 height: 16px;
1833 width: 16px;
1834 border: none;
1835 float: left;
1836 }
1837
1838 .si4 {
1839 background: url(../images/icons16.png) -48px 0px;
1840 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1841 height: 16px;
1842 width: 16px;
1843 border: none;
1844 float: left;
1845 }
1846
1847 .si5 {
1848 background: url(../images/icons16.png) -64px 0px;
1849 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1850 height: 16px;
1851 width: 16px;
1852 border: none;
1853 float: left;
1854 }
1855
1856 .si6 {
1857 background: url(../images/icons16.png) -80px 0px;
1858 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1859 height: 16px;
1860 width: 16px;
1861 border: none;
1862 float: left;
1863 }
1864
1865 .si7 {
1866 background: url(../images/icons16.png) -96px 0px;
1867 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1868 height: 16px;
1869 width: 16px;
1870 border: none;
1871 float: left;
1872 }
1873
1874 .si8 {
1875 background: url(../images/icons16.png) -112px 0px;
1876 background-image: image-set(url(../images/icons16.png) 1x, url(../images/icons32.png) 2x);
1877 height: 16px;
1878 width: 16px;
1879 border: none;
1880 float: left;
1881 }
1882
1883 .mi {
1884 background: url(../images/meshicon50.png) 0px 0px;
1885 background-image: image-set(url(../images/meshicon50.png) 1x, url(../images/meshicon100.png) 2x);
1886 height: 50px;
1887 width: 50px;
1888 cursor: pointer;
1889 border: none;
1890 }
1891
1892 #floatframe {
1893 position: fixed;
1894 top: 200px;
1895 height: 300px;
1896 z-index: 200;
1897 display: none;
1898 }
1899
1900 .style1 {
1901 text-align: center;
1902 }
1903
1904 .style2 {
1905 text-align: center;
1906 background: var(--sub-menu-bg);
1907 font-weight: bold;
1908 }
1909
1910 .style3 {
1911 text-align: center;
1912 color: white;
1913 background: var(--bs-secondary-bg);
1914 font-weight: bold;
1915 }
1916
1917 .style3x {
1918 text-align: center;
1919 color: var(--bs-secondary-color);
1920 background: var(--bs-secondary-bg);
1921 font-weight: bold;
1922 }
1923
1924 .style3x:hover {
1925 background-color: #606060;
1926 }
1927
1928 .style3x.fullselect {
1929 background-color: #003366;
1930 }
1931
1932 .style3x.semiselect {
1933 background-color: #606060;
1934 }
1935
1936 .style3sel {
1937 text-align: center;
1938 color: white;
1939 background-color: #003366;
1940 font-weight: bold;
1941 }
1942
1943
1944 .style4 {
1945 color: white;
1946 text-decoration: none;
1947 }
1948
1949 .style5 {
1950 text-align: center;
1951 background: var(--sub-menu-bg);
1952 font-weight: normal;
1953 }
1954
1955 .style6 {
1956 text-align: left;
1957 background: var(--sub-menu-bg);
1958 padding: 3px;
1959 }
1960
1961 .night .style6 {
1962 background-color: #333;
1963 }
1964
1965 .style7 {
1966 font-size: large;
1967 width: 180px;
1968 }
1969
1970 .style9 {
1971 max-width: 400px;
1972 overflow: hidden;
1973 }
1974
1975 .style10 {
1976 background-color: #C9C9C9;
1977 color: #000;
1978 }
1979
1980 .night .style10 {
1981 background-color: #333;
1982 color: #CCC;
1983 }
1984
1985 .style10s {
1986 background-color: #b9b9b9;
1987 }
1988
1989 .night .style10s {
1990 background-color: #444;
1991 }
1992
1993 .style11 {
1994 font-size: large;
1995 background-color: #C9C9C9;
1996 }
1997
1998 .style14 {
1999 height: 100%;
2000 text-align: left;
2001 background: var(--bs-secondary-bg);
2002 }
2003
2004 .night .style14 {
2005 color: #CCC;
2006 }
2007
2008 .auto-style1 {
2009 background: var(--bs-secondary-bg);
2010 }
2011
2012 .night .auto-style1 {
2013 color: #CCC;
2014 }
2015
2016 .icon2 {
2017 float: left;
2018 margin: 7px;
2019 }
2020
2021 .warningbox {
2022 width: auto;
2023 border-radius: 8px;
2024 padding: 8px;
2025 background-color: lightsalmon;
2026 }
2027
2028 .fileIcon1 {
2029 background: url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb49Y2Sj9LT2f///yH5BAEAAAMALAAAAAAQABAAAAImnI+py+1vhJwyUYAzHTL4D3qdlJWaIFJqmKod607sDKIiDUP63hQAOw==);
2030 height: 16px;
2031 width: 16px;
2032 cursor: pointer;
2033 border: none;
2034 float: left;
2035 margin-top: 1px;
2036 }
2037
2038 .fileIcon2 {
2039 background: url(data:image/gif;base64,R0lGODlhEAAQAJEDAM2xV/Xur+XPgP///yH5BAEAAAMALAAAAAAQABAAAAJD3ISZIGHWUGihznesYDYATFVM+D2hJ4lgN1olxALAtAlmPCJvuMmJd6PJckDYwicrHhTD5o7plJmg0Uc0asNMkphHAQA7);
2040 height: 16px;
2041 width: 16px;
2042 cursor: pointer;
2043 border: none;
2044 float: left;
2045 margin-top: 1px;
2046 }
2047
2048 .fileIcon3 {
2049 background: url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb19IGBgbq6uv///yH5BAEAAAMALAAAAAAQABAAAAIy3ISpxgcPH2ouQgFEw1YmxnUXKEaaEZZnVWZk66JwzKpvuwZzwOgwb/C1gIOA8Yg8DgoAOw==);
2050 height: 16px;
2051 width: 16px;
2052 cursor: pointer;
2053 border: none;
2054 float: left;
2055 margin-top: 1px;
2056 }
2057
2058 .fileIcon4 {
2059 background: url(../images/meshicon16.png);
2060 height: 16px;
2061 width: 16px;
2062 cursor: pointer;
2063 border: none;
2064 float: left;
2065 margin-top: 1px;
2066 }
2067
2068 .fileIcon5 {
2069 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABVklEQVQ4T42Ty22DUBBFzW9PB3EJpoKYDpwKIiQ+YpW4grSQHRIgESqIO3A6CB3YHYQlCz65F/Gslwe2gzTCwNwzd2aetdU/rqIo7KZp7DiOz2q6dk+fpulG1/XPYRhshBuGYSVrbgIkcQ0RY6NCFgEUappWIFiVwpJ3PD+rkBlAqrqerLoUIR6CINhnWXaUIX8AC2IyamEb4lfZSdu2zgVwRSzmNUIQOwyUrTzi95bvRkCSJGvLso54IWwvLYezeIL4heK+770oig4jIM9zrmk3qZjIfbPvRZAQ86PGQ4JefqbMyjRN1/O8etrEt0qAg7NhGA5zRgAGs8Wdk+X1DiclV4iJO/hGgOyklqvPHED44fu+RyicVHB2QpItWlPFI2CawUkMEJBD13Ulpv0mVZ9VFq2NAKUNte2r4osDAWHvyiq/8LxX/0ByhdlRntyseOJuCQXkFwkT7PS0vyFtAAAAAElFTkSuQmCC);
2070 height: 16px;
2071 width: 16px;
2072 cursor: pointer;
2073 border: none;
2074 float: left;
2075 margin-top: 1px;
2076 }
2077
2078 .fileIcon6 {
2079 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABCUlEQVQ4T6WT3Q2CMBSFLTAAbiAb4AhuIBvYBEJ40wkcQV/5SXAEN9ANdAPZwL5DwNOENm2xxoQmPLT3nq/3nAaymLnITP3CCqjr2m/bdkUI8ZMkudsumgC4sOu6IwQ7fL4iPAN0MEEaYBTf0BRabmSALNWaBijL8oTi/lcusHSN4zgSPSbgbYzNIGDDMKxUqOd5S0op42cSUBRFiOaHJBPSuK675o1VVb0MyEYEawUAJP3CGgfLXPq+j9I0vWoTjAFyC+p6jhstVLxSkGVZowH4BqPWGJU/n3XB5gUh0q8h/vOMCDAQAU4mEFTLJHeII1VsBQhQnudbx3EYhE9T+NXCL++22uy/8QNYGm0RH2Rb4gAAAABJRU5ErkJggg==);
2080 height: 16px;
2081 width: 16px;
2082 cursor: pointer;
2083 border: none;
2084 float: left;
2085 margin-top: 1px;
2086 }
2087
2088 .filelist {
2089 -moz-user-select: none;
2090 -khtml-user-select: none;
2091 -webkit-user-select: none;
2092 -o-user-select: none;
2093 user-select: none;
2094 cursor: default;
2095 -khtml-user-drag: element;
2096 clear: both;
2097 overflow: hidden;
2098 text-overflow: ellipsis;
2099 white-space: nowrap;
2100 }
2101
2102 .filelist:hover {
2103 background: #EEE;
2104 border-radius: 3px;
2105 }
2106
2107 .night .filelist:hover {
2108 background: #444;
2109 }
2110
2111 .noselect {
2112 -webkit-touch-callout: none;
2113 -webkit-user-select: none;
2114 -khtml-user-select: none;
2115 -moz-user-select: none;
2116 -ms-user-select: none;
2117 user-select: none;
2118 }
2119
2120 .selecttext {
2121 -webkit-touch-callout: text;
2122 -webkit-user-select: text;
2123 -khtml-user-select: text;
2124 -moz-user-select: text;
2125 -ms-user-select: text;
2126 user-select: text;
2127 }
2128
2129 .fsize {
2130 float: right;
2131 text-align: right;
2132 width: 180px;
2133 }
2134
2135 .g1t {
2136 background-position: 0% 0%;
2137 width: 14px;
2138 height: 100%;
2139 /* fallback (Opera) */
2140 /* Mozilla: */
2141 /* Chrome, Safari:*/
2142 background-image: linear-gradient(to right, #fff 0%, #c9c9c9 100%);
2143 background-color: #c9c9c9;
2144 background-repeat: repeat;
2145 background-attachment: scroll;
2146 }
2147
2148 .night .g1t {
2149 background-image: linear-gradient(to right, #000 0%, #333 100%);
2150 }
2151
2152 .g1 {
2153 background-position: 0% 0%;
2154 width: 14px;
2155 height: 100%;
2156 float: left;
2157 /* fallback (Opera) */
2158 /* Mozilla: */
2159 /* Chrome, Safari:*/
2160 background-image: linear-gradient(to right, #fff 0%, #c9c9c9 100%);
2161 background-color: #c9c9c9;
2162 background-repeat: repeat;
2163 background-attachment: scroll;
2164 }
2165
2166 .night .g1 {
2167 background-image: linear-gradient(to right, #000 0%, #333 100%);
2168 }
2169
2170 #p3events .g1 {
2171 float: none;
2172 }
2173
2174 #p16events .g1 {
2175 float: none;
2176 }
2177
2178 #p31events .g1 {
2179 float: none;
2180 }
2181
2182 #p3users .g1 {
2183 height: 24px;
2184 float: left;
2185 }
2186
2187 .g1s {
2188 background-image: linear-gradient(to right, #fff 0%, #b9b9b9 100%);
2189 }
2190
2191 .night .g1s {
2192 background-image: linear-gradient(to right, #000 0%, #444 100%);
2193 }
2194
2195 .g2t {
2196 background-position: 0% 0%;
2197 width: 14px;
2198 height: 100%;
2199 /* fallback (Opera) */
2200 /* Mozilla: */
2201 /* Chrome, Safari:*/
2202 background-image: linear-gradient(to right, #c9c9c9 0%, #fff 100%);
2203 background-color: #c9c9c9;
2204 background-repeat: repeat;
2205 background-attachment: scroll;
2206 }
2207
2208 .night .g2t {
2209 background-image: linear-gradient(to right, #333 0%, #000 100%);
2210 }
2211
2212 .g2 {
2213 background-position: 0% 0%;
2214 width: 14px;
2215 height: 100%;
2216 float: right;
2217 /* fallback (Opera) */
2218 /* Mozilla: */
2219 /* Chrome, Safari:*/
2220 background-image: linear-gradient(to right, #c9c9c9 0%, #fff 100%);
2221 background-color: #c9c9c9;
2222 background-repeat: repeat;
2223 background-attachment: scroll;
2224 }
2225
2226 .night .g2 {
2227 background-image: linear-gradient(to right, #333 0%, #000 100%);
2228 }
2229
2230 #p3events .g2 {
2231 float: none;
2232 }
2233
2234 #p16events .g2 {
2235 float: none;
2236 }
2237
2238 #p31events .g2 {
2239 float: none;
2240 }
2241
2242 #p3users .g2 {
2243 height: 24px;
2244 float: right;
2245 }
2246
2247 .g2s {
2248 background-image: linear-gradient(to right, #b9b9b9 0%, #fff 100%);
2249 }
2250
2251 .night .g2s {
2252 background-image: linear-gradient(to right, #444 0%, #000 100%);
2253 }
2254
2255 #agins_linux_area,
2256 #agins_linux_area_un,
2257 #d2notifyMsg,
2258 #d2devNotes,
2259 #d2devEvent,
2260 #d2runcmd,
2261 #d2devMessage,
2262 #d2smsText,
2263 #d2emailSubject,
2264 #d2emailText,
2265 #broadcastMessage {
2266 background-color: #FFF9D3;
2267 }
2268
2269 .night #agins_linux_area,
2270 .night #agins_linux_area_un,
2271 .night #d2notifyMsg,
2272 .night #d2devNotes,
2273 .night #d2devEvent,
2274 .night #d2runcmd,
2275 .night #d2devMessage,
2276 .night #d2smsText,
2277 .night #d2emailSubject,
2278 .night #d2emailText,
2279 .night #broadcastMessage {
2280 background-color: black;
2281 }
2282
2283 .h1pre {
2284 width: 16px;
2285 height: 100%;
2286 float: left;
2287 font-size: large;
2288 background-color: #FFFFFF;
2289 }
2290
2291 .h1 {
2292 background-position: 0% 0%;
2293 width: 14px;
2294 height: 24px;
2295 /* fallback (Opera) */
2296 /* Mozilla: */
2297 /* Chrome, Safari:*/
2298 background-image: linear-gradient(to right, #fff 0%, #d3d9d6 100%);
2299 background-color: #d3d9d6;
2300 background-repeat: repeat;
2301 background-attachment: scroll;
2302 }
2303
2304 .night .h1 {
2305 background-image: linear-gradient(to right, #000 0%, #333 100%);
2306 }
2307
2308 .h2end {
2309 height: 100%;
2310 width: 20px;
2311 float: right;
2312 background-color: #ffffff;
2313 }
2314
2315 .h2 {
2316 background-position: 0% 0%;
2317 width: 14px;
2318 height: 24px;
2319 /* fallback (Opera) */
2320 /* Mozilla: */
2321 /* Chrome, Safari:*/
2322 background-image: linear-gradient(to right, #d3d9d6 0%, #fff 100%);
2323 background-color: #d3d9d6;
2324 background-repeat: repeat;
2325 background-attachment: scroll;
2326 }
2327
2328 .night .h2 {
2329 background-image: linear-gradient(to right, #333 0%, #000 100%);
2330 }
2331
2332 .e1t {
2333 font-size: large;
2334 margin-bottom: 3px;
2335 overflow: hidden;
2336 word-wrap: hyphenate;
2337 white-space: nowrap;
2338 text-overflow: ellipsis;
2339 }
2340
2341 .e1 {
2342 font-size: large;
2343 margin-top: 4px;
2344 margin-bottom: 3px;
2345 overflow: hidden;
2346 word-wrap: hyphenate;
2347 white-space: nowrap;
2348 text-overflow: ellipsis;
2349 }
2350
2351 .e2 {
2352 float: left;
2353 height: 100%;
2354 background-color: #c9c9c9;
2355 }
2356
2357 .night .e2 {
2358 color: #CCC;
2359 background-color: #333;
2360 }
2361
2362 .e2t {
2363 height: 100%;
2364 background-color: #c9c9c9;
2365 }
2366
2367 .night .e2t {
2368 color: #CCC;
2369 background-color: #333;
2370 }
2371
2372 .e2s {
2373 background-color: #b9b9b9;
2374 }
2375
2376 .night .e2s {
2377 background-color: #444;
2378 }
2379
2380 .bar {
2381 font-size: large;
2382 background-color: #C9C9C9;
2383 height: 24px;
2384 float: left;
2385 margin-bottom: 2px;
2386 }
2387
2388 .night .bar {
2389 color: #CCC;
2390 background-color: #333;
2391 }
2392
2393 .sbar {
2394 background-color: #b9b9b9;
2395 }
2396
2397 .night .sbar {
2398 background-color: #444;
2399 }
2400
2401 #p3users .bar {
2402 width: 100%;
2403 font-size: medium;
2404 }
2405
2406 .baricon {
2407 float: left;
2408 height: 24px;
2409 width: 24px;
2410 background-color: white;
2411 }
2412
2413 .night .baricon {
2414 background-color: black;
2415 }
2416
2417 .baricon div {
2418 width: 16px;
2419 margin-top: 4px;
2420 margin-left: 2px;
2421 height: 16px;
2422 }
2423
2424 .bar2 {
2425 font-size: large;
2426 height: 24px;
2427 float: left;
2428 margin-bottom: 2px;
2429 }
2430
2431 .bar18 {
2432 font-size: large;
2433 background-color: #C9C9C9;
2434 height: 18px;
2435 float: left;
2436 margin-bottom: 2px;
2437 color: black;
2438 }
2439
2440 .night .bar18 {
2441 background-color: #333;
2442 color: #CCC;
2443 }
2444
2445 .bar182 {
2446 font-size: large;
2447 height: 18px;
2448 float: left;
2449 margin-bottom: 2px;
2450 }
2451
2452 .devHeaderx {
2453 color: lightgray;
2454 }
2455
2456 .DevSt {
2457 border-bottom-style: solid;
2458 border-bottom-width: 1px;
2459 border-bottom-color: #DDDDDD;
2460 }
2461
2462 .night .DevSt {
2463 color: white;
2464 }
2465
2466 .contextMenu {
2467 background: #F9F9F9;
2468 box-shadow: 0 0 12px rgba( 0, 0, 0, .3 );
2469 border: 1px solid #ccc;
2470 /*border-radius: 4px;*/
2471 display: none;
2472 position: absolute;
2473 list-style: none;
2474 margin: 0;
2475 padding: 5px;
2476 min-width: 100px;
2477 max-width: 150px;
2478 z-index: 500;
2479 }
2480
2481 .cmtext {
2482 color: #444;
2483 display: inline-block;
2484 padding-left: 8px;
2485 padding-right: 8px;
2486 padding-top: 5px;
2487 padding-bottom: 5px;
2488 text-decoration: none;
2489 width: 85%;
2490 cursor: default;
2491 overflow: hidden;
2492 position: relative;
2493 }
2494
2495 .cmtext:hover {
2496 color: #f9f9f9;
2497 background: #444;
2498 }
2499
2500 .gray {
2501 /*filter: url("data:image/svg+xml;utf8,&lt;svg xmlns=\'http://www.w3.org/2000/svg\'&gt;&lt;filter id=\'grayscale\'&gt;&lt;feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/&gt;&lt;/filter&gt;&lt;/svg&gt;#grayscale");*/ /* Firefox 10+, Firefox on Android */
2502 filter: gray; /* IE6-9 */
2503 -webkit-filter: grayscale(100%) opacity(60%); /* Chrome 19+, Safari 6+, Safari 6+ iOS */
2504 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
2505 -moz-opacity: 0.60;
2506 opacity: .60;
2507 filter: alpha(opacity=60);
2508 }
2509
2510 .unselectable {
2511 -webkit-touch-callout: none;
2512 -webkit-user-select: none;
2513 -khtml-user-select: none;
2514 -moz-user-select: none;
2515 -ms-user-select: none;
2516 user-select: none;
2517 }
2518
2519 .notifiyBox {
2520 position: fixed;
2521 z-index: 1000;
2522 top: 80px;
2523 right: 8.3rem;
2524 width: 300px;
2525 text-align: left;
2526 background-color: #F0ECCD;
2527 border: 4px solid #666;
2528 -webkit-border-radius: 10px;
2529 -moz-border-radius: 10px;
2530 border-radius: 10px;
2531 -webkit-box-shadow: 2px 2px 4px #888;
2532 -moz-box-shadow: 2px 2px 4px #888;
2533 box-shadow: 2px 2px 4px #888;
2534 max-height: 200px;
2535 }
2536
2537 body:not(.fullscreen) .notifiyBox {
2538 position: absolute;
2539 right: calc(50vw - 512px + 10rem);
2540 }
2541
2542 .night .notifiyBox {
2543 color: black;
2544 }
2545
2546 .notifiyBox:before {
2547 content: ' ';
2548 position: absolute;
2549 width: 0;
2550 height: 0;
2551 right: 5px;
2552 top: -30px;
2553 border: 15px solid;
2554 border-color: transparent #666 #666 transparent;
2555 }
2556
2557 .notifiyBox:after {
2558 content: ' ';
2559 position: absolute;
2560 width: 0;
2561 height: 0;
2562 right: 7px;
2563 top: -24px;
2564 border: 12px solid;
2565 border-color: transparent #F0ECCD #F0ECCD transparent;
2566 }
2567
2568 .notification {
2569 width: 100%;
2570 min-height: 30px;
2571 }
2572
2573 .notification:hover {
2574 background-color: #EFE8B6;
2575 }
2576
2577 #notificationBadge {
2578 box-shadow: -0.1px 1px 2px #000000;
2579 -webkit-box-shadow: -0.1px 1px 2px #000000;
2580 -moz-box-shadow: -0.1px 1px 2px #000000;
2581 top: 0.95rem;
2582 left: 1.6rem !important;
2583 }
2584 #notificationCount:hover {
2585 background-color: rgba(255, 255, 255, 0.1);
2586 }
2587 .night #notificationCount {
2588 color: black;
2589 }
2590
2591 .deskareaicon {
2592 cursor: pointer;
2593 border: none;
2594 float: right;
2595 font-size: 130%;
2596 margin-right: 4px;
2597 }
2598
2599 .areaHead {
2600 padding-left: 4px;
2601 padding-top: 2px;
2602 padding-bottom: 2px;
2603 background: var(--sub-menu-bg);
2604 }
2605
2606 #consoleTable .areaHead {
2607 border: 1px solid #C0C0C0;
2608 }
2609
2610 .night .areaHead {
2611 color: #CCC;
2612 background: #333;
2613 }
2614
2615 .areaProgress {
2616 background-color: gray;
2617 }
2618
2619 .areaProgress div {
2620 height: 2px;
2621 width: 0%;
2622 background-color: red;
2623 }
2624
2625 .areaFoot {
2626 padding-top: 2px;
2627 padding-bottom: 2px;
2628 background: var(--sub-menu-bg);
2629 }
2630
2631 .night .areaFoot {
2632 color: #CCC;
2633 background: #333;
2634 }
2635
2636 .toright2 {
2637 float: right;
2638 text-align: right;
2639 padding-right: 4px;
2640 }
2641
2642 #deskarea0 {
2643 width: 100%;
2644 padding: 0px;
2645 margin-top: 0px;
2646 }
2647
2648 .night #deskarea0 {
2649 color: black;
2650 }
2651
2652 .fulldesk #deskarea0 {
2653 min-width: 100%;
2654 min-height: 0px;
2655 height: 100%;
2656 position: absolute;
2657 top: 0px;
2658 display: -ms-grid;
2659 display: grid;
2660 grid-gap: 0px;
2661 grid-template-areas: "deskarea1" "deskarea2" "deskarea3" "deskarea4";
2662 /* grid-template-columns: 90px auto; */
2663 grid-template-rows: max-content max-content auto max-content;
2664 -ms-grid-columns: 1fr;
2665 -ms-grid-rows: max-content max-content 1fr max-content;
2666 }
2667
2668 #deskarea0 .mR {
2669 margin-right: 3px;
2670 }
2671
2672 #deskarea1 {
2673 grid-area: deskarea1;
2674 -ms-grid-column: 1;
2675 -ms-grid-row: 1;
2676 min-height: 20px;
2677 }
2678
2679
2680 #deskarea2 {
2681 grid-area: deskarea2;
2682 background-color: gray;
2683 -ms-grid-column: 1;
2684 -ms-grid-row: 2;
2685 }
2686
2687 #progressbar {
2688 height: 2px;
2689 width: 0%;
2690 background-color: red;
2691 }
2692
2693 #deskarea3x {
2694 background: black;
2695 text-align: center;
2696 position: relative;
2697 overflow: hidden;
2698 width: 100%;
2699 max-height: calc(100vh - 270px); /* + 24px height of submenu */
2700 height: calc(100vh - 270px);
2701 }
2702
2703 .room4submenu #deskarea3x {
2704 max-height: calc(100vh - 296px);
2705 height: calc(100vh - 296px);
2706 }
2707
2708 .fulldesk #deskarea3x {
2709 grid-area: deskarea3;
2710 max-height: 100%;
2711 height: 100%;
2712 -ms-grid-column: 1;
2713 -ms-grid-row: 3;
2714 }
2715
2716 #DeskFocus {
2717 overflow: hidden;
2718 color: transparent;
2719 border: 3px dotted rgba(255,0,0,.2);
2720 position: absolute;
2721 border-radius: 5px;
2722 }
2723
2724 #DeskParent {
2725 margin: 0;
2726 overflow: hidden;
2727 height: 100%;
2728 width: 100%;
2729 position: absolute;
2730 right: 0;
2731 top: 0;
2732 }
2733
2734 #Desk {
2735 overflow: hidden;
2736 width: 100%;
2737 -ms-touch-action: none;
2738 touch-action: none;
2739 position: absolute;
2740 top: 0px;
2741 bottom: 0px;
2742 left: 0px;
2743 right: 0px;
2744 margin: auto;
2745 }
2746
2747 .deskToolsTopTab {
2748 position:absolute;
2749 background-color:lightgray;
2750 padding:2px;
2751 top:2px;
2752 left:0px;
2753 width:80px;
2754 bottom:2px;
2755 border-top-left-radius:4px;
2756 border-top-right-radius:4px;
2757 cursor:pointer;
2758 }
2759
2760 #deskToolsAreaTop {
2761 position: absolute;
2762 /*
2763 padding: 3px;
2764 border-radius: 3px 3px 0px 0px;
2765 top: 5px;
2766 left: 4px;
2767 bottom: 26px;
2768 cursor: pointer;
2769 */
2770 top: 0px;
2771 left: 4px;
2772 right: 4px;
2773 height: 26px;
2774 background-color: gray;
2775 }
2776
2777 .night #deskToolsAreaTop {
2778 background-color: #222;
2779 }
2780
2781 #deskToolsArea {
2782 position: absolute;
2783 top: 26px;
2784 left: 4px;
2785 right: 4px;
2786 bottom: 4px;
2787 background-color: lightgray;
2788 text-align: left;
2789 }
2790
2791 .night #deskToolsArea {
2792 background-color: #222;
2793 }
2794
2795 #deskToolsHeader {
2796 border-bottom: 1px solid darkgray;
2797 padding: 3px;
2798 }
2799
2800 #deskToolsHeader .colmn1 {
2801 width: 50px;
2802 padding-right: 5px;
2803 float: left;
2804 }
2805
2806 #deskToolsServiceHeader {
2807 border-bottom: 1px solid darkgray;
2808 padding: 3px;
2809 }
2810
2811 #deskToolsServiceHeader .colmn1 {
2812 width: 50px;
2813 padding-right: 5px;
2814 float: left;
2815 }
2816
2817 #DeskToolsProcesses {
2818 overflow-y: scroll;
2819 position: absolute;
2820 top: 24px;
2821 bottom: 0px;
2822 width: 100%;
2823 color:black;
2824 }
2825
2826 #DeskToolsServices {
2827 overflow-y: scroll;
2828 position: absolute;
2829 top: 24px;
2830 bottom: 0px;
2831 width: 100%;
2832 color:black;
2833 }
2834
2835 .deskToolsBar {
2836 padding: 3px;
2837 }
2838
2839 .deskToolsBar:hover {
2840 background-color: #EFE8B6;
2841 }
2842
2843 .night .deskToolsBar {
2844 color: #ddd;
2845 }
2846
2847 .night .deskToolsBar:hover {
2848 background-color: #444;
2849 }
2850
2851 #deskarea4 {
2852 grid-area: deskarea4;
2853 -ms-grid-column: 1;
2854 -ms-grid-row: 4;
2855 }
2856
2857 .serverStateTableCell {
2858 width: 300px;
2859 height: 24px;
2860 background: var(--bs-secondary-bg);
2861 margin-bottom: 4px;
2862 vertical-align: middle;
2863 border-spacing: 0;
2864 color: var(--bs-secondary-color);
2865 }
2866
2867 .userTableHeader {
2868 border-bottom: 1pt solid lightgray;
2869 padding-top: 4px;
2870 padding-bottom: 4px;
2871 }
2872
2873 #p12BackButton {
2874 float: left;
2875 }
2876
2877 #termTable {
2878 width: 100%;
2879 padding: 0px;
2880 margin-top: 0px;
2881 }
2882
2883 .fulldesk #termTable {
2884 position: absolute;
2885 top: 0;
2886 bottom: 0;
2887 left: 0;
2888 right: 0;
2889 }
2890
2891 #termarea3x {
2892 background: black;
2893 text-align: center;
2894 height: 500px;
2895 position: relative;
2896 }
2897
2898 #Term {
2899 background: black;
2900 margin: 0;
2901 padding: 0;
2902 }
2903
2904 #p13toolbar {
2905 width: 100%;
2906 }
2907
2908 #p13toolbar .areaHead {
2909 border-bottom: 2px solid black;
2910 }
2911
2912 #p13toolbar .areaHead2 {
2913 width: 100%;
2914 background: var(--bs-secondary-bg);
2915 padding: 4px 0px;
2916 }
2917
2918
2919 #p13toolbar .areaHead3 {
2920 background: var(--bs-secondary-bg);
2921 height: 28px;
2922 }
2923
2924
2925 #p13filetable {
2926 width: 100%;
2927 height: calc(100vh - 323px);
2928 overflow: auto;
2929 -webkit-user-select: none;
2930 user-select: none;
2931 }
2932
2933 .room4submenu #p13filetable {
2934 height: calc(100vh - 349px);
2935 }
2936
2937 .fulldesk #p14title {
2938 margin-left: 16px;
2939 margin-right: 16px;
2940 color: #CCC;
2941 }
2942
2943 #p14iframe {
2944 width: 100%;
2945 height: calc(100vh - 218px);
2946 border: 0;
2947 overflow: hidden;
2948 }
2949
2950 .menu_stack #p14iframe {
2951 height: calc(100vh - 246px);
2952 }
2953
2954 .fulldesk #p14iframe {
2955 height: calc(100vh - 65px);
2956 }
2957
2958 #p13toolbarBottom, #p13toolbar {
2959 width: 100%;
2960 }
2961
2962 #consoleTable {
2963 width: 100%;
2964 padding: 0px;
2965 padding: 0px;
2966 margin-top: 0px;
2967 }
2968
2969 .night #consoleTable {
2970 color: black;
2971 }
2972
2973 #p15agentConsole {
2974 background: black;
2975 margin: 0;
2976 padding: 0;
2977 color: lightgray;
2978 width: 100%;
2979 height: calc(100vh - 276px);
2980 max-height: calc(100vh - 276px);
2981 position: relative;
2982 }
2983
2984 .menu_stack.fullscreen #p15agentConsole {
2985 height: calc(100vh - 305px);
2986 max-height: calc(100vh - 305px);
2987 }
2988
2989 #p15agentConsoleText {
2990 margin: 0;
2991 padding: 0;
2992 top: 0;
2993 bottom: 0;
2994 overflow-y: scroll;
2995 overflow-x: auto;
2996 height: calc(100vh - 279px);
2997 max-height: calc(100vh - 279px);
2998 width: 930px;
2999 }
3000
3001 .menu_stack.fullscreen #p15agentConsoleText {
3002 width: calc(100vw - 30px);
3003 height: calc(100vh - 305px);
3004 max-height: calc(100vh - 305px);
3005 }
3006
3007 .fullscreen #p15agentConsoleText {
3008 width: calc(100vw - 120px);
3009 }
3010
3011 /*
3012 #p16events, #p31events {
3013 max-height: calc(100vh - 245px);
3014 overflow-y: auto;
3015 }
3016
3017 .room4submenu #p16events, #p31events {
3018 max-height: calc(100vh - 269px);
3019 }
3020 */
3021
3022 .night #p16events, #p31events {
3023 color: #222;
3024 }
3025
3026 #p40 {
3027 height: calc(100vh - 191px);
3028 }
3029
3030 .viewSelector {
3031 width: 32px;
3032 height: 32px;
3033 background-color: #DDD;
3034 border-radius: 3px;
3035 float: left;
3036 margin-left: 5px;
3037 cursor: pointer;
3038 opacity: 0.3;
3039 }
3040
3041 .viewSelectorSel {
3042 background-color: #BBB;
3043 opacity: 0.8;
3044 color: black;
3045 }
3046
3047 .viewSelector:hover {
3048 opacity: 0.5;
3049 background-color: #AAA;
3050 color: black;
3051 }
3052
3053
3054 .viewSelector1 {
3055 margin-left: 2px;
3056 margin-top: 2px;
3057 background: url(../images/views.png) -0px 0px;
3058 height: 28px;
3059 width: 28px;
3060 }
3061
3062 .viewSelector2 {
3063 margin-left: 2px;
3064 margin-top: 2px;
3065 background: url(../images/views.png) -28px 0px;
3066 height: 28px;
3067 width: 28px;
3068 }
3069
3070 .viewSelector3, .uiSelector7 {
3071 margin-left: 2px;
3072 margin-top: 2px;
3073 background: url(../images/views.png) -56px 0px;
3074 height: 28px;
3075 width: 28px;
3076 }
3077
3078 .viewSelector4 {
3079 margin-left: 2px;
3080 margin-top: 2px;
3081 background: url(../images/views.png) -84px 0px;
3082 height: 28px;
3083 width: 28px;
3084 }
3085
3086 .viewSelector5 {
3087 margin-left: 2px;
3088 margin-top: 2px;
3089 background: url(../images/views.png) -112px 0px;
3090 height: 28px;
3091 width: 28px;
3092 }
3093
3094 .viewSelector6 {
3095 margin-left: 2px;
3096 margin-top: 2px;
3097 background: url(../images/views.png) -336px 0px;
3098 height: 28px;
3099 width: 28px;
3100 }
3101
3102 .viewSelector7 {
3103 margin-left: 2px;
3104 margin-top: 2px;
3105 background: url(../images/views.png) -364px 0px;
3106 height: 28px;
3107 width: 28px;
3108 }
3109
3110 .viewSelector8 {
3111 margin-left: 2px;
3112 margin-top: 2px;
3113 background: url(../images/views.png) -420px 0px;
3114 height: 28px;
3115 width: 28px;
3116 }
3117
3118 .viewSelector9 {
3119 margin-left: 2px;
3120 margin-top: 2px;
3121 background: url(../images/views.png) -448px 0px;
3122 height: 28px;
3123 width: 28px;
3124 }
3125
3126 .viewSelector10 {
3127 margin-left: 2px;
3128 margin-top: 2px;
3129 background: url(../images/views.png) -476px 0px;
3130 height: 28px;
3131 width: 28px;
3132 }
3133
3134 .viewSelector11 {
3135 margin-left: 2px;
3136 margin-top: 2px;
3137 background: url(../images/views.png) -504px 0px;
3138 height: 28px;
3139 width: 28px;
3140 }
3141
3142 .fulldesk .viewSelector5 {
3143 background: url(../images/views.png) -252px 0px;
3144 }
3145
3146 .backButtonEx {
3147 margin-left: 2px;
3148 margin-top: 2px;
3149 background: url(../images/views.png) -140px 0px;
3150 height: 28px;
3151 width: 28px;
3152 }
3153
3154 .uiSelector {
3155 width: 32px;
3156 height: 32px;
3157 background-color: #BBB;
3158 border-radius: 3px;
3159 float: left;
3160 margin: 3px;
3161 cursor: pointer;
3162 opacity: 0.3;
3163 }
3164
3165 .uiSelector:hover {
3166 opacity: 0.5;
3167 background-color: #AAA;
3168 }
3169
3170 .uiSelector_end {
3171 width: 32px;
3172 height: 32px;
3173 float: left;
3174 margin: 3px;
3175 }
3176
3177 .uiSelectorSel {
3178 background-color: #BBB;
3179 opacity: 0.8;
3180 }
3181
3182 .uiSelector1 {
3183 margin: 2px;
3184 background: url(../images/views.png) -168px 0px;
3185 height: 28px;
3186 width: 28px;
3187 }
3188
3189 .uiSelector2 {
3190 margin: 2px;
3191 background: url(../images/views.png) -196px 0px;
3192 height: 28px;
3193 width: 28px;
3194 }
3195
3196 .uiSelector3 {
3197 margin: 2px;
3198 background: url(../images/views.png) -224px 0px;
3199 height: 28px;
3200 width: 28px;
3201 }
3202
3203 .uiSelector4 {
3204 margin: 2px;
3205 background: url(../images/views.png) -280px 0px;
3206 height: 28px;
3207 width: 28px;
3208 }
3209
3210 .uiSelector5 {
3211 margin: 2px;
3212 background: url(../images/views.png) -308px 0px;
3213 height: 28px;
3214 width: 28px;
3215 }
3216
3217 .uiSelector6 {
3218 margin: 2px;
3219 background: url(../images/views.png) -392px 0px;
3220 height: 28px;
3221 width: 28px;
3222 }
3223
3224 .backButton {
3225 width: 32px;
3226 height: 32px;
3227 background-color: #DDD;
3228 border-radius: 3px;
3229 float: left;
3230 margin-right: 5px;
3231 cursor: pointer;
3232 opacity: 0.3;
3233 }
3234
3235 .backButton:hover {
3236 opacity: 0.5;
3237 background-color: #AAA;
3238 }
3239
3240 .hoverButton {
3241 opacity: 0.5;
3242 width: 10px;
3243 height: 10px;
3244 }
3245
3246 .hoverButton:hover {
3247 opacity: 1;
3248 }
3249
3250 .tagSpan {
3251 background-color: lightgray;
3252 padding: 3px;
3253 border-radius: 5px;
3254 }
3255
3256 .night .tagSpan {
3257 color: black;
3258 }
3259
3260 .suggestionBox {
3261 position:absolute;
3262 background-color: #6CC;
3263 border-radius:4px;
3264 padding:6px;
3265 box-shadow: 0px 0px 15px #666;
3266 }
3267
3268 .suggestionBoxItem {
3269 background-color:#5BB;
3270 padding: 4px;
3271 cursor: pointer;
3272 margin-top: 2px;
3273 margin-bottom: 2px;
3274 border-radius: 4px;
3275 }
3276
3277 .suggestionBoxItem:hover {
3278 background-color:#4AA;
3279 }
3280
3281 .suggestionBoxSubItem {
3282 font-size: 11px;
3283 margin-left: 4px;
3284 color: #555;
3285 }
3286
3287 .traceEvent {
3288 white-space: nowrap;
3289 overflow: hidden;
3290 text-overflow: ellipsis;
3291 margin: 3px 3px 3px 0;
3292 padding: 3px;
3293 border-radius: 3px;
3294 background-color: #DDD;
3295 cursor: pointer;
3296 }
3297
3298 .traceEvent:hover {
3299 background-color:#BBB;
3300 }
3301
3302 .night .traceEvent {
3303 background-color: #222;
3304 }
3305
3306 .p42tblRow {
3307 height: 36px;
3308 max-height: 40px;
3309 }
3310
3311 #p42tbl {
3312 width: 100%;
3313 border-collapse: separate;
3314 border-spacing:0 5px;
3315 }
3316
3317 #p42tbl th, #p7tbl td {
3318 text-align: left;
3319 padding: 4px;
3320 }
3321
3322 #p42tbl .chName {
3323 width: 20%;
3324 }
3325
3326 #p42tbl .chDescription {
3327 width: 38%;
3328 }
3329
3330 #p42tbl .chSite {
3331 width: 7%;
3332 }
3333
3334 #p42tbl .chVersion {
3335 width: 5%;
3336 }
3337
3338 #p42tbl .chUpgradeAvail {
3339 width: 10%;
3340 }
3341
3342 #p42tbl .chStatus {
3343 width: 10%;
3344 }
3345
3346 #p42tbl .chAction {
3347 width: 10%;
3348 }
3349
3350 .pActDisable, .pActDelete, .pActInstall, .pActUpgrade {
3351 cursor: pointer;
3352 }
3353
3354 #addPlugin {
3355 background-image: url(../images/plus32.png);
3356 width: 32px;
3357 height: 32px;
3358 float: right;
3359 cursor: pointer;
3360 margin-right: 12px;
3361 }
3362
3363 #pluginRestartNotice {
3364 /*
3365 width: 40em;
3366 font-weight: bold;
3367 border: 1px solid red;
3368 text-align: center;
3369 padding: 14px;
3370 margin: 50px auto;
3371 */
3372 }
3373
3374 .pluginContent {
3375 width: 100%;
3376 height: 100%;
3377 }
3378
3379 #p19headers {
3380 padding-right: 7px;
3381 padding-bottom: 10px;
3382 font-weight: bold;
3383 border-bottom: 1px dotted blue;
3384 }
3385
3386 #p19headers > span:nth-child(n+2) {
3387 border-left: 1px solid black;
3388 }
3389
3390 #p19headers > span {
3391 padding-left: 4px;
3392 padding-right: 4px;
3393 cursor: pointer;
3394 font-weight: lighter;
3395 }
3396 #p19headers > span.on {
3397 font-weight: bold;
3398 }
3399
3400 .thermalSensor {
3401 float: left;
3402 padding: 5px;
3403 background-color: gold;
3404 margin-right: 6px;
3405 border-radius: 4px;
3406 margin-bottom: 5px;
3407 }
3408
3409 .night .thermalSensor {
3410 color: #000;
3411 }
3412
3413 /* .desktopButtons {
3414 padding-top: 2px;
3415 }
3416
3417 .night .desktopButtons {
3418 filter: invert(60%);
3419 -webkit-filter: invert(60%);
3420 } */
3421
3422
3423 .dtab {
3424 overflow: hidden;
3425 border-bottom: 1px solid #ccc;
3426 }
3427
3428 .dtab button {
3429 background-color: inherit;
3430 float: left;
3431 border: none;
3432 outline: none;
3433 cursor: pointer;
3434 padding: 4px 6px;
3435 transition: 0.3s;
3436 }
3437
3438 .dtab button:hover {
3439 background-color: #ddd;
3440 }
3441
3442 .dtab button.active {
3443 background-color: #ccc;
3444 }
3445
3446 .dtabcontent {
3447 display: none;
3448 padding: 6px 12px;
3449 border: 1px solid #ccc;
3450 border-top: none;
3451 }
3452
3453 #notesPanel table {
3454 color: black;
3455 background-color: #EEE;
3456 border-color: #AAA;
3457 border-width: 1px;
3458 border-style: solid;
3459 border-collapse: collapse;
3460 width: 100%;
3461 }
3462
3463 #notesPanel thead {
3464 background-color: #AAA;
3465 font-weight: bold;
3466 }
3467
3468 #notesPanel thead tr {
3469 background-color: #AAA;
3470 font-weight: bold;
3471 }
3472
3473 .sidebar .nav-link {
3474 font-size: xx-large;
3475
3476 }
3477
3478 .nav-link {
3479 width: unset !important;
3480 }
3481
3482 .nav {
3483 --bs-nav-link-padding-x: 19px !important;
3484 }
3485
3486 .card:hover, #p2AccountImage:hover, #p2canvas:hover {
3487 background: #f3f5f7 !important;
3488 }
3489
3490 .form-control, .form-control-sm, .form-select, .form-select-sm {
3491 border: 1px solid #adb5bd !important;
3492 }
3493
3494 .card {
3495 background: #f8f9fa !important;
3496 }
3497
3498 .night .card {
3499 background-color: black !important;
3500 }
3501
3502 .night .modal-content .backgroundContainer {
3503 color: #000;
3504 }
3505
3506 .table td,
3507 .table th {
3508 padding: 0.05rem !important; /* Decrease padding to reduce row height */
3509 }
3510
3511 .btn-close {
3512 background-color: white !important;
3513 opacity: 1 !important;
3514 }
3515
3516 .navbar-toggler {
3517 border: none;
3518 }
3519
3520 /* Shared styles for all custom icons */
3521 .custom-icon svg {
3522 background-repeat: no-repeat;
3523 background-position: center;
3524 background-size: contain;
3525 width: 1em !important;
3526 height: 1em !important;
3527 display: inline-block !important;
3528 }
3529
3530 .custom-icon svg path {
3531 display: none !important;
3532 }
3533
3534 body.is-mobile #page_leftbar { display: none !important; }
3535
3536 /* Device list: separator between items */
3537 /* List view (xxdevice2) rows — add padding and a subtle divider line */
3538 body.is-mobile #xdevices tr[name="xxdevice2"] > td:first-child {
3539 padding-top: 8px !important;
3540 padding-bottom: 8px !important;
3541 border-bottom: 1px solid rgba(0,0,0,0.08) !important;
3542 }
3543 /* Group-header divs that are direct children of xdevices */
3544 body.is-mobile #xdevices > div { margin-top: 10px !important; }
3545
3546 /* p5toolbarBottom: same transparent fix as p13toolbarBottom */
3547 #p5toolbarBottom .style6 { background: transparent !important; }
3548
3549 /* All nav title bars (no back button): same style as device sub-panels
3550 but with left padding instead of the blue back button.
3551 Covers: My Devices(1) | My Events(3) | My Users(4) | My Files(5) |
3552 My Server(6) | Stats(40) | Trace(41) | Plugins(42) |
3553 User Groups(50) | Recordings(52) | My Reports(60) */
3554 body.is-mobile #p1title,
3555 body.is-mobile #p3title, body.is-mobile #p4title,
3556 body.is-mobile #p5title, body.is-mobile #p6title,
3557 body.is-mobile #p40title, body.is-mobile #p41title,
3558 body.is-mobile #p42title, body.is-mobile #p50title,
3559 body.is-mobile #p52title, body.is-mobile #p60title {
3560 padding: 0 12px 0 15px !important;
3561 background: #fff;
3562 min-height: 50px;
3563 position: relative !important;
3564 z-index: 1 !important;
3565 box-shadow: 0 1px 0 0 rgba(0,0,0,0.15);
3566 align-items: center !important;
3567 display: flex !important;
3568 }
3569 body.night.is-mobile #p1title,
3570 body.night.is-mobile #p3title, body.night.is-mobile #p4title,
3571 body.night.is-mobile #p5title, body.night.is-mobile #p6title,
3572 body.night.is-mobile #p40title, body.night.is-mobile #p41title,
3573 body.night.is-mobile #p42title, body.night.is-mobile #p50title,
3574 body.night.is-mobile #p52title, body.night.is-mobile #p60title {
3575 box-shadow: 0 1px 0 0 #444 !important;
3576 }
3577
3578 /* My Server: server icon small, right-aligned */
3579 body.is-mobile #MainMeshImage {
3580 width: 32px !important;
3581 height: 32px !important;
3582 object-fit: contain;
3583 border-radius: 6px;
3584 flex-shrink: 0;
3585 }
3586
3587 /* "More" dropdowns: mobileActionDropdown (My Users/Files) +
3588 mobileFileActionDropdown (Device Files tab) — shared styling
3589 Pill shape, item dividers, proper light/dark colours. */
3590 .mobileActionDropdown .dropdown-menu,
3591 .mobileFileActionDropdown .dropdown-menu {
3592 border-radius: 12px !important;
3593 overflow: hidden !important;
3594 box-shadow: 0 4px 24px rgba(0,0,0,0.28) !important;
3595 padding: 0 !important;
3596 min-width: 200px !important;
3597 }
3598 .mobileActionDropdown .dropdown-item,
3599 .mobileFileActionDropdown .dropdown-item {
3600 padding: 10px 16px !important;
3601 font-size: 15px !important;
3602 border-bottom: 1px solid rgba(0,0,0,0.08) !important;
3603 }
3604 .mobileActionDropdown .dropdown-item:last-child,
3605 .mobileFileActionDropdown .dropdown-item:last-child { border-bottom: none !important; }
3606 /* Dark mode */
3607 .night .mobileActionDropdown .dropdown-menu,
3608 .night .mobileFileActionDropdown .dropdown-menu {
3609 background: #1c1c1e !important;
3610 border-color: #3a3a3c !important;
3611 }
3612 .night .mobileActionDropdown .dropdown-item,
3613 .night .mobileFileActionDropdown .dropdown-item {
3614 color: #e5e5e7 !important;
3615 border-bottom-color: rgba(255,255,255,0.1) !important;
3616 background: transparent !important;
3617 }
3618 .night .mobileActionDropdown .dropdown-item:hover,
3619 .night .mobileActionDropdown .dropdown-item:focus,
3620 .night .mobileFileActionDropdown .dropdown-item:hover,
3621 .night .mobileFileActionDropdown .dropdown-item:focus {
3622 background: rgba(255,255,255,0.08) !important;
3623 color: #fff !important;
3624 }
3625
3626 /* Title bar text: consistent 1rem across ALL panel titles
3627 One rule covers both device sub-panels (p10–p19) and main-nav panels
3628 (p3–p6) so font size, colour and line-height are identical everywhere. */
3629 body.is-mobile #p3title .fs-4, body.is-mobile #p4title .fs-4,
3630 body.is-mobile #p5title .fs-4, body.is-mobile #p6title .fs-4,
3631 body.is-mobile #p10title .fs-4, body.is-mobile #p11title .fs-4,
3632 body.is-mobile #p12title .fs-4, body.is-mobile #p13title .fs-4,
3633 body.is-mobile #p14title .fs-4, body.is-mobile #p15title .fs-4,
3634 body.is-mobile #p16title .fs-4, body.is-mobile #p17title .fs-4,
3635 body.is-mobile #p19title .fs-4 {
3636 font-size: 1rem !important;
3637 color: #212529 !important;
3638 line-height: 1.25 !important;
3639 font-weight: 600 !important;
3640 }
3641
3642 /* All main-nav panels: flex-column so content fills height
3643 Covers My Events(3), My Users(4), My Files(5), My Server(6),
3644 Server Stats(40)/Trace(41)/Plugins(42),
3645 User Groups(50)/Recordings(52), My Reports(60) */
3646 body.is-mobile #p1,
3647 body.is-mobile #p3, body.is-mobile #p4,
3648 body.is-mobile #p5, body.is-mobile #p6,
3649 body.is-mobile #p20, body.is-mobile #p21,
3650 body.is-mobile #p30, body.is-mobile #p31,
3651 body.is-mobile #p40, body.is-mobile #p41,
3652 body.is-mobile #p42, body.is-mobile #p50,
3653 body.is-mobile #p51, body.is-mobile #p52,
3654 body.is-mobile #p60 {
3655 display: flex;
3656 flex-direction: column;
3657 height: 100% !important;
3658 overflow: hidden !important;
3659 }
3660 body.is-mobile #p1title, body.is-mobile #p3title,
3661 body.is-mobile #p4title, body.is-mobile #p5title,
3662 body.is-mobile #p40title, body.is-mobile #p41title,
3663 body.is-mobile #p42title, body.is-mobile #p50title,
3664 body.is-mobile #p52title, body.is-mobile #p60title { flex-shrink: 0 !important; }
3665 /* Events list fills remaining space */
3666 body.is-mobile #p3events {
3667 flex: 1 1 0 !important;
3668 min-height: 0 !important;
3669 overflow-y: auto !important;
3670 height: auto !important;
3671 max-height: none !important;
3672 }
3673 /* Users list fills remaining space */
3674 body.is-mobile #p3users {
3675 flex: 1 1 0 !important;
3676 min-height: 0 !important;
3677 overflow-y: auto !important;
3678 height: auto !important;
3679 max-height: none !important;
3680 }
3681 /* Files table fills remaining space */
3682 body.is-mobile #p5filetable {
3683 flex: 1 1 0 !important;
3684 min-height: 0 !important;
3685 height: auto !important;
3686 max-height: none !important;
3687 }
3688 /* My Server: p6info fills remaining space. Also handles xdevices for p1. */
3689 body.is-mobile #p6info,
3690 body.is-mobile #xdevices {
3691 flex: 1 1 0 !important;
3692 min-height: 0 !important;
3693 overflow-y: auto !important;
3694 height: auto !important;
3695 max-height: none !important;
3696 }
3697 /* Content areas that fill remaining flex height */
3698 body.is-mobile #p50groups,
3699 body.is-mobile #p52recordings,
3700 body.is-mobile #p41events,
3701 body.is-mobile #p20main,
3702 body.is-mobile #p21main,
3703 body.is-mobile #p30info,
3704 body.is-mobile #p31events,
3705 body.is-mobile #p51info {
3706 flex: 1 1 0 !important;
3707 min-height: 0 !important;
3708 overflow-y: auto !important;
3709 height: auto !important;
3710 max-height: none !important;
3711 }
3712 body.is-mobile #serverMainStats {
3713 flex: 1 1 0 !important;
3714 min-height: 0 !important;
3715 height: auto !important;
3716 max-height: none !important;
3717 }
3718
3719 /* User profile image: <picture> wraps a <img width="200" height="200">.
3720 Must target the inner img since the HTML attribute beats CSS on the picture. */
3721 body.is-mobile #MainUserImage img,
3722 body.is-mobile #MainUserImageEx {
3723 width: 64px !important;
3724 height: 64px !important;
3725 border-radius: 50%;
3726 object-fit: cover;
3727 }
3728 /* Group/mesh image in p20 (group detail): same issue — target inner img */
3729 body.is-mobile #p20main #MainMeshImage img,
3730 body.is-mobile #p20main #MainMeshImage {
3731 width: 40px !important;
3732 height: 40px !important;
3733 border-radius: 6px;
3734 object-fit: contain;
3735 }
3736
3737 /* Title text consistency: also cover the user/group detail panels */
3738 body.is-mobile #p40title .fs-4, body.is-mobile #p41title .fs-4,
3739 body.is-mobile #p42title .fs-4, body.is-mobile #p50title .fs-4,
3740 body.is-mobile #p51title .fs-4, body.is-mobile #p52title .fs-4,
3741 body.is-mobile #p60title .fs-4, body.is-mobile #p30title .fs-4,
3742 body.is-mobile #p31title .fs-4 {
3743 font-size: 1rem !important;
3744 color: #212529 !important;
3745 line-height: 1.25 !important;
3746 font-weight: 600 !important;
3747 }
3748
3749 body.is-mobile #MainSubMenuSpan,
3750 body.is-mobile #MeshSubMenuSpan,
3751 body.is-mobile #EventsSubMenuSpan,
3752 body.is-mobile #UserSubMenuSpan,
3753 body.is-mobile #UsersSubMenuSpan,
3754 body.is-mobile #ServerSubMenuSpan {
3755 position: fixed !important;
3756 bottom: 0 !important;
3757 left: 0 !important;
3758 right: 0 !important;
3759 top: auto !important;
3760 height: clamp(44px, 13vw, 54px) !important;
3761 z-index: 500 !important;
3762 overflow: hidden !important;
3763 background: #113962 !important;
3764 border-top: 1px solid #000 !important;
3765 display: flex;
3766 align-items: stretch;
3767 }
3768
3769 body.is-mobile #MainSubMenu,
3770 body.is-mobile #MeshSubMenu,
3771 body.is-mobile #EventsSubMenu,
3772 body.is-mobile #UserSubMenu,
3773 body.is-mobile #UsersSubMenu,
3774 body.is-mobile #ServerSubMenu {
3775 /* Become a flex item that fills the span, and a flex container for the tr row */
3776 display: flex !important;
3777 flex: 1 1 auto !important;
3778 width: 100% !important;
3779 height: clamp(44px, 13vw, 54px) !important;
3780 background: transparent !important;
3781 }
3782
3783 /* tbody is an auto-inserted anonymous box — make it layout-transparent */
3784 body.is-mobile #MainSubMenu tbody,
3785 body.is-mobile #MeshSubMenu tbody,
3786 body.is-mobile #EventsSubMenu tbody,
3787 body.is-mobile #UserSubMenu tbody,
3788 body.is-mobile #UsersSubMenu tbody,
3789 body.is-mobile #ServerSubMenu tbody { display: contents !important; }
3790
3791 /* tr becomes the flex item filling the table, and a flex container for the tds */
3792 body.is-mobile #MainSubMenu tr,
3793 body.is-mobile #MeshSubMenu tr,
3794 body.is-mobile #EventsSubMenu tr,
3795 body.is-mobile #UserSubMenu tr,
3796 body.is-mobile #UsersSubMenu tr,
3797 body.is-mobile #ServerSubMenu tr {
3798 display: flex !important;
3799 flex: 1 1 auto !important;
3800 width: 100% !important;
3801 align-items: stretch !important;
3802 }
3803
3804 body.is-mobile .topbar_td {
3805 /* display:flex WITHOUT !important — makes the td a flex container so
3806 align-items/justify-content center text, while still letting
3807 QV()'s inline display:none override it for permission-hidden tabs. */
3808 display: flex;
3809 flex: 1 1 0 !important;
3810 min-width: 0 !important;
3811 width: auto !important;
3812 align-items: center !important;
3813 justify-content: center !important;
3814 /* Adaptive height and font: scales with viewport width.
3815 clamp(min, preferred, max) — preferred grows with screen size via vw units. */
3816 height: clamp(44px, 13vw, 54px) !important;
3817 padding: 0 clamp(4px, 1.5vw, 10px) !important;
3818 color: rgba(255,255,255,0.75) !important;
3819 font-size: clamp(12px, 3.5vw, 15px) !important;
3820 border-right: 1px solid rgba(255,255,255,0.15);
3821 white-space: nowrap;
3822 overflow: hidden;
3823 text-overflow: ellipsis;
3824 }
3825
3826 /* Trailing spacer td — hide it on mobile so it doesn't eat space from the right */
3827 body.is-mobile .topbar_td_end {
3828 display: none !important;
3829 }
3830
3831 body.is-mobile .topbar_td.style3x {
3832 color: rgba(255,255,255,0.7) !important;
3833 background: transparent !important;
3834 }
3835
3836 body.is-mobile .topbar_td.style3x:hover,
3837 body.is-mobile .topbar_td.style3x:active {
3838 background: rgba(255,255,255,0.12) !important;
3839 color: #fff !important;
3840 }
3841
3842 body.is-mobile .topbar_td.style3sel {
3843 color: #fff !important;
3844 background: rgba(255,255,255,0.18) !important;
3845 border-bottom: 3px solid #fff !important;
3846 }
3847
3848 /* Classic Mobile tab shuffle: the active device sub-tab is hidden from the bottom bar.
3849 Hiding it frees up space so all other tabs remain visible without horizontal scroll.
3850 Using display:none !important to beat QV()'s inline style. */
3851 body.is-mobile .mob-active-tab { display: none !important; }
3852
3853 /* Collapse #topbar to 0 height on mobile */
3854 body.is-mobile #topbar {
3855 height: 0 !important;
3856 overflow: visible !important;
3857 min-height: 0 !important;
3858 padding: 0 !important;
3859 }
3860
3861 /* Hide the main navigation row — accessible via the hamburger menu on mobile */
3862 body.is-mobile #MainMenuSpan { display: none !important; }
3863
3864 /* Footer sits at bottom:0 z-index:1000 and covers the bottom tab bar */
3865 body.is-mobile #footer { display: none !important; }
3866
3867 /* Container: full width, no side borders/margins. */
3868 body.is-mobile #container {
3869 width: 100% !important;
3870 min-width: 0 !important;
3871 margin: 0 !important;
3872 border-left: none !important;
3873 border-right: none !important;
3874 padding-left: 0 !important;
3875 grid-template-columns: 0 1fr !important;
3876 grid-template-rows: 66px 0 auto 0 !important;
3877 }
3878
3879 /* Content area: pad bottom so the fixed 44px tab bar doesn't overlap content */
3880 /* column_l: zero horizontal padding so structural bars (toolbars, title bars,
3881 canvas, terminal) stretch edge-to-edge like a native app. Bottom padding
3882 reserves space for the fixed 44px tab bar. */
3883 body.is-mobile #column_l {
3884 /* Match padding-bottom to the tab bar height so nothing is hidden behind it */
3885 padding: 0 0 clamp(44px, 13vw, 54px) 0 !important;
3886 }
3887
3888 /* Content areas: 10px breathing room so text/cards/tables don't press against
3889 screen edges. Structural bars, canvas, terminal stay full-width (not listed). */
3890 body.is-mobile #p10info,
3891 body.is-mobile #p2info,
3892 body.is-mobile #p6info,
3893 body.is-mobile #p20main,
3894 body.is-mobile #p21main,
3895 body.is-mobile #p30info,
3896 body.is-mobile #p31events,
3897 body.is-mobile #p51info,
3898 body.is-mobile #xdevices,
3899 body.is-mobile #xdevicesmap,
3900 body.is-mobile #p3events,
3901 body.is-mobile #p3users,
3902 body.is-mobile #p50groups,
3903 body.is-mobile #serverMainStats,
3904 body.is-mobile #p5filetable,
3905 body.is-mobile #p13filetable,
3906 body.is-mobile #p16events,
3907 body.is-mobile #p17info,
3908 body.is-mobile #p15agentConsole,
3909 body.is-mobile #p15agentConsoleText {
3910 padding-left: 10px !important;
3911 padding-right: 10px !important;
3912 }
3913
3914 /* Details tab: section header icons are 64px — too large on a phone.
3915 The JS renders each section as <img src=details/xxx64.png width=64> in a
3916 <td style=width:64px> table cell. Shrink to 32px on mobile. */
3917 body.is-mobile #p17info img[src*="details/"] {
3918 width: 32px !important;
3919 height: 32px !important;
3920 }
3921 body.is-mobile #p17info td[style*="width:64px"] {
3922 width: 36px !important;
3923 }
3924
3925 /* Panel title bar: full-width, masthead-integrated
3926 #column_l has padding: 0 15px which makes everything 30px narrower than the
3927 screen. Negative margins break the title bars out to true full width.
3928 Back button: flush to left screen edge, masthead blue (#036), rounded on
3929 the right only — visually "attached" to the masthead above. */
3930
3931 body.is-mobile #p10title,
3932 body.is-mobile #p11title,
3933 body.is-mobile #p12title,
3934 body.is-mobile #p13title,
3935 body.is-mobile #p14title,
3936 body.is-mobile #p15title,
3937 body.is-mobile #p16title,
3938 body.is-mobile #p17title,
3939 body.is-mobile #p19title,
3940 body.is-mobile #p20title,
3941 body.is-mobile #p21title,
3942 body.is-mobile #p30title,
3943 body.is-mobile #p31title,
3944 body.is-mobile #p51title {
3945 padding: 0 12px 0 0 !important;
3946 background: #fff;
3947 min-height: 50px;
3948 position: relative !important;
3949 z-index: 1 !important;
3950 box-shadow: 0 1px 0 0 rgba(0,0,0,0.15);
3951 align-items: stretch !important;
3952 gap: 0;
3953 }
3954
3955 /* p20title is nested inside p20main which has padding-left/right: 10px.
3956 Negative margins cancel that padding so the title bar spans full width. */
3957 /* p20title and p6title live inside their scrollable parent (p20main / p6info)
3958 which has padding: 0 10px. Negative margins cancel that so they span full width. */
3959 body.is-mobile #p20title,
3960 body.is-mobile #p6title {
3961 margin-left: -10px !important;
3962 margin-right: -10px !important;
3963 }
3964
3965 /* Server console (p15) without the back button: add left indent to match
3966 other title bars that DO have the back button providing the indent.
3967 The JS adds class 'no-back-btn' to p15title when view is 115. */
3968 body.is-mobile #p15title.no-back-btn {
3969 padding-left: 15px !important;
3970 }
3971
3972 /* Option bars (areaHead) below the title bar: slightly tinted so they're
3973 visually distinct from the pure-white title bar. Overrides --sub-menu-bg
3974 (the white gradient) for a consistent look on all device panels. */
3975 body.is-mobile { --sub-menu-bg: #f0f2f5; }
3976
3977 /* Night mode: keep the white title bar (it reads well as a card against the
3978 dark column_l background). Only adjust the separator line colour. */
3979 body.night.is-mobile #p10title, body.night.is-mobile #p11title,
3980 body.night.is-mobile #p12title, body.night.is-mobile #p13title,
3981 body.night.is-mobile #p14title, body.night.is-mobile #p15title,
3982 body.night.is-mobile #p16title, body.night.is-mobile #p17title,
3983 body.night.is-mobile #p19title,
3984 body.night.is-mobile #p20title, body.night.is-mobile #p21title,
3985 body.night.is-mobile #p30title, body.night.is-mobile #p31title,
3986 body.night.is-mobile #p51title {
3987 box-shadow: 0 1px 0 0 #444 !important;
3988 }
3989
3990 /* Back button: flush to screen left edge, masthead colour, pill-shaped right side */
3991 /* Back buttons: NO display:flex !important — QV() hides them with
3992 element.style.display='none' (inline style). CSS !important would
3993 override that, keeping the button visible even when it should hide
3994 (e.g. server console reuses p15 but shouldn't show p15BackButton). */
3995 body.is-mobile #p10BackButton,
3996 body.is-mobile #p11BackButton,
3997 body.is-mobile #p12BackButton,
3998 body.is-mobile #p13BackButton,
3999 body.is-mobile #p14BackButton,
4000 body.is-mobile #p15BackButton,
4001 body.is-mobile #p16BackButton,
4002 body.is-mobile #p17BackButton,
4003 body.is-mobile #p19BackButton,
4004 body.is-mobile #p20BackButton,
4005 body.is-mobile #p21BackButton,
4006 body.is-mobile #p30BackButton,
4007 body.is-mobile #p31BackButton,
4008 body.is-mobile #p51BackButton {
4009 background: #036;
4010 border-radius: 0 0 12px 0;
4011 padding: 0 14px !important;
4012 margin: 0 12px 0 0;
4013 display: flex; /* no !important — allows QV() to override with display:none */
4014 align-items: center;
4015 align-self: stretch;
4016 flex-shrink: 0;
4017 }
4018
4019 body.is-mobile #p10BackButton .fa-square-caret-left,
4020 body.is-mobile #p11BackButton .fa-square-caret-left,
4021 body.is-mobile #p12BackButton .fa-square-caret-left,
4022 body.is-mobile #p13BackButton .fa-square-caret-left,
4023 body.is-mobile #p14BackButton .fa-square-caret-left,
4024 body.is-mobile #p15BackButton .fa-square-caret-left,
4025 body.is-mobile #p16BackButton .fa-square-caret-left,
4026 body.is-mobile #p17BackButton .fa-square-caret-left,
4027 body.is-mobile #p19BackButton .fa-square-caret-left,
4028 body.is-mobile #p20BackButton .fa-square-caret-left,
4029 body.is-mobile #p21BackButton .fa-square-caret-left,
4030 body.is-mobile #p30BackButton .fa-square-caret-left,
4031 body.is-mobile #p31BackButton .fa-square-caret-left,
4032 body.is-mobile #p51BackButton .fa-square-caret-left {
4033 color: #fff !important;
4034 font-size: 1.2rem !important;
4035 }
4036
4037 /* Title text: 1rem, dark, vertically centred, truncates with … when too long.
4038 flex:1 + min-width:0 allows the text to shrink in the flex row. */
4039 body.is-mobile #p10title .fs-4,
4040 body.is-mobile #p11title .fs-4,
4041 body.is-mobile #p12title .fs-4,
4042 body.is-mobile #p13title .fs-4,
4043 body.is-mobile #p14title .fs-4,
4044 body.is-mobile #p15title .fs-4,
4045 body.is-mobile #p16title .fs-4,
4046 body.is-mobile #p17title .fs-4,
4047 body.is-mobile #p19title .fs-4,
4048 body.is-mobile #p20title .fs-4,
4049 body.is-mobile #p21title .fs-4,
4050 body.is-mobile #p30title .fs-4,
4051 body.is-mobile #p31title .fs-4,
4052 body.is-mobile #p51title .fs-4 {
4053 font-size: 1rem !important;
4054 color: #212529 !important;
4055 line-height: 1.25;
4056 display: flex;
4057 align-items: center;
4058 flex: 1 1 0 !important;
4059 min-width: 0 !important;
4060 overflow: hidden !important;
4061 white-space: nowrap !important;
4062 text-overflow: ellipsis !important;
4063 }
4064
4065 /* Right-side icon containers in title bars: always a single horizontal row, never shrink. */
4066 body.is-mobile #devListToolbarViewIcons,
4067 body.is-mobile #devListToolbarViewIcons2,
4068 body.is-mobile #devListToolbarViewIcons3 {
4069 display: flex !important;
4070 flex-direction: row !important;
4071 align-items: center !important;
4072 gap: 6px !important;
4073 flex-shrink: 0 !important;
4074 white-space: nowrap !important;
4075 }
4076
4077 /* Hide group/mesh name: JS appends <span class="deviceGroupName"> - GroupName </span> */
4078 body.is-mobile .deviceGroupName { display: none !important; }
4079
4080 /* adjustPanels() computes panel heights from 100vh without knowing about the
4081 44px fixed tab bar on mobile. Override each panel to add 44px to the offset
4082 so content stops above the tab bar. !important beats the JS inline style. */
4083 body.is-mobile #xdevices,
4084 body.is-mobile #xdevicesmap { max-height: calc(100vh - 90px) !important; }
4085 /* adjustPanels() sizes panels using calc(100vh - N). These overrides keep the
4086 same N but use 100dvh so the browser URL bar is accounted for. */
4087 body.is-mobile #xdevices,
4088 body.is-mobile #xdevicesmap { max-height: calc(100dvh - 241px) !important; }
4089 body.is-mobile #p2info { height: calc(100dvh - 215px) !important;
4090 max-height: calc(100dvh - 215px) !important; }
4091 body.is-mobile #p3events { height: calc(100dvh - 245px) !important; }
4092 body.is-mobile #p3users,
4093 body.is-mobile #p50groups { max-height: calc(100dvh - 245px) !important; }
4094 body.is-mobile #serverMainStats { height: calc(100dvh - 245px) !important;
4095 max-height: calc(100dvh - 245px) !important; }
4096 body.is-mobile #p5filetable { height: calc(100dvh - 294px) !important; }
4097
4098 /* All device panels: flex column that fills column_l's content height.
4099 IMPORTANT: display and flex-direction must NOT have !important here.
4100 QV() hides panels with element.style.display='none' (inline style).
4101 CSS !important beats inline styles, so display:flex !important would
4102 make panels impossible to hide and break tab navigation. Without
4103 !important, inline style.display='none' correctly overrides the CSS. */
4104 body.is-mobile #p10,
4105 body.is-mobile #p11,
4106 body.is-mobile #p12,
4107 body.is-mobile #p13,
4108 body.is-mobile #p15,
4109 body.is-mobile #p16,
4110 body.is-mobile #p17 {
4111 display: flex;
4112 flex-direction: column;
4113 height: 100% !important;
4114 overflow: hidden !important;
4115 }
4116
4117 /* Title bars: never collapse */
4118 body.is-mobile #p10title, body.is-mobile #p11title, body.is-mobile #p12title,
4119 body.is-mobile #p13title, body.is-mobile #p15title,
4120 body.is-mobile #p16title, body.is-mobile #p17title { flex-shrink: 0 !important; }
4121
4122 /* p10 General: p10info fills remaining space and scrolls internally */
4123 body.is-mobile #p10info {
4124 flex: 1 1 0 !important;
4125 min-height: 0 !important;
4126 overflow-y: auto !important;
4127 height: auto !important;
4128 max-height: none !important;
4129 }
4130
4131 /* p11 Desktop: same flex-column pattern as Console.
4132 deskarea0 fills p11's remaining height as a flex column:
4133 deskarea1 (connect bar) -> flex-shrink:0, natural height
4134 deskarea3x (canvas) -> flex:1, fills all remaining space
4135 deskarea4 (controls bar) -> flex-shrink:0, always visible at bottom
4136 No !important on display/flex-direction so QV() can still hide deskarea0
4137 if ever needed, but !important is fine for the structural properties. */
4138 body.is-mobile #deskarea0 {
4139 flex: 1 1 0 !important;
4140 min-height: 0 !important;
4141 display: flex;
4142 flex-direction: column;
4143 overflow: hidden !important;
4144 }
4145 body.is-mobile #deskarea1 { flex-shrink: 0 !important; }
4146 body.is-mobile #deskarea4 { flex-shrink: 0 !important; }
4147 body.is-mobile #deskarea3x,
4148 body.is-mobile .room4submenu #deskarea3x {
4149 flex: 1 1 0 !important;
4150 min-height: 0 !important;
4151 height: auto !important;
4152 max-height: none !important;
4153 overflow: hidden !important;
4154 }
4155
4156 /* p12 Terminal: termTable (div) fills remaining space; inner <table> is
4157 absolutely positioned to span 100% so CSS table sizing distributes rows:
4158 areaHead row -> min-height; termarea3x row -> fills remainder; areaFoot -> min-height */
4159 body.is-mobile #termTable {
4160 flex: 1 1 0 !important;
4161 min-height: 0 !important;
4162 position: relative !important;
4163 overflow: hidden !important;
4164 }
4165 body.is-mobile #termTable > table {
4166 position: absolute !important;
4167 inset: 0 !important;
4168 height: 100% !important;
4169 width: 100% !important;
4170 }
4171 body.is-mobile #termarea3x {
4172 height: 100% !important;
4173 max-height: none !important;
4174 overflow: hidden !important;
4175 }
4176 body.is-mobile #termarea3xdiv { height: 100% !important; }
4177
4178 /* p15 Console: override CSS table display to flex-column so row heights
4179 distribute correctly. display:flex on <table>/<tbody> is well-supported
4180 and gives us proper flex semantics (no table-height-distribution quirks).
4181 Row order: areaHead(shrink) | areaProgress(shrink) | output(flex:1) | input(shrink) */
4182 body.is-mobile #consoleTable {
4183 display: flex !important;
4184 flex-direction: column !important;
4185 flex: 1 1 0 !important;
4186 min-height: 0 !important;
4187 overflow: hidden !important;
4188 width: 100% !important;
4189 }
4190 body.is-mobile #consoleTable > tbody {
4191 display: flex !important;
4192 flex-direction: column !important;
4193 flex: 1 1 0 !important;
4194 min-height: 0 !important;
4195 }
4196 /* All rows: block, don't grow (single-td rows so display:block is fine) */
4197 body.is-mobile #consoleTable > tbody > tr {
4198 display: block !important;
4199 flex-shrink: 0 !important;
4200 width: 100% !important;
4201 }
4202 /* td cells: when tr is display:block, td loses automatic table-cell width.
4203 Make all td elements full-width block elements. */
4204 body.is-mobile #consoleTable > tbody > tr > td {
4205 display: block !important;
4206 width: 100% !important;
4207 box-sizing: border-box !important;
4208 }
4209 /* Output row (3rd): fills all remaining space */
4210 body.is-mobile #consoleTable > tbody > tr:nth-child(3) {
4211 flex: 1 1 0 !important;
4212 min-height: 0 !important;
4213 display: flex !important;
4214 }
4215 /* p15agentConsole td: fills the flex output row, scrolls its content */
4216 body.is-mobile #p15agentConsole {
4217 flex: 1 1 0 !important;
4218 min-height: 0 !important;
4219 height: auto !important;
4220 max-height: none !important;
4221 overflow-y: auto !important;
4222 display: block !important;
4223 }
4224 body.is-mobile #p15agentConsoleText {
4225 height: auto !important;
4226 max-height: none !important;
4227 /* Base CSS hardcodes width:930px - overrides to full viewport width */
4228 width: 100% !important;
4229 max-width: 100% !important;
4230 /* pre defaults to white-space:pre which never wraps, causing horizontal scroll.
4231 pre-wrap preserves spacing/newlines but wraps at the container edge. */
4232 white-space: pre-wrap !important;
4233 word-break: break-all !important;
4234 overflow-x: hidden !important;
4235 box-sizing: border-box !important;
4236 }
4237
4238 /* p16 Events: events list fills remaining space after title + filter bar */
4239 body.is-mobile #p16events {
4240 flex: 1 1 0 !important;
4241 min-height: 0 !important;
4242 overflow-y: auto !important;
4243 height: auto !important;
4244 max-height: none !important;
4245 }
4246
4247 /* p17 Details: details content fills remaining space */
4248 body.is-mobile #p17info {
4249 flex: 1 1 0 !important;
4250 min-height: 0 !important;
4251 overflow-y: auto !important;
4252 height: auto !important;
4253 max-height: none !important;
4254 }
4255
4256 /* Prevent window-level scroll on mobile. */
4257 html.is-mobile,
4258 body.is-mobile {
4259 overflow: hidden !important;
4260 overscroll-behavior: none;
4261 }
4262
4263 /* Center the remote desktop canvas inside its container on mobile. */
4264 body.is-mobile #DeskParent {
4265 display: flex !important;
4266 align-items: center !important;
4267 justify-content: center !important;
4268 }
4269 body.is-mobile #Desk {
4270 position: relative !important;
4271 top: auto !important;
4272 bottom: auto !important;
4273 left: auto !important;
4274 right: auto !important;
4275 }
4276
4277 /* Canvas area: 66px masthead + ~35px deskarea1 + ~35px deskarea4 + 44px tab-bar padding = 180px.
4278 This makes total document height exactly 100vh with no page scroll needed. */
4279 body.is-mobile #deskarea3x {
4280 max-height: calc(100vh - 180px) !important;
4281 height: calc(100vh - 180px) !important;
4282 }
4283
4284 body.is-mobile .room4submenu #deskarea3x {
4285 max-height: calc(100vh - 180px) !important;
4286 height: calc(100vh - 180px) !important;
4287 }
4288
4289 body.is-mobile.fulldesk #deskarea3x {
4290 max-height: 100% !important;
4291 height: 100% !important;
4292 }
4293
4294 /* Fullscreen mode: hide both toolbars so the canvas fills the entire viewport.
4295 All controls move into the floating button panel. */
4296 body.is-mobile.fulldesk #p11title,
4297 body.is-mobile.fulldesk #deskarea1,
4298 body.is-mobile.fulldesk #deskarea4 { display: none !important; }
4299
4300 /* Floating button: hidden normally, only shown in fullscreen on mobile */
4301 body.is-mobile.fulldesk #deskFsBtn { display: flex !important; }
4302
4303 /* Top desktop toolbar: compact single row, horizontal scroll for overflow */
4304 /* deskarea1 (connect/disconnect bar): compact single row */
4305 body.is-mobile #deskarea1 {
4306 flex-wrap: nowrap !important;
4307 overflow-x: auto !important;
4308 -webkit-overflow-scrolling: touch;
4309 padding-left: 8px !important;
4310 padding-right: 8px !important;
4311 }
4312
4313 /* Hide secondary/non-mobile-friendly items from the top desktop toolbar.
4314 .deskareaicon (rotate L/R, view mode toggle) are kept — useful on mobile.
4315 #idx_deskFullBtn2 (exit fullscreen ✖) shown only when actually in fullscreen,
4316 vertically centred (float:right conflicts with flex parent). */
4317 body.is-mobile #autoconnectbutton1,
4318 body.is-mobile #connectbutton1rspan,
4319 body.is-mobile #connectbutton1hspan,
4320 body.is-mobile #desktopCustomUiButtons,
4321 body.is-mobile #desktopCustomUpperRight,
4322 body.is-mobile #deskFocusBtn { display: none !important; }
4323
4324 body.is-mobile #idx_deskFullBtn2 { display: none !important; }
4325 body.is-mobile.fulldesk #idx_deskFullBtn2 {
4326 display: flex !important;
4327 align-items: center !important;
4328 float: none !important;
4329 align-self: center !important;
4330 }
4331
4332 /* Bottom desktop toolbar: compact single row */
4333 body.is-mobile #deskarea4 {
4334 flex-wrap: nowrap !important;
4335 overflow-x: auto !important;
4336 -webkit-overflow-scrolling: touch;
4337 }
4338
4339 /* Keyboard shortcut selector: constrain width on mobile so it doesn't
4340 crowd the other buttons in the scrollable deskarea4 bar. */
4341 /* Keyboard shortcut selector: compact Bootstrap look on mobile */
4342 body.is-mobile #deskkeys {
4343 max-width: 110px !important;
4344 font-size: 11px !important;
4345 /* ensure Bootstrap form-select styling is applied */
4346 appearance: auto;
4347 }
4348
4349 /* Type and keyboard toggle moved into More panel - free toolbar space */
4350 body.is-mobile #DeskType { display: none !important; }
4351 body.is-mobile #DeskSoftKbdBtn { display: none !important; }
4352
4353 /* Move Actions + Settings into the More panel on mobile */
4354 body.is-mobile #deskActionsBtn,
4355 body.is-mobile #deskActionsSettings { display: none !important; }
4356
4357 /* Replace the desktop icon spray with the More button on mobile */
4358 body.is-mobile #deskarea4Icons { display: none !important; }
4359 body.is-mobile #deskMobileActions { display: flex !important; flex-shrink: 0 !important; }
4360 body.is-mobile #deskMobileActions .btn { white-space: nowrap !important; }
4361 /* Clipboard dialog button moved into the More panel on mobile */
4362 body.is-mobile #DeskClip { display: none !important; }
4363
4364
4365
4366 /* fulldesk = remote-desktop fullscreen mode (body class added by deskToggleFull()).
4367 NOT 'fullscreen' - that class is always on body in the Modern UI (it is the
4368 normal grid layout mode) and would apply these rules to every mobile page view,
4369 making column_l overflow-y:auto and creating a double scrollbar on all views. */
4370 body.is-mobile.fulldesk #container {
4371 width: 100% !important;
4372 min-width: 0 !important;
4373 padding-left: 0 !important;
4374 display: flex !important;
4375 flex-direction: column !important;
4376 }
4377
4378 body.is-mobile.fulldesk #column_l {
4379 flex: 1 1 0 !important;
4380 min-height: 0 !important;
4381 overflow-y: auto !important;
4382 }
4383
4384 /* Mobile landscape: reclaim vertical space
4385 'is-landscape' is toggled by JS on resize so deskAdjust() is also called,
4386 ensuring the canvas recalculates dimensions immediately on rotation. */
4387
4388 /* Hide panel title bars in landscape — saves ~50px; back nav still works
4389 via the browser gesture or rotating back to portrait. */
4390 body.is-mobile.is-landscape #p11title,
4391 body.is-mobile.is-landscape #p12title,
4392 body.is-mobile.is-landscape #p13title { display: none !important; }
4393
4394 /* Compact the connect/disconnect toolbar to save a few more pixels */
4395 body.is-mobile.is-landscape #deskarea1 {
4396 min-height: 0 !important;
4397 padding-top: 2px !important;
4398 padding-bottom: 2px !important;
4399 }
4400
4401 /* Canvas scale-fill in landscape fullscreen.
4402 deskAdjust() and onScreenSizeChange set portrait-sized pixel values via
4403 inline styles. !important in CSS always beats inline styles, so the canvas
4404 is permanently 100%x100% of DeskParent whenever both classes are present —
4405 regardless of how many times deskAdjust() fires. */
4406 body.is-mobile.is-landscape.fulldesk #Desk {
4407 width: 100% !important;
4408 height: 100% !important;
4409 }
4410 body.is-mobile.is-landscape.fulldesk #DeskParent {
4411 overflow: hidden !important;
4412 }
4413
4414 /* Native 1:1 zoom: DeskParent becomes content-sized (native resolution) inside
4415 deskarea3x. JS in dtouchmove manually sets deskarea3x.scrollLeft/Top to pan.
4416 overflow:hidden on deskarea3x is kept (base CSS) — JS can still scroll it. */
4417 body.is-mobile.native-zoom #DeskParent {
4418 position: relative !important;
4419 display: block !important;
4420 width: var(--native-desk-w, 100%) !important;
4421 height: var(--native-desk-h, 100%) !important;
4422 }
4423 body.is-mobile.native-zoom #Desk {
4424 width: 100% !important;
4425 height: 100% !important;
4426 }
4427
4428 /* Mobile terminal */
4429
4430 /* deskAdjust() sets termarea3x height via inline style based on desktop layout.
4431 On mobile the offsets are different: 66px masthead + ~50px p12title +
4432 ~44px areaHead + ~44px areaFoot + 44px bottom-tab-bar = 248px.
4433 !important beats the inline style set by JS. */
4434 body.is-mobile #termarea3x {
4435 height: calc(100vh - 252px) !important;
4436 }
4437 body.is-mobile #termarea3xdiv {
4438 height: calc(100vh - 252px) !important;
4439 }
4440
4441 /* Terminal toolbar and footer: scroll horizontally instead of wrapping rows */
4442 body.is-mobile #termTable .areaHead,
4443 body.is-mobile #termTable .areaFoot {
4444 flex-wrap: nowrap !important;
4445 overflow-x: auto !important;
4446 -webkit-overflow-scrolling: touch;
4447 align-items: center !important;
4448 }
4449
4450 /* Files panel toolbar: same no-wrap treatment as Terminal (both rows) */
4451 body.is-mobile #p13toolbar .areaHead,
4452 body.is-mobile #p13toolbar .areaHead2 {
4453 flex-wrap: nowrap !important;
4454 overflow-x: auto !important;
4455 -webkit-overflow-scrolling: touch;
4456 align-items: center !important;
4457 }
4458
4459 /* Files "More" dropdown: scrollable list so all items are reachable */
4460 body.is-mobile .mobileFileActionDropdown .dropdown-menu {
4461 max-height: 50vh !important;
4462 overflow-y: auto !important;
4463 overflow-x: hidden !important;
4464 }
4465
4466 /* On mobile, hide the Actions button from Terminal/Files toolbars — it wraps
4467 on small screens and is accessible via device actions elsewhere. */
4468 body.is-mobile #termActionsBtn,
4469 body.is-mobile #filesActionsBtn { display: none !important; }
4470
4471 /* Tab key button: hidden everywhere except mobile */
4472 body.is-mobile #tabbutton { display: inline-flex !important; }
4473
4474 /* Mobile files panel */
4475
4476 /* p13filetable: flex:1 fills all remaining space in the p13 flex column,
4477 replacing the fragile fixed-height calc. adjustPanels() inline style is
4478 cancelled by height:auto !important. */
4479 body.is-mobile #p13filetable {
4480 flex: 1 1 0 !important;
4481 min-height: 0 !important;
4482 height: auto !important;
4483 max-height: none !important;
4484 }
4485
4486 /* p13toolbarBottom: the status bar below the file list (shows "3 files: 0 bytes").
4487 style6 uses a white gradient background that appears as a visible bar in dark mode
4488 on both desktop and mobile. Transparent inherits the panel background,
4489 matching both light and dark themes. */
4490 #p13toolbarBottom .style6 {
4491 background: transparent !important;
4492 }
4493
4494 /* These apply on any narrow viewport (desktop narrow window, tablet, phone). */
4495 @media (max-width: 768px) {
4496 #container,
4497 .fullscreen #container,
4498 #column_l,
4499 .fullscreen #column_l {
4500 width: 100% !important;
4501 min-width: 0 !important;
4502 max-width: 100% !important;
4503 box-sizing: border-box;
4504 /* overflow: hidden (not overflow-x: hidden) — setting only one axis
4505 forces the other to 'auto' per CSS spec, creating an unwanted scrollbar */
4506 overflow: hidden;
4507 }
4508
4509 /* masthead needs overflow:visible so its dropdown menu can extend below it */
4510 #masthead {
4511 width: 100% !important;
4512 min-width: 0 !important;
4513 max-width: 100% !important;
4514 box-sizing: border-box;
4515 overflow: visible;
4516 }
4517
4518 .fullscreen #container {
4519 grid-template-columns: 70px minmax(0, 1fr);
4520 }
4521
4522 #masthead .title {
4523 font-size: 22px;
4524 padding-top: 4px;
4525 }
4526
4527 #masthead .title2 {
4528 font-size: 12px;
4529 padding-top: 2px;
4530 padding-bottom: 10px;
4531 }
4532
4533 .masthead-left {
4534 gap: 0.5rem;
4535 max-width: calc(100% - 120px);
4536 }
4537
4538 .masthead-titles-container {
4539 flex-direction: column;
4540 align-items: flex-start;
4541 gap: 0;
4542 }
4543
4544 #masthead {
4545 background-size: 18rem 2.5rem !important;
4546 background-position: center left;
4547 background-repeat: no-repeat !important;
4548 padding-right: 20px !important;
4549 }
4550
4551 #p10info {
4552 overflow-x: hidden !important;
4553 }
4554
4555 #p10info > table {
4556 table-layout: fixed;
4557 }
4558
4559 #p10info > table > tbody > tr > td:first-child {
4560 width: calc(100% - 140px) !important;
4561 }
4562
4563 #p10info > table > tbody > tr > td:nth-child(2),
4564 #p10info > table > tbody > tr > td:nth-child(3) {
4565 width: 0 !important;
4566 }
4567
4568 #p10info > table > tbody > tr > td:nth-child(4) {
4569 width: 140px !important;
4570 }
4571
4572 #p10info #MainComputerImage {
4573 width: 120px;
4574 height: 120px;
4575 }
4576
4577 #p13toolbar,
4578 #p13toolbar tbody,
4579 #p13toolbar tr,
4580 #p13toolbar .areaHead,
4581 #p13toolbar .areaHead2 {
4582 display: block;
4583 width: 100%;
4584 max-width: 100%;
4585 box-sizing: border-box;
4586 }
4587
4588 #p13toolbar .areaHead,
4589 #p13toolbar .areaHead2,
4590 #p13toolbar .areaHead > .d-flex,
4591 #p13toolbar .areaHead2 > .d-flex,
4592 #p4toolbarActions,
4593 #p4toolbarActions > .d-flex,
4594 #p5filehead,
4595 #p5filehead > .d-flex {
4596 display: flex !important;
4597 flex-wrap: wrap !important;
4598 min-width: 0;
4599 row-gap: 4px;
4600 }
4601
4602 #p13toolbar .areaHead {
4603 column-gap: 4px;
4604 }
4605
4606 #p13toolbar .areaHead > .d-flex.ms-auto {
4607 margin-left: 0 !important;
4608 }
4609
4610 #p13toolbar .areaHead input,
4611 #p13toolbar .areaHead button,
4612 #p13toolbar .areaHead2 input,
4613 #p13toolbar .areaHead2 button,
4614 #p4toolbarActions input,
4615 #p4toolbarActions button,
4616 #p5filehead input,
4617 #p5filehead button {
4618 margin-bottom: 4px;
4619 }
4620
4621 #p5toolbar,
4622 #p5toolbar tbody,
4623 #p5toolbar tr,
4624 #p5filehead,
4625 #p5filesubhead {
4626 display: block;
4627 width: 100%;
4628 max-width: 100%;
4629 box-sizing: border-box;
4630 }
4631
4632 #UserSearchInput {
4633 max-width: 150px;
4634 }
4635
4636 .desktopFileAction,
4637 .desktopAction {
4638 display: none !important;
4639 }
4640
4641 .mobileFileActionDropdown,
4642 .mobileActionDropdown {
4643 display: inline-flex !important;
4644 }
4645
4646 #MainMeshImage /*, #p2AccountImageFrame */ {
4647 /* text-align: center !important; */
4648 float: none !important;
4649 width: 100px !important;
4650 height: 100px !important;
4651 }
4652
4653 #p2AccountImageFrame {
4654 float: none !important;
4655 text-align: left;
4656 }
4657
4658 #userDropdown {
4659 display: flex !important;
4660 }
4661
4662 #userDropdownName {
4663 display: none !important;
4664 }
4665
4666 .userDropdownMobileOnly {
4667 display: flex !important;
4668 }
4669
4670 #userDropdownMenuDivider.userDropdownMobileOnly {
4671 display: block;
4672 }
4673
4674 .userDropdownSubmenu {
4675 position: static !important;
4676 right: auto !important;
4677 left: auto !important;
4678 top: auto !important;
4679 margin: 0 !important;
4680 width: 100% !important;
4681 min-width: 100% !important;
4682 box-shadow: none !important;
4683 background-color: transparent !important;
4684 padding: 0 !important;
4685 border-radius: 0 !important;
4686 }
4687
4688 .userDropdownUISettings {
4689 position: relative;
4690 }
4691
4692 .userDropdownMenuItem:hover {
4693 border-radius: unset !important;
4694 }
4695
4696 .notifiyBox {
4697 right: 3.5rem;
4698 }
4699
4700 .notifiyBox:after {
4701 margin-right: 40px;
4702 }
4703
4704 .notifiyBox:before {
4705 content: none;
4706 }
4707
4708 body {
4709 min-width: 0 !important;
4710 }
4711 }
4712 /* css fixes for select2 */
4713 /* .select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__rendered {
4714 display: inline;
4715 }
4716
4717 .select2-container--bootstrap-5 .select2-selection--multiple .select2-selection__rendered .select2-selection__choice {
4718 display: inline-flex;
4719 }
4720
4721 .select2-container--bootstrap-5 .select2-selection--multiple .select2-search {
4722 display: inline !important;
4723 } */
4724 /* User Dropdown Menu Styles */
4725 #userDropdown {
4726 display: flex;
4727 align-items: center;
4728 z-index: 1000;
4729 background: #00000026;
4730 border-radius: 4px;
4731 }
4732 #userDropdownButton {
4733 display: flex;
4734 align-items: center;
4735 cursor: pointer;
4736 padding: 6px 8px;
4737 border-radius: 4px;
4738 height: 40px;
4739 }
4740
4741 #userDropdownButton:hover {
4742 background-color: rgba(255, 255, 255, 0.1);
4743 }
4744
4745 #userDropdownImage {
4746 width: 28px;
4747 height: 28px;
4748 border-radius: 50%;
4749 margin-right: 8px;
4750 border: 2px solid rgba(255, 255, 255, 0.3);
4751 object-fit: cover;
4752 }
4753
4754 #userDropdownName {
4755 margin-right: 6px;
4756 white-space: nowrap;
4757 }
4758
4759 #userDropdownArrow {
4760 font-size: 12px;
4761 }
4762
4763 #userDropdown {
4764 position: relative;
4765 }
4766
4767 #userDropdownMenu {
4768 display: none;
4769 position: absolute;
4770 top: 100%;
4771 right: 0;
4772 background-color: #f3f3f3;
4773 box-shadow: 0 0 12px #0000004d;
4774 border-radius: 10px;
4775 z-index: 10000;
4776 min-width: 200px;
4777 margin-top: 4px;
4778 transform: translateX(0);
4779 font-family: sans-serif;
4780 font-size: small;
4781 }
4782
4783
4784
4785 #userDropdownMenuContainer {
4786 padding: 6px 0;
4787 }
4788
4789 .userDropdownMenuItem {
4790 display: flex;
4791 align-items: center;
4792 gap: 10px;
4793 padding: 10px 12px;
4794 cursor: pointer;
4795 color: var(--bs-body-color);
4796 white-space: nowrap;
4797 transition: background-color 0.15s ease;
4798 font-size: small;
4799 }
4800
4801 .userDropdownMenuItem:hover {
4802 background-color: #8181814a;
4803 border-radius: 4px;
4804 }
4805
4806 .userDropdownMenuIcon {
4807 width: 18px;
4808 height: 18px;
4809 object-fit: contain;
4810 flex-shrink: 0;
4811 }
4812
4813 .userDropdownMenuItem span {
4814 flex-grow: 1;
4815 text-align: left;
4816 font-size: small;
4817 line-height: 1.2;
4818 }
4819
4820 #userDropdownMenuDivider {
4821 border-top: var(--bs-border-width) solid #000000;
4822 opacity: .25;
4823 margin: 4px 0;
4824 }
4825
4826 .night #userDropdownMenuDivider {
4827 border-top: var(--bs-border-width) solid;
4828 }
4829
4830 .userDropdownUISettings {
4831 position: relative;
4832 }
4833
4834 .userDropdownSubmenu {
4835 position: absolute;
4836 right: 96%;
4837 top: 0;
4838 background-color: #f3f3f3;
4839 box-shadow: 0 0 12px #0000004d;
4840 border-radius: 10px;
4841 margin-right: 4px;
4842 min-width: 200px;
4843 z-index: 10001;
4844 padding: 6px 0;
4845 font-size: small;
4846 display: none;
4847 }
4848
4849 .userDropdownSubmenu .userDropdownMenuItem {
4850 display: flex;
4851 align-items: center;
4852 gap: 10px;
4853 padding: 10px 12px;
4854 }
4855
4856 .userDropdownSubmenu .userDropdownMenuItem:hover {
4857 background-color: #8181814a;
4858 border-radius: 4px;
4859 }
4860
4861 .userDropdownSubmenu .userDropdownMenuIcon {
4862 width: 18px;
4863 height: 18px;
4864 object-fit: contain;
4865 flex-shrink: 0;
4866 }
4867
4868 .userDropdownMobileOnly {
4869 display: none;
4870 }
4871
4872 .userDropdownUISettings img:last-child {
4873 margin-left: auto;
4874 width: 14px;
4875 height: 14px;
4876 opacity: 0.7;
4877 }
4878 .night #userDropdownMenu, .night .userDropdownSubmenu {
4879 background-color: #292c2c;
4880 }
4881
4882 .userDropdownUISettings .fa-chevron-right {
4883 transition: transform 0.3s ease;
4884 transform: rotate(0deg);
4885 }
4886
4887 .userDropdownUISettings .fa-chevron-right.rotated {
4888 transform: rotate(90deg);
4889 }
4890
4891 /* Icon customization modal preview */
4892 .icon-preview-container {
4893 align-items: center;
4894 }
4895
4896 .icon-preview-item {
4897 width: 64px;
4898 height: 64px;
4899 object-fit: contain;
4900 }
4901
4902 @media (min-width: 769px) {
4903 .userDropdownSubmenu {
4904 position: absolute;
4905 display: none;
4906 opacity: 0;
4907 transform: translateX(12px);
4908 transition: opacity 0.2s ease, transform 0.3s ease;
4909 }
4910
4911 .userDropdownSubmenu.show {
4912 display: block;
4913 opacity: 1;
4914 transform: translateX(0);
4915 }
4916 }