3 * Copyright (C) 2012 Joel Martin
4 * Copyright (C) 2016 Samuel Mannehed for Cendio AB
5 * Copyright (C) 2016 Pierre Ossman for Cendio AB
6 * noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
7 * This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
13 font-family: Helvetica
;
14 /*Background image with light grey curve.*/
15 background-color:#494949;
16 background-repeat:no-repeat
;
17 background-position:right bottom
;
26 .noVNC_only_touch.noVNC_hidden {
30 /* ----------------------------------------
32 * ----------------------------------------
38 .noVNC_spinner, .noVNC_spinner::before, .noVNC_spinner::after {
42 animation: noVNC_spinner
1.0s ease-in-out alternate infinite
;
44 .noVNC_spinner::before {
48 animation-delay: -0.2s;
50 .noVNC_spinner::after {
54 animation-delay: 0.2s;
56 @keyframes noVNC_spinner
{
57 0% { box-shadow: 0 10px 0 white
; }
58 100% { box-shadow: 0 30px 0 white
; }
61 /* ----------------------------------------
63 * ----------------------------------------
66 input
[type
=input
], input
[type
=password
], input:not
([type
]), textarea
{
67 /* Disable default rendering */
68 -webkit-appearance: none
;
69 -moz-appearance: none
;
74 border: 1px solid rgb
(192, 192, 192);
77 background: linear-gradient
(to top
, rgb
(255, 255, 255) 80%, rgb
(240, 240, 240));
80 input
[type
=button
], select
{
81 /* Disable default rendering */
82 -webkit-appearance: none
;
83 -moz-appearance: none
;
88 border: 1px solid rgb
(192, 192, 192);
89 border-bottom-width: 2px;
92 background: linear-gradient
(to top
, rgb
(255, 255, 255), rgb
(240, 240, 240));
94 /* This avoids it jumping around when :active */
95 vertical-align: middle
;
108 input
[type
=input
]:focus
, input
[type
=password
]:focus
,
109 input:not
([type
]):focus
, input
[type
=button
]:focus
,
110 textarea:focus
, select:focus
{
111 box-shadow: 0px 0px 3px rgba
(74, 144, 217, 0.5);
112 border-color: rgb
(74, 144, 217);
116 input
[type
=button
]::-moz-focus-inner
{
120 input
[type
=input
]:disabled
, input
[type
=password
]:disabled
,
121 input:not
([type
]):disabled
, input
[type
=button
]:disabled
,
122 textarea:disabled
, select:disabled
{
123 color: rgb
(128, 128, 128);
124 background: rgb
(240, 240, 240);
127 input
[type
=button
]:active
, select:active
{
128 border-bottom-width: 1px;
132 :root:not
(.noVNC_touch
) input
[type
=button
]:hover:not
(:disabled
), :root:not
(.noVNC_touch
) select:hover:not
(:disabled
) {
133 background: linear-gradient
(to top
, rgb
(255, 255, 255), rgb
(250, 250, 250));
136 /* ----------------------------------------
137 * WebKit centering hacks
138 * ----------------------------------------
143 * This is a workaround because webkit misrenders transforms and
144 * uses non-integer coordinates, resulting in blurry content.
145 * Ideally we'd use "top: 50%; transform: translateY(-50%);" on
146 * the objects instead.
150 justify-content: center
;
156 pointer-events: none
;
159 pointer-events: auto
;
163 flex-direction: column
;
164 justify-content: center
;
169 pointer-events: none
;
172 pointer-events: auto
;
175 /* ----------------------------------------
177 * ----------------------------------------
180 #noVNC_fallback_error {
184 transform: translate
(-50%, -50px);
185 transition: 0.5s ease-in-out
;
196 word-wrap: break-word
;
200 box-shadow: 6px 6px 0px rgba
(0, 0, 0, 0.5);
201 background: rgba
(200,55,55,0.8);
203 #noVNC_fallback_error.noVNC_open
{
204 transform: translate
(-50%, 0);
209 #noVNC_fallback_errormsg {
213 #noVNC_fallback_error .noVNC_location
{
216 color: rgba
(255, 255, 255, 0.8);
219 #noVNC_fallback_error .noVNC_stack
{
225 border: 1px solid rgba
(0, 0, 0, 0.5);
226 background: rgba
(0, 0, 0, 0.2);
229 /* ----------------------------------------
231 * ----------------------------------------
234 #noVNC_control_bar_anchor {
235 /* The anchor is needed to get z-stacking to work */
239 transition: 0.5s ease-in-out
;
241 /* Edge misrenders animations wihthout this */
242 transform: translateX
(0);
244 :root
.noVNC_connected #noVNC_control_bar_anchor
.noVNC_idle
{
247 #noVNC_control_bar_anchor.noVNC_right
{
256 transition: 0.5s ease-in-out
;
258 background-color: rgb
(110, 132, 163);
259 border-radius: 0 10px 10px 0;
262 #noVNC_control_bar.noVNC_open
{
263 box-shadow: 6px 6px 0px rgba
(0, 0, 0, 0.5);
266 #noVNC_control_bar::before
{
267 /* This extra element is to get a proper shadow */
274 transition: box-shadow
0.5s ease-in-out
;
276 #noVNC_control_bar.noVNC_open::before
{
277 box-shadow: 6px 6px 0px rgba
(0, 0, 0, 0.5);
279 .noVNC_right #noVNC_control_bar {
281 border-radius: 10px 0 0 10px;
283 .noVNC_right #noVNC_control_bar.noVNC_open {
286 .noVNC_right #noVNC_control_bar::before {
290 #noVNC_control_bar_handle {
294 transform: translateY
(35px);
295 width: calc
(100% + 30px);
300 background-color: rgb
(83, 99, 122);
301 background-image: url
("../images/handle_bg.svg");
302 background-repeat: no-repeat
;
303 background-position: right
;
304 box-shadow: 3px 3px 0px rgba
(0, 0, 0, 0.5);
306 #noVNC_control_bar_handle:after
{
308 transition: transform
0.5s ease-in-out
;
309 background: url
("../images/handle.svg");
311 top: 22px; /* (50px-6px)/2 */
316 #noVNC_control_bar.noVNC_open #
noVNC_control_bar_handle:after
{
317 transform: translateX
(1px) rotate
(180deg);
319 :root:not
(.noVNC_connected
) #noVNC_control_bar_handle
{
322 .noVNC_right #noVNC_control_bar_handle {
323 background-position: left
;
325 .noVNC_right #noVNC_control_bar_handle:after {
328 transform: translateX
(1px) rotate
(180deg);
330 .noVNC_right #noVNC_control_bar.noVNC_open #noVNC_control_bar_handle:after {
333 #noVNC_control_bar_handle div
{
340 :root:not
(.noVNC_touch
) #noVNC_control_bar_handle div
{
343 .noVNC_right #noVNC_control_bar_handle div {
348 #noVNC_control_bar .noVNC_scroll
{
349 max-height: 100vh; /* Chrome is buggy with 100% */
352 padding: 0 10px 0 5px;
354 .noVNC_right #noVNC_control_bar .noVNC_scroll {
355 padding: 0 5px 0 10px;
358 /* General button style */
363 vertical-align: middle
;
364 border:1px solid rgba
(255, 255, 255, 0.2);
365 -webkit-border-radius: 6px;
366 -moz-border-radius: 6px;
369 .noVNC_button.noVNC_selected {
370 border-color: rgba
(0, 0, 0, 0.8);
371 background: rgba
(0, 0, 0, 0.5);
373 .noVNC_button:disabled {
376 .noVNC_button:focus {
379 .noVNC_button:active {
383 :root:not
(.noVNC_touch
) .noVNC_button
.noVNC_selected:hover
{
384 border-color: rgba
(0, 0, 0, 0.4);
385 background: rgba
(0, 0, 0, 0.2);
387 :root:not
(.noVNC_touch
) .noVNC_button:hover
{
388 background: rgba
(255, 255, 255, 0.2);
390 .noVNC_button.noVNC_hidden {
396 transform: translateX
(25px);
398 transition: 0.5s ease-in-out
;
400 max-height: 100vh; /* Chrome is buggy with 100% */
410 -webkit-border-radius: 10px;
411 -moz-border-radius: 10px;
414 border: 2px solid
#E0E0E0;
415 box-shadow: 6px 6px 0px rgba
(0, 0, 0, 0.5);
417 .noVNC_panel.noVNC_open {
420 transform: translateX
(75px);
422 .noVNC_right .noVNC_vcenter {
426 .noVNC_right .noVNC_panel {
427 transform: translateX
(-25px);
429 .noVNC_right .noVNC_panel.noVNC_open {
430 transform: translateX
(-75px);
435 border-top: 1px solid rgb
(192, 192, 192);
442 .noVNC_panel .noVNC_heading {
443 background-color: rgb
(110, 132, 163);
446 /* Compensate for padding in image */
453 .noVNC_panel .noVNC_heading img {
454 vertical-align: bottom
;
461 :root:not
(.noVNC_connected
) #noVNC_view_drag_button
{
465 /* noVNC Touch Device only buttons */
466 :root:not
(.noVNC_connected
) #noVNC_mobile_buttons
{
469 :root:not
(.noVNC_touch
) #noVNC_mobile_buttons
{
473 #noVNC_keyboardinput {
476 background-color: #fff;
485 /* Extra manual keys */
486 :root:not
(.noVNC_connected
) #noVNC_extra_keys
{
491 background-color: rgb
(92, 92, 92);
496 /* XVP Shutdown/Reboot */
497 :root:not
(.noVNC_connected
) #noVNC_xvp_button
{
506 #noVNC_xvp input
[type
=button
] {
511 :root:not
(.noVNC_connected
) #noVNC_clipboard_button
{
515 /* Full screen, minus padding and left and right margins */
516 max-width: calc
(100vw - 2*15px - 75px - 25px);
518 #noVNC_clipboard_text {
531 #noVNC_setting_path {
535 /* Connection Controls */
536 :root
.noVNC_connected #noVNC_connect_controls_button
{
539 :root:not
(.noVNC_connected
) #noVNC_disconnect_button
{
542 #noVNC_connect_controls ul
{
547 #noVNC_setting_port {
551 /* ----------------------------------------
553 * ----------------------------------------
562 transform: translateY
(-100%);
564 transition: 0.5s ease-in-out
;
573 justify-content: center
;
574 align-content: center
;
577 word-wrap: break-word
;
580 border-bottom: 1px solid rgba
(0, 0, 0, 0.9);
582 #noVNC_status.noVNC_open
{
583 transform: translateY
(0);
588 #noVNC_status::before
{
590 display: inline-block
;
596 #noVNC_status.noVNC_status_normal
{
597 background: rgba
(128,128,128,0.9);
599 #noVNC_status.noVNC_status_normal::before
{
600 content: url
("../images/info.svg") " ";
602 #noVNC_status.noVNC_status_error
{
603 background: rgba
(200,55,55,0.9);
605 #noVNC_status.noVNC_status_error::before
{
606 content: url
("../images/error.svg") " ";
608 #noVNC_status.noVNC_status_warn
{
609 background: rgba
(180,180,30,0.9);
611 #noVNC_status.noVNC_status_warn::before
{
612 content: url
("../images/warning.svg") " ";
615 /* ----------------------------------------
617 * ----------------------------------------
620 #noVNC_password_dlg {
621 transform: translateY
(-50px);
623 #noVNC_password_dlg.noVNC_open
{
624 transform: translateY
(0);
626 #noVNC_password_dlg ul
{
632 /* ----------------------------------------
634 * ----------------------------------------
637 /* Transition screen */
648 background: rgba
(0, 0, 0, 0.5);
653 justify-content: center
;
654 flex-direction: column
;
656 :root
.noVNC_connecting #noVNC_transition
,
657 :root
.noVNC_disconnecting #noVNC_transition
{
660 #noVNC_transition_text {
669 background-color: #313131;
670 border-bottom-right-radius: 800px 600px;
671 /*border-top-left-radius: 800px 600px;*/
686 :root:not
(.noVNC_connected
) #noVNC_screen
{
690 /* Do not set width/height for VNC_canvas or incorrect
691 * scaling will occur. Canvas size depends on remote VNC
692 * settings and noVNC settings. */
701 /*Default noVNC logo.*/
702 /* From: http://fonts.googleapis.com/css?family=Orbitron:700 */
704 font-family: 'Orbitron';
707 src: local
('?'), url
('Orbitron700.woff') format
('woff'),
708 url
('Orbitron700.ttf') format
('truetype');
714 font-family: 'Orbitron', 'OrbitronTTF', sans-serif
;
717 text-shadow: 1px 1px 0 #000;
734 :root
.noVNC_connected #noVNC_logo
{
742 /* ----------------------------------------
744 * ----------------------------------------
747 @media screen and
(max-width: 640px){
753 @media screen and
(min-width: 321px) and
(max-width: 480px) {
759 @media screen and
(max-width: 320px) {