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