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