master
css 922 lines 18.6 KB
Raw
1 /*
2 * noVNC base CSS
3 * Copyright (C) 2019 The noVNC Authors
4 * noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
5 * This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
6 */
7
8 /*
9 * Z index layers:
10 *
11 * 0: Main screen
12 * 10: Control bar
13 * 50: Transition blocker
14 * 60: Connection popups
15 * 100: Status bar
16 * ...
17 * 1000: Javascript crash
18 * ...
19 * 10000: Max (used for polyfills)
20 */
21
22 /*
23 * State variables (set on :root):
24 *
25 * noVNC_loading: Page is still loading
26 * noVNC_connecting: Connecting to server
27 * noVNC_reconnecting: Re-establishing a connection
28 * noVNC_connected: Connected to server (most common state)
29 * noVNC_disconnecting: Disconnecting from server
30 */
31
32 :root {
33 font-family: sans-serif;
34 }
35
36 body {
37 margin:0;
38 padding:0;
39 /*Background image with light grey curve.*/
40 background-color:#494949;
41 background-repeat:no-repeat;
42 background-position:right bottom;
43 height:100%;
44 touch-action: none;
45 }
46
47 html {
48 height:100%;
49 }
50
51 .noVNC_only_touch.noVNC_hidden {
52 display: none;
53 }
54
55 .noVNC_disabled {
56 color: rgb(128, 128, 128);
57 }
58
59 /* ----------------------------------------
60 * Spinner
61 * ----------------------------------------
62 */
63
64 .noVNC_spinner {
65 position: relative;
66 }
67 .noVNC_spinner, .noVNC_spinner::before, .noVNC_spinner::after {
68 width: 10px;
69 height: 10px;
70 border-radius: 2px;
71 box-shadow: -60px 10px 0 rgba(255, 255, 255, 0);
72 animation: noVNC_spinner 1.0s linear infinite;
73 }
74 .noVNC_spinner::before {
75 content: "";
76 position: absolute;
77 left: 0px;
78 top: 0px;
79 animation-delay: -0.1s;
80 }
81 .noVNC_spinner::after {
82 content: "";
83 position: absolute;
84 top: 0px;
85 left: 0px;
86 animation-delay: 0.1s;
87 }
88 @keyframes noVNC_spinner {
89 0% { box-shadow: -60px 10px 0 rgba(255, 255, 255, 0); width: 20px; }
90 25% { box-shadow: 20px 10px 0 rgba(255, 255, 255, 1); width: 10px; }
91 50% { box-shadow: 60px 10px 0 rgba(255, 255, 255, 0); width: 10px; }
92 }
93
94 /* ----------------------------------------
95 * WebKit centering hacks
96 * ----------------------------------------
97 */
98
99 .noVNC_center {
100 /*
101 * This is a workaround because webkit misrenders transforms and
102 * uses non-integer coordinates, resulting in blurry content.
103 * Ideally we'd use "top: 50%; transform: translateY(-50%);" on
104 * the objects instead.
105 */
106 display: flex;
107 align-items: center;
108 justify-content: center;
109 position: fixed;
110 top: 0;
111 left: 0;
112 width: 100%;
113 height: 100%;
114 pointer-events: none;
115 }
116 .noVNC_center > * {
117 pointer-events: auto;
118 }
119 .noVNC_vcenter {
120 display: flex !important;
121 flex-direction: column;
122 justify-content: center;
123 position: fixed;
124 top: 0;
125 left: 0;
126 height: 100%;
127 margin: 0 !important;
128 padding: 0 !important;
129 pointer-events: none;
130 }
131 .noVNC_vcenter > * {
132 pointer-events: auto;
133 }
134
135 /* ----------------------------------------
136 * Layering
137 * ----------------------------------------
138 */
139
140 .noVNC_connect_layer {
141 z-index: 60;
142 }
143
144 /* ----------------------------------------
145 * Fallback error
146 * ----------------------------------------
147 */
148
149 #noVNC_fallback_error {
150 z-index: 1000;
151 visibility: hidden;
152 /* Put a dark background in front of everything but the error,
153 and don't let mouse events pass through */
154 background: rgba(0, 0, 0, 0.8);
155 pointer-events: all;
156 }
157 #noVNC_fallback_error.noVNC_open {
158 visibility: visible;
159 }
160
161 #noVNC_fallback_error > div {
162 max-width: calc(100vw - 30px - 30px);
163 max-height: calc(100vh - 30px - 30px);
164 overflow: auto;
165
166 padding: 15px;
167
168 transition: 0.5s ease-in-out;
169
170 transform: translateY(-50px);
171 opacity: 0;
172
173 text-align: center;
174 font-weight: bold;
175 color: #fff;
176
177 border-radius: 10px;
178 box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5);
179 background: rgba(200,55,55,0.8);
180 }
181 #noVNC_fallback_error.noVNC_open > div {
182 transform: translateY(0);
183 opacity: 1;
184 }
185
186 #noVNC_fallback_errormsg {
187 font-weight: normal;
188 }
189
190 #noVNC_fallback_errormsg .noVNC_message {
191 display: inline-block;
192 text-align: left;
193 font-family: monospace;
194 white-space: pre-wrap;
195 }
196
197 #noVNC_fallback_error .noVNC_location {
198 font-style: italic;
199 font-size: 0.8em;
200 color: rgba(255, 255, 255, 0.8);
201 }
202
203 #noVNC_fallback_error .noVNC_stack {
204 padding: 10px;
205 margin: 10px;
206 font-size: 0.8em;
207 text-align: left;
208 font-family: monospace;
209 white-space: pre;
210 border: 1px solid rgba(0, 0, 0, 0.5);
211 background: rgba(0, 0, 0, 0.2);
212 overflow: auto;
213 }
214
215 /* ----------------------------------------
216 * Control Bar
217 * ----------------------------------------
218 */
219
220 #noVNC_control_bar_anchor {
221 /* The anchor is needed to get z-stacking to work */
222 position: fixed;
223 z-index: 10;
224
225 transition: 0.5s ease-in-out;
226
227 /* Edge misrenders animations wihthout this */
228 transform: translateX(0);
229 }
230 :root.noVNC_connected #noVNC_control_bar_anchor.noVNC_idle {
231 opacity: 0.8;
232 }
233 #noVNC_control_bar_anchor.noVNC_right {
234 left: auto;
235 right: 0;
236 }
237
238 #noVNC_control_bar {
239 position: relative;
240 left: -100%;
241
242 transition: 0.5s ease-in-out;
243
244 background-color: rgb(110, 132, 163);
245 border-radius: 0 10px 10px 0;
246
247 user-select: none;
248 -webkit-user-select: none;
249 -webkit-touch-callout: none; /* Disable iOS image long-press popup */
250 }
251 #noVNC_control_bar.noVNC_open {
252 box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5);
253 left: 0;
254 }
255 #noVNC_control_bar::before {
256 /* This extra element is to get a proper shadow */
257 content: "";
258 position: absolute;
259 z-index: -1;
260 height: 100%;
261 width: 30px;
262 left: -30px;
263 transition: box-shadow 0.5s ease-in-out;
264 }
265 #noVNC_control_bar.noVNC_open::before {
266 box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5);
267 }
268 .noVNC_right #noVNC_control_bar {
269 left: 100%;
270 border-radius: 10px 0 0 10px;
271 }
272 .noVNC_right #noVNC_control_bar.noVNC_open {
273 left: 0;
274 }
275 .noVNC_right #noVNC_control_bar::before {
276 visibility: hidden;
277 }
278
279 #noVNC_control_bar_handle {
280 position: absolute;
281 left: -15px;
282 top: 0;
283 transform: translateY(35px);
284 width: calc(100% + 30px);
285 height: 50px;
286 z-index: -1;
287 cursor: pointer;
288 border-radius: 5px;
289 background-color: rgb(83, 99, 122);
290 background-image: url("../images/handle_bg.svg");
291 background-repeat: no-repeat;
292 background-position: right;
293 box-shadow: 3px 3px 0px rgba(0, 0, 0, 0.5);
294 }
295 #noVNC_control_bar_handle:after {
296 content: "";
297 transition: transform 0.5s ease-in-out;
298 background: url("../images/handle.svg");
299 position: absolute;
300 top: 22px; /* (50px-6px)/2 */
301 right: 5px;
302 width: 5px;
303 height: 6px;
304 }
305 #noVNC_control_bar.noVNC_open #noVNC_control_bar_handle:after {
306 transform: translateX(1px) rotate(180deg);
307 }
308 :root:not(.noVNC_connected) #noVNC_control_bar_handle {
309 display: none;
310 }
311 .noVNC_right #noVNC_control_bar_handle {
312 background-position: left;
313 }
314 .noVNC_right #noVNC_control_bar_handle:after {
315 left: 5px;
316 right: 0;
317 transform: translateX(1px) rotate(180deg);
318 }
319 .noVNC_right #noVNC_control_bar.noVNC_open #noVNC_control_bar_handle:after {
320 transform: none;
321 }
322 /* Larger touch area for the handle, used when a touch screen is available */
323 #noVNC_control_bar_handle div {
324 position: absolute;
325 right: -35px;
326 top: 0;
327 width: 50px;
328 height: 100%;
329 display: none;
330 }
331 @media (any-pointer: coarse) {
332 #noVNC_control_bar_handle div {
333 display: initial;
334 }
335 }
336 .noVNC_right #noVNC_control_bar_handle div {
337 left: -35px;
338 right: auto;
339 }
340
341 #noVNC_control_bar > .noVNC_scroll {
342 max-height: 100vh; /* Chrome is buggy with 100% */
343 overflow-x: hidden;
344 overflow-y: auto;
345 padding: 0 10px;
346 }
347
348 #noVNC_control_bar > .noVNC_scroll > * {
349 display: block;
350 margin: 10px auto;
351 }
352
353 /* Control bar hint */
354 #noVNC_hint_anchor {
355 position: fixed;
356 right: -50px;
357 left: auto;
358 }
359 #noVNC_control_bar_anchor.noVNC_right + #noVNC_hint_anchor {
360 left: -50px;
361 right: auto;
362 }
363 #noVNC_control_bar_hint {
364 position: relative;
365 transform: scale(0);
366 width: 100px;
367 height: 50%;
368 max-height: 600px;
369
370 visibility: hidden;
371 opacity: 0;
372 transition: 0.2s ease-in-out;
373 background: transparent;
374 box-shadow: 0 0 10px black, inset 0 0 10px 10px rgba(110, 132, 163, 0.8);
375 border-radius: 10px;
376 transition-delay: 0s;
377 }
378 #noVNC_control_bar_hint.noVNC_active {
379 visibility: visible;
380 opacity: 1;
381 transition-delay: 0.2s;
382 transform: scale(1);
383 }
384 #noVNC_control_bar_hint.noVNC_notransition {
385 transition: none !important;
386 }
387
388 /* Control bar buttons */
389 #noVNC_control_bar .noVNC_button {
390 padding: 4px 4px;
391 vertical-align: middle;
392 border:1px solid rgba(255, 255, 255, 0.2);
393 border-radius: 6px;
394 background-color: transparent;
395 background-image: unset; /* we don't want the gradiant from input.css */
396 }
397 #noVNC_control_bar .noVNC_button.noVNC_selected {
398 border-color: rgba(0, 0, 0, 0.8);
399 background-color: rgba(0, 0, 0, 0.5);
400 }
401 #noVNC_control_bar .noVNC_button.noVNC_selected:not(:disabled):hover {
402 border-color: rgba(0, 0, 0, 0.4);
403 background-color: rgba(0, 0, 0, 0.2);
404 }
405 #noVNC_control_bar .noVNC_button:not(:disabled):hover {
406 background-color: rgba(255, 255, 255, 0.2);
407 }
408 #noVNC_control_bar .noVNC_button:not(:disabled):active {
409 padding-top: 5px;
410 padding-bottom: 3px;
411 }
412 #noVNC_control_bar .noVNC_button.noVNC_hidden {
413 display: none !important;
414 }
415
416 /* Android browsers don't properly update hover state if touch events are
417 * intercepted, like they are when clicking on the remote screen. */
418 @media (any-pointer: coarse) {
419 #noVNC_control_bar .noVNC_button:not(:disabled):hover {
420 background-color: transparent;
421 }
422 #noVNC_control_bar .noVNC_button.noVNC_selected:not(:disabled):hover {
423 border-color: rgba(0, 0, 0, 0.8);
424 background-color: rgba(0, 0, 0, 0.5);
425 }
426 }
427
428
429 /* Panels */
430 .noVNC_panel {
431 transform: translateX(25px);
432
433 transition: 0.5s ease-in-out;
434
435 box-sizing: border-box; /* so max-width don't have to care about padding */
436 max-width: calc(100vw - 75px - 25px); /* minus left and right margins */
437 max-height: 100vh; /* Chrome is buggy with 100% */
438 overflow-x: hidden;
439 overflow-y: auto;
440
441 visibility: hidden;
442 opacity: 0;
443
444 padding: 15px;
445
446 background: #fff;
447 border-radius: 10px;
448 color: #000;
449 border: 2px solid #E0E0E0;
450 box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5);
451 }
452 .noVNC_panel.noVNC_open {
453 visibility: visible;
454 opacity: 1;
455 transform: translateX(75px);
456 }
457 .noVNC_right .noVNC_vcenter {
458 left: auto;
459 right: 0;
460 }
461 .noVNC_right .noVNC_panel {
462 transform: translateX(-25px);
463 }
464 .noVNC_right .noVNC_panel.noVNC_open {
465 transform: translateX(-75px);
466 }
467
468 .noVNC_panel > * {
469 display: block;
470 margin: 10px auto;
471 }
472 .noVNC_panel > *:first-child {
473 margin-top: 0 !important;
474 }
475 .noVNC_panel > *:last-child {
476 margin-bottom: 0 !important;
477 }
478
479 .noVNC_panel hr {
480 border: none;
481 border-top: 1px solid rgb(192, 192, 192);
482 }
483
484 .noVNC_panel label {
485 display: block;
486 white-space: nowrap;
487 margin: 5px;
488 }
489
490 .noVNC_panel li {
491 margin: 5px;
492 }
493
494 .noVNC_panel .noVNC_heading {
495 background-color: rgb(110, 132, 163);
496 border-radius: 5px;
497 padding: 5px;
498 /* Compensate for padding in image */
499 padding-right: 8px;
500 color: white;
501 font-size: 20px;
502 white-space: nowrap;
503 }
504 .noVNC_panel .noVNC_heading img {
505 vertical-align: bottom;
506 }
507
508 .noVNC_submit {
509 float: right;
510 }
511
512 /* Expanders */
513 .noVNC_expander {
514 cursor: pointer;
515 }
516 .noVNC_expander::before {
517 content: url("../images/expander.svg");
518 display: inline-block;
519 margin-right: 5px;
520 transition: 0.2s ease-in-out;
521 }
522 .noVNC_expander.noVNC_open::before {
523 transform: rotateZ(90deg);
524 }
525 .noVNC_expander ~ * {
526 margin: 5px;
527 margin-left: 10px;
528 padding: 5px;
529 background: rgba(0, 0, 0, 0.05);
530 border-radius: 5px;
531 }
532 .noVNC_expander:not(.noVNC_open) ~ * {
533 display: none;
534 }
535
536 /* Control bar content */
537
538 #noVNC_control_bar .noVNC_logo {
539 font-size: 13px;
540 }
541
542 .noVNC_logo + hr {
543 /* Remove all but top border */
544 border: none;
545 border-top: 1px solid rgba(255, 255, 255, 0.2);
546 }
547
548 :root:not(.noVNC_connected) #noVNC_view_drag_button {
549 display: none;
550 }
551
552 /* noVNC Touch Device only buttons */
553 :root:not(.noVNC_connected) #noVNC_mobile_buttons {
554 display: none;
555 }
556 @media not all and (any-pointer: coarse) {
557 /* FIXME: The button for the virtual keyboard is the only button in this
558 group of "mobile buttons". It is bad to assume that no touch
559 devices have physical keyboards available. Hopefully we can get
560 a media query for this:
561 https://github.com/w3c/csswg-drafts/issues/3871 */
562 :root.noVNC_connected #noVNC_mobile_buttons {
563 display: none;
564 }
565 }
566
567 /* Extra manual keys */
568 :root:not(.noVNC_connected) #noVNC_toggle_extra_keys_button {
569 display: none;
570 }
571
572 #noVNC_modifiers {
573 background-color: rgb(92, 92, 92);
574 border: none;
575 padding: 10px;
576 }
577
578 /* Shutdown/Reboot */
579 :root:not(.noVNC_connected) #noVNC_power_button {
580 display: none;
581 }
582 #noVNC_power {
583 }
584 #noVNC_power_buttons {
585 display: none;
586 }
587
588 #noVNC_power input[type=button] {
589 width: 100%;
590 }
591
592 /* Clipboard */
593 :root:not(.noVNC_connected) #noVNC_clipboard_button {
594 display: none;
595 }
596 #noVNC_clipboard_text {
597 width: 360px;
598 min-width: 150px;
599 height: 160px;
600 min-height: 70px;
601
602 box-sizing: border-box;
603 max-width: 100%;
604 /* minus approximate height of title, height of subtitle, and margin */
605 max-height: calc(100vh - 10em - 25px);
606 }
607
608 /* Settings */
609 #noVNC_settings {
610 }
611 #noVNC_settings ul {
612 list-style: none;
613 padding: 0px;
614 }
615 #noVNC_setting_port {
616 width: 80px;
617 }
618 #noVNC_setting_path {
619 width: 100px;
620 }
621
622 /* Version */
623
624 .noVNC_version_wrapper {
625 font-size: small;
626 }
627
628 .noVNC_version {
629 margin-left: 1rem;
630 }
631
632 /* Connection Controls */
633 :root:not(.noVNC_connected) #noVNC_disconnect_button {
634 display: none;
635 }
636
637 /* ----------------------------------------
638 * Status Dialog
639 * ----------------------------------------
640 */
641
642 #noVNC_status {
643 position: fixed;
644 top: 0;
645 left: 0;
646 width: 100%;
647 z-index: 100;
648 transform: translateY(-100%);
649
650 cursor: pointer;
651
652 transition: 0.5s ease-in-out;
653
654 visibility: hidden;
655 opacity: 0;
656
657 padding: 5px;
658
659 display: flex;
660 flex-direction: row;
661 justify-content: center;
662 align-content: center;
663
664 line-height: 1.6;
665 word-wrap: break-word;
666 color: #fff;
667
668 border-bottom: 1px solid rgba(0, 0, 0, 0.9);
669 }
670 #noVNC_status.noVNC_open {
671 transform: translateY(0);
672 visibility: visible;
673 opacity: 1;
674 }
675
676 #noVNC_status::before {
677 content: "";
678 display: inline-block;
679 width: 25px;
680 height: 25px;
681 margin-right: 5px;
682 }
683
684 #noVNC_status.noVNC_status_normal {
685 background: rgba(128,128,128,0.9);
686 }
687 #noVNC_status.noVNC_status_normal::before {
688 content: url("../images/info.svg") " ";
689 }
690 #noVNC_status.noVNC_status_error {
691 background: rgba(200,55,55,0.9);
692 }
693 #noVNC_status.noVNC_status_error::before {
694 content: url("../images/error.svg") " ";
695 }
696 #noVNC_status.noVNC_status_warn {
697 background: rgba(180,180,30,0.9);
698 }
699 #noVNC_status.noVNC_status_warn::before {
700 content: url("../images/warning.svg") " ";
701 }
702
703 /* ----------------------------------------
704 * Connect Dialog
705 * ----------------------------------------
706 */
707
708 #noVNC_connect_dlg {
709 transition: 0.5s ease-in-out;
710
711 transform: scale(0, 0);
712 visibility: hidden;
713 opacity: 0;
714 }
715 #noVNC_connect_dlg.noVNC_open {
716 transform: scale(1, 1);
717 visibility: visible;
718 opacity: 1;
719 }
720 #noVNC_connect_dlg .noVNC_logo {
721 transition: 0.5s ease-in-out;
722 padding: 10px;
723 margin-bottom: 10px;
724
725 font-size: 80px;
726 text-align: center;
727
728 border-radius: 5px;
729 }
730 @media (max-width: 440px) {
731 #noVNC_connect_dlg {
732 max-width: calc(100vw - 100px);
733 }
734 #noVNC_connect_dlg .noVNC_logo {
735 font-size: calc(25vw - 30px);
736 }
737 }
738 #noVNC_connect_dlg div {
739 padding: 12px;
740
741 background-color: rgb(110, 132, 163);
742 border-radius: 12px;
743 text-align: center;
744 font-size: 20px;
745
746 box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5);
747 }
748 #noVNC_connect_button {
749 width: 100%;
750 padding: 5px 30px;
751
752 cursor: pointer;
753
754 border-color: rgb(83, 99, 122);
755 border-radius: 5px;
756
757 background: linear-gradient(to top, rgb(110, 132, 163), rgb(99, 119, 147));
758 color: white;
759
760 /* This avoids it jumping around when :active */
761 vertical-align: middle;
762 }
763 #noVNC_connect_button:hover {
764 background: linear-gradient(to top, rgb(110, 132, 163), rgb(105, 125, 155));
765 }
766
767 #noVNC_connect_button img {
768 vertical-align: bottom;
769 height: 1.3em;
770 }
771
772 /* ----------------------------------------
773 * Server verification Dialog
774 * ----------------------------------------
775 */
776
777 #noVNC_verify_server_dlg {
778 position: relative;
779
780 transform: translateY(-50px);
781 }
782 #noVNC_verify_server_dlg.noVNC_open {
783 transform: translateY(0);
784 }
785 #noVNC_fingerprint_block {
786 margin: 10px;
787 }
788
789 /* ----------------------------------------
790 * Password Dialog
791 * ----------------------------------------
792 */
793
794 #noVNC_credentials_dlg {
795 position: relative;
796
797 transform: translateY(-50px);
798 }
799 #noVNC_credentials_dlg.noVNC_open {
800 transform: translateY(0);
801 }
802 #noVNC_username_block.noVNC_hidden,
803 #noVNC_password_block.noVNC_hidden {
804 display: none;
805 }
806
807
808 /* ----------------------------------------
809 * Main Area
810 * ----------------------------------------
811 */
812
813 /* Transition screen */
814 #noVNC_transition {
815 transition: 0.5s ease-in-out;
816
817 display: flex;
818 opacity: 0;
819 visibility: hidden;
820
821 position: fixed;
822 top: 0;
823 left: 0;
824 bottom: 0;
825 right: 0;
826
827 color: white;
828 background: rgba(0, 0, 0, 0.5);
829 z-index: 50;
830
831 /*display: flex;*/
832 align-items: center;
833 justify-content: center;
834 flex-direction: column;
835 }
836 :root.noVNC_loading #noVNC_transition,
837 :root.noVNC_connecting #noVNC_transition,
838 :root.noVNC_disconnecting #noVNC_transition,
839 :root.noVNC_reconnecting #noVNC_transition {
840 opacity: 1;
841 visibility: visible;
842 }
843 :root:not(.noVNC_reconnecting) #noVNC_cancel_reconnect_button {
844 display: none;
845 }
846 #noVNC_transition_text {
847 font-size: 1.5em;
848 }
849
850 /* Main container */
851 #noVNC_container {
852 width: 100%;
853 height: 100%;
854 background-color: #313131;
855 border-bottom-right-radius: 800px 600px;
856 /*border-top-left-radius: 800px 600px;*/
857
858 /* If selection isn't disabled, long-pressing stuff in the sidebar
859 can accidentally select the container or the canvas. This can
860 happen when attempting to move the handle. */
861 user-select: none;
862 -webkit-user-select: none;
863 }
864
865 #noVNC_keyboardinput {
866 width: 1px;
867 height: 1px;
868 background-color: #fff;
869 color: #fff;
870 border: 0;
871 position: absolute;
872 left: -40px;
873 z-index: -1;
874 ime-mode: disabled;
875 }
876
877 /*Default noVNC logo.*/
878 /* From: http://fonts.googleapis.com/css?family=Orbitron:700 */
879 @font-face {
880 font-family: 'Orbitron';
881 font-style: normal;
882 font-weight: 700;
883 src: local('?'), url('Orbitron700.woff') format('woff'),
884 url('Orbitron700.ttf') format('truetype');
885 }
886
887 .noVNC_logo {
888 color:yellow;
889 font-family: 'Orbitron', 'OrbitronTTF', sans-serif;
890 line-height: 0.9;
891 text-shadow: 0.1em 0.1em 0 black;
892 }
893 .noVNC_logo span{
894 color:green;
895 }
896
897 #noVNC_bell {
898 display: none;
899 }
900
901 /* ----------------------------------------
902 * Media sizing
903 * ----------------------------------------
904 */
905
906 @media screen and (max-width: 640px){
907 #noVNC_logo {
908 font-size: 150px;
909 }
910 }
911
912 @media screen and (min-width: 321px) and (max-width: 480px) {
913 #noVNC_logo {
914 font-size: 110px;
915 }
916 }
917
918 @media screen and (max-width: 320px) {
919 #noVNC_logo {
920 font-size: 90px;
921 }
922 }