]> git.proxmox.com Git - mirror_novnc.git/blame - app/styles/base.css
Enable extra keys for all devices
[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
c327865b 10body {
01a9eee9
JM
11 margin:0;
12 padding:0;
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;
18 height:100%;
c327865b
CG
19}
20
21html {
01a9eee9 22 height:100%;
c327865b
CG
23}
24
2869308c 25#noVNC_buttons {
26 white-space: nowrap;
c327865b 27}
2869308c 28
79fd3b1f
PO
29/* ----------------------------------------
30 * Input Elements
31 * ----------------------------------------
32 */
33
34input[type=input], input[type=password], input:not([type]), textarea {
35 /* Disable default rendering */
36 -webkit-appearance: none;
37 -moz-appearance: none;
38 background: none;
39
40 margin: 2px;
41 padding: 2px;
42 border: 1px solid rgb(192, 192, 192);
43 border-radius: 5px;
44 color: black;
45 background: linear-gradient(to top, rgb(255, 255, 255) 80%, rgb(240, 240, 240));
46}
47
48input[type=button], select {
49 /* Disable default rendering */
50 -webkit-appearance: none;
51 -moz-appearance: none;
52 background: none;
53
54 margin: 2px;
55 padding: 2px;
56 border: 1px solid rgb(192, 192, 192);
57 border-bottom-width: 2px;
58 border-radius: 5px;
59 color: black;
60 background: linear-gradient(to top, rgb(255, 255, 255), rgb(240, 240, 240));
61
62 /* This avoids it jumping around when :active */
63 vertical-align: middle;
64}
65
66input[type=button] {
67 padding-left: 20px;
68 padding-right: 20px;
69}
70
71option {
72 color: black;
73 background: white;
74}
75
76input[type=input]:focus, input[type=password]:focus,
77input:not([type]):focus, input[type=button]:focus,
78textarea:focus, select:focus {
79 box-shadow: 0px 0px 3px rgba(74, 144, 217, 0.5);
80 border-color: rgb(74, 144, 217);
81 outline: none;
82}
83
84input[type=button]::-moz-focus-inner {
85 border: none;
86}
87
88input[type=input]:disabled, input[type=password]:disabled,
89input:not([type]):disabled, input[type=button]:disabled,
90textarea:disabled, select:disabled {
91 color: rgb(128, 128, 128);
92 background: rgb(240, 240, 240);
93}
94
95input[type=button]:active, select:active {
96 border-bottom-width: 1px;
97 margin-top: 3px;
98}
99
8a7ec6ea
SM
100/* ----------------------------------------
101 * WebKit centering hacks
102 * ----------------------------------------
103 */
104
105.noVNC_center {
106 /*
107 * This is a workaround because webkit misrenders transforms and
108 * uses non-integer coordinates, resulting in blurry content.
109 * Ideally we'd use "top: 50%; transform: translateY(-50%);" on
110 * the objects instead.
111 */
112 display: flex;
113 align-items: center;
114 justify-content: center;
115 position: fixed;
116 top: 0;
117 left: 0;
118 width: 100%;
119 height: 100%;
120 pointer-events: none;
121}
122.noVNC_center > * {
123 pointer-events: auto;
124}
125
2869308c 126/* ----------------------------------------
127 * Control Bar
128 * ----------------------------------------
129 */
130
131#noVNC_control_bar {
132 position: fixed;
133 display: block;
134 height: 36px;
135 left: 0;
136 top: 0;
137 width: 100%;
138 z-index: 200;
ca5c74ad 139
140 background: #b2bdcd; /* Old browsers */
141 background: -moz-linear-gradient(top, #b2bdcd 0%, #899cb3 49%, #7e93af 51%, #6e84a3 100%); /* FF3.6+ */
142 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b2bdcd), color-stop(49%,#899cb3), color-stop(51%,#7e93af), color-stop(100%,#6e84a3)); /* Chrome,Safari4+ */
143 background: -webkit-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Chrome10+,Safari5.1+ */
144 background: -o-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Opera11.10+ */
145 background: -ms-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* IE10+ */
146 background: linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* W3C */
c327865b
CG
147}
148
2869308c 149/* General button style */
a49d9298 150.noVNC_button {
2869308c 151 padding: 4px 4px;
152 vertical-align: middle;
153 border:1px solid #869dbc;
154 -webkit-border-radius: 6px;
155 -moz-border-radius: 6px;
156 border-radius: 6px;
157 background: #b2bdcd; /* Old browsers */
158 background: -moz-linear-gradient(top, #b2bdcd 0%, #899cb3 49%, #7e93af 51%, #6e84a3 100%); /* FF3.6+ */
159 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b2bdcd), color-stop(49%,#899cb3), color-stop(51%,#7e93af), color-stop(100%,#6e84a3)); /* Chrome,Safari4+ */
160 background: -webkit-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Chrome10+,Safari5.1+ */
161 background: -o-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* Opera11.10+ */
162 background: -ms-linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* IE10+ */
163 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#b2bdcd', endColorstr='#6e84a3',GradientType=0 ); /* IE6-9 */
164 background: linear-gradient(top, #b2bdcd 0%,#899cb3 49%,#7e93af 51%,#6e84a3 100%); /* W3C */
165 /*box-shadow:inset 0.4px 0.4px 0.4px #000000;*/
166 font-size: 12px;
01a9eee9 167}
d9e86214
PO
168.noVNC_button.noVNC_selected {
169 border-color: #4366a9;
2869308c 170 background: #779ced; /* Old browsers */
171 background: -moz-linear-gradient(top, #779ced 0%, #3970e0 49%, #2160dd 51%, #2463df 100%); /* FF3.6+ */
172 background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#779ced), color-stop(49%,#3970e0), color-stop(51%,#2160dd), color-stop(100%,#2463df)); /* Chrome,Safari4+ */
173 background: -webkit-linear-gradient(top, #779ced 0%,#3970e0 49%,#2160dd 51%,#2463df 100%); /* Chrome10+,Safari5.1+ */
174 background: -o-linear-gradient(top, #779ced 0%,#3970e0 49%,#2160dd 51%,#2463df 100%); /* Opera11.10+ */
175 background: -ms-linear-gradient(top, #779ced 0%,#3970e0 49%,#2160dd 51%,#2463df 100%); /* IE10+ */
176 filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#779ced', endColorstr='#2463df',GradientType=0 ); /* IE6-9 */
177 background: linear-gradient(top, #779ced 0%,#3970e0 49%,#2160dd 51%,#2463df 100%); /* W3C */
c327865b 178}
a49d9298 179.noVNC_button:disabled {
2869308c 180 opacity: 0.4;
c327865b 181}
a49d9298 182.noVNC_button.noVNC_hidden {
e40978c7
PO
183 display: none;
184}
2869308c 185
186/* Panels */
286947cb 187.noVNC_panel {
24d8b311
PO
188 position: fixed;
189 top: 46px;
190 right: 15px;
191 transform: translate(0, -50px);
192
193 transition: 0.5s ease-in-out;
194
195 visibility: hidden;
196 opacity: 0;
197
2869308c 198 padding: 15px;
24d8b311
PO
199
200 background: #fff;
2869308c 201 -webkit-border-radius: 10px;
202 -moz-border-radius: 10px;
203 border-radius: 10px;
204 color: #000;
205 border: 2px solid #E0E0E0;
24d8b311 206 box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5);
c327865b 207}
e40978c7 208.noVNC_panel.noVNC_open {
24d8b311
PO
209 visibility: visible;
210 opacity: 1;
211 transform: translate(0, 0);
a5df24b4 212}
2869308c 213
79fd3b1f
PO
214.noVNC_submit {
215 float: right;
216}
217
2869308c 218/* noVNC Touch Device only buttons */
219#noVNC_mobile_buttons {
e40978c7
PO
220 display: inline;
221}
222#noVNC_mobile_buttons.noVNC_hidden {
a6357e82 223 display: none;
224}
2869308c 225
226#noVNC_keyboardinput {
227 width: 1px;
228 height: 1px;
229 background-color: #fff;
230 color: #fff;
231 border: 0;
232 position: relative;
233 left: -40px;
234 z-index: -1;
235 ime-mode: disabled;
fb35d50f 236}
2869308c 237
a49d9298 238#noVNC_toggle_extra_keys_button {
608e0f52
JM
239 display: none;
240}
241
53c01a23 242#noVNC_extra_keys {
243 display: inline;
244 list-style-type: none;
245 padding: 0px;
246 margin: 0px;
247 position: relative;
248}
e40978c7
PO
249#noVNC_extra_keys.noVNC_hidden {
250 display: none;
251}
a49d9298 252#noVNC_toggle_ctrl_button {
2869308c 253 display: inline;
254}
a49d9298 255#noVNC_toggle_alt_button {
2869308c 256 display: inline;
257}
a49d9298 258#noVNC_send_tab_button {
2869308c 259 display: inline;
260}
a49d9298 261#noVNC_send_esc_button {
2869308c 262 display: inline;
263}
6cba147d
PO
264#noVNC_modifiers {
265 display: inline;
266}
53c01a23 267
d616c922
PO
268.noVNC_buttons {
269 float: right;
0fa4e0a9
SM
270 z-index: 1;
271 position: relative;
2869308c 272 padding-right: 10px;
d616c922 273 padding-left: 10px;
2869308c 274}
ae510306 275
2869308c 276/* XVP Shutdown/Reboot */
277#noVNC_xvp {
2869308c 278}
279#noVNC_xvp_buttons {
280 display: none;
f4bce783
JM
281}
282
2869308c 283/* Clipboard */
284#noVNC_clipboard {
2869308c 285}
286#noVNC_clipboard_text {
287 width: 500px;
288}
f4bce783 289
2869308c 290/* Settings */
291#noVNC_settings {
2869308c 292}
eeb395dc 293#noVNC_settings ul {
2869308c 294 list-style: none;
eeb395dc 295 margin: 3px;
2869308c 296 padding: 0px;
297}
298#noVNC_setting_path {
299 width: 100px;
300}
f4bce783 301
2869308c 302/* Connection Controls */
a49d9298 303#noVNC_connect_controls {
2869308c 304}
a49d9298 305#noVNC_connect_controls ul {
2869308c 306 list-style: none;
307 margin: 0px;
308 padding: 0px;
309}
a49d9298 310#noVNC_connect_controls li {
2869308c 311 padding-bottom:8px;
312}
313#noVNC_setting_host {
314 width:150px;
315}
316#noVNC_setting_port {
317 width: 80px;
318}
319#noVNC_setting_password {
320 width: 150px;
321}
c327865b 322
ca5c74ad 323/* ----------------------------------------
324 * Status Dialog
325 * ----------------------------------------
326 */
327
328#noVNC_status {
2869308c 329 position: fixed;
ca5c74ad 330 top: 0;
331 left: 0;
332 width: 100%;
333 z-index: 3;
24d8b311
PO
334 transform: translateY(-100%);
335
336 transition: 0.5s ease-in-out;
337
338 visibility: hidden;
339 opacity: 0;
2869308c 340
ca5c74ad 341 padding: 5px;
2869308c 342
24d8b311 343 display: flex;
ca5c74ad 344 flex-direction: row;
345 justify-content: center;
346 align-content: center;
347
348 line-height: 25px;
2869308c 349 word-wrap: break-word;
350 color: #fff;
2869308c 351
ca5c74ad 352 border-bottom: 1px solid rgba(0, 0, 0, 0.9);
c327865b 353}
ca5c74ad 354#noVNC_status.noVNC_open {
24d8b311
PO
355 transform: translateY(0);
356 visibility: visible;
357 opacity: 1;
ca5c74ad 358}
359
360#noVNC_status::before {
361 content: "";
362 display: inline-block;
363 width: 25px;
364 height: 25px;
365 margin-right: 5px;
366}
367
368#noVNC_status.noVNC_status_normal {
369 background: rgba(128,128,128,0.9);
370}
371#noVNC_status.noVNC_status_normal::before {
372 content: url("../images/info.svg") " ";
373}
374#noVNC_status.noVNC_status_error {
375 background: rgba(200,55,55,0.9);
376}
377#noVNC_status.noVNC_status_error::before {
378 content: url("../images/error.svg") " ";
379}
380#noVNC_status.noVNC_status_warn {
381 background: rgba(180,180,30,0.9);
382}
383#noVNC_status.noVNC_status_warn::before {
384 content: url("../images/warning.svg") " ";
e40978c7 385}
c327865b 386
8a7ec6ea
SM
387/* ----------------------------------------
388 * Password Dialog
389 * ----------------------------------------
390 */
391
392#noVNC_password_dlg {
393 transform: translateY(-50px);
394}
395#noVNC_password_dlg.noVNC_open {
396 transform: translateY(0);
397}
398#noVNC_password_dlg ul {
399 list-style: none;
400 margin: 0px;
401 padding: 0px;
402}
403#noVNC_password_dlg li {
404 padding-bottom:8px;
405}
406#noVNC_password_input {
407 width: 150px;
408}
409
2869308c 410/* ----------------------------------------
411 * Main Area
412 * ----------------------------------------
413 */
414
415#noVNC_container {
416 display: table;
417 width: 100%;
418 height: 100%;
419 background-color: #313131;
420 border-bottom-right-radius: 800px 600px;
421 /*border-top-left-radius: 800px 600px;*/
422}
423
424/* HTML5 Canvas */
425#noVNC_screen {
2869308c 426 position: absolute;
427 margin: 0px;
428 padding: 0px;
429 bottom: 0px;
430 top: 36px; /* the height of the control bar */
431 left: 0px;
432 right: 0px;
433 width: auto;
434 height: auto;
435}
e40978c7
PO
436#noVNC_screen.noVNC_hidden {
437 display: none;
438}
2869308c 439
440/* Do not set width/height for VNC_canvas or incorrect
441 * scaling will occur. Canvas size depends on remote VNC
442 * settings and noVNC settings. */
443#noVNC_canvas {
444 position: absolute;
445 left: 0;
446 right: 0;
447 margin-left: auto;
448 margin-right: auto;
c327865b
CG
449}
450
b70ce077 451/*Default noVNC logo.*/
479bfa99
JM
452/* From: http://fonts.googleapis.com/css?family=Orbitron:700 */
453@font-face {
454 font-family: 'Orbitron';
455 font-style: normal;
456 font-weight: 700;
457 src: local('?'), url('Orbitron700.woff') format('woff'),
458 url('Orbitron700.ttf') format('truetype');
459}
460
b70ce077 461#noVNC_logo {
a5df24b4
JM
462 margin-top: 170px;
463 margin-left: 10px;
01a9eee9
JM
464 color:yellow;
465 text-align:left;
479bfa99 466 font-family: 'Orbitron', 'OrbitronTTF', sans-serif;
2869308c 467 font-size: 180px;
01a9eee9
JM
468 line-height:90%;
469 text-shadow:
c327865b
CG
470 5px 5px 0 #000,
471 -1px -1px 0 #000,
472 1px -1px 0 #000,
473 -1px 1px 0 #000,
474 1px 1px 0 #000;
475}
e40978c7
PO
476#noVNC_logo.noVNC_hidden {
477 display: none;
478}
a5df24b4 479
b70ce077 480#noVNC_logo span{
01a9eee9 481 color:green;
a7eb596d
CG
482}
483
a5df24b4
JM
484/* ----------------------------------------
485 * Media sizing
486 * ----------------------------------------
487 */
488
35b29c98 489@media screen and (max-width: 640px){
9d04096e 490 #noVNC_clipboard_text {
491 width: 410px;
492 }
493 #noVNC_logo {
494 font-size: 150px;
495 }
a49d9298 496 .noVNC_button {
a5df24b4 497 font-size: 10px;
a5df24b4 498 }
3f2c25a6 499 .noVNC_buttons_left {
35b29c98 500 padding-left: 0px;
501 }
3f2c25a6 502 .noVNC_buttons_right {
35b29c98 503 padding-right: 0px;
504 }
bd88b943 505 /* collapse the extra keys on lower resolutions */
a49d9298 506 #noVNC_toggle_extra_keys_button {
bd88b943 507 display: inline;
53c01a23 508 }
6cba147d 509 #noVNC_modifiers {
bd88b943 510 display: none;
6cba147d 511 }
e40978c7
PO
512 #noVNC_modifiers.noVNC_open {
513 display: inline;
514 }
a49d9298 515 #noVNC_toggle_ctrl_button {
bd88b943 516 position: absolute;
517 top: 30px;
518 left: 0px;
519 }
a49d9298 520 #noVNC_toggle_alt_button {
bd88b943 521 position: absolute;
522 top: 65px;
523 left: 0px;
524 }
a49d9298 525 #noVNC_send_tab_button {
bd88b943 526 position: absolute;
527 top: 100px;
528 left: 0px;
529 }
a49d9298 530 #noVNC_send_esc_button {
bd88b943 531 position: absolute;
532 top: 135px;
533 left: 0px;
53c01a23 534 }
a5df24b4
JM
535}
536
537@media screen and (min-width: 321px) and (max-width: 480px) {
a5df24b4
JM
538 #noVNC_clipboard_text {
539 width: 250px;
a5df24b4
JM
540 }
541 #noVNC_logo {
542 font-size: 110px;
543 }
544}
545
546@media screen and (max-width: 320px) {
a49d9298 547 .noVNC_button {
a5df24b4 548 font-size: 9px;
a5df24b4
JM
549 }
550 #noVNC_clipboard_text {
551 width: 220px;
a5df24b4
JM
552 }
553 #noVNC_logo {
554 font-size: 90px;
555 }
556}