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