| /* |
| * noVNC general input element CSS |
| * Copyright (C) 2022 The noVNC Authors |
| * noVNC is licensed under the MPL 2.0 (see LICENSE.txt) |
| * This file is licensed under the 2-Clause BSD license (see LICENSE.txt). |
| */ |
| |
| /* |
| * Common for all inputs |
| */ |
| input, input::file-selector-button, button, select, textarea { |
| /* Respect standard font settings */ |
| font: inherit; |
| |
| /* Disable default rendering */ |
| appearance: none; |
| background: none; |
| |
| padding: 5px; |
| border: 1px solid rgb(192, 192, 192); |
| border-radius: 5px; |
| color: black; |
| --bg-gradient: linear-gradient(to top, rgb(255, 255, 255) 80%, rgb(240, 240, 240)); |
| background-image: var(--bg-gradient); |
| } |
| |
| /* |
| * Buttons |
| */ |
| input[type=button], |
| input[type=color], |
| input[type=image], |
| input[type=reset], |
| input[type=submit], |
| input::file-selector-button, |
| button, |
| select { |
| border-bottom-width: 2px; |
| |
| /* This avoids it jumping around when :active */ |
| vertical-align: middle; |
| margin-top: 0; |
| |
| padding-left: 20px; |
| padding-right: 20px; |
| |
| /* Disable Chrome's touch tap highlight */ |
| -webkit-tap-highlight-color: transparent; |
| } |
| |
| /* |
| * Select dropdowns |
| */ |
| select { |
| --select-arrow: url('data:image/svg+xml;utf8, \ |
| <svg width="8" height="6" version="1.1" viewBox="0 0 8 6" \ |
| xmlns="http://www.w3.org/2000/svg"> \ |
| <path d="m6.5 1.5 -2.5 3 -2.5 -3 5 0" stroke-width="3" \ |
| stroke="rgb(31,31,31)" fill="none" \ |
| stroke-linecap="round" stroke-linejoin="round" /> \ |
| </svg>'); |
| background-image: var(--select-arrow), var(--bg-gradient); |
| background-position: calc(100% - 7px), left top; |
| background-repeat: no-repeat; |
| padding-right: calc(2*7px + 8px); |
| padding-left: 7px; |
| } |
| /* FIXME: :active isn't set when the <select> is opened in Firefox: |
| https://bugzilla.mozilla.org/show_bug.cgi?id=1805406 */ |
| select:active { |
| /* Rotated arrow */ |
| background-image: url('data:image/svg+xml;utf8, \ |
| <svg width="8" height="6" version="1.1" viewBox="0 0 8 6" \ |
| xmlns="http://www.w3.org/2000/svg" transform="rotate(180)" > \ |
| <path d="m6.5 1.5 -2.5 3 -2.5 -3 5 0" stroke-width="3" \ |
| stroke="rgb(31,31,31)" fill="none" \ |
| stroke-linecap="round" stroke-linejoin="round" /> \ |
| </svg>'), var(--bg-gradient); |
| } |
| option { |
| color: black; |
| background: white; |
| } |
| |
| /* |
| * Checkboxes |
| */ |
| input[type=checkbox] { |
| background-color: white; |
| background-image: unset; |
| border: 1px solid dimgrey; |
| border-radius: 3px; |
| width: 13px; |
| height: 13px; |
| padding: 0; |
| margin-right: 6px; |
| vertical-align: bottom; |
| transition: 0.2s background-color linear; |
| } |
| input[type=checkbox]:checked { |
| background-color: rgb(110, 132, 163); |
| border-color: rgb(110, 132, 163); |
| } |
| input[type=checkbox]:checked::after { |
| content: ""; |
| display: block; /* width & height doesn't work on inline elements */ |
| position: relative; |
| top: 0; |
| left: 3px; |
| width: 3px; |
| height: 7px; |
| border: 1px solid white; |
| border-width: 0 2px 2px 0; |
| transform: rotate(40deg); |
| } |
| |
| /* |
| * Radiobuttons |
| */ |
| input[type=radio] { |
| border-radius: 50%; |
| border: 1px solid dimgrey; |
| width: 12px; |
| height: 12px; |
| padding: 0; |
| margin-right: 6px; |
| transition: 0.2s border linear; |
| } |
| input[type=radio]:checked { |
| border: 6px solid rgb(110, 132, 163); |
| } |
| |
| /* |
| * Range sliders |
| */ |
| input[type=range] { |
| border: unset; |
| border-radius: 3px; |
| height: 20px; |
| padding: 0; |
| background: transparent; |
| } |
| /* -webkit-slider.. & -moz-range.. cant be in selector lists: |
| https://bugs.chromium.org/p/chromium/issues/detail?id=1154623 */ |
| input[type=range]::-webkit-slider-runnable-track { |
| background-color: rgb(110, 132, 163); |
| height: 6px; |
| border-radius: 3px; |
| } |
| input[type=range]::-moz-range-track { |
| background-color: rgb(110, 132, 163); |
| height: 6px; |
| border-radius: 3px; |
| } |
| input[type=range]::-webkit-slider-thumb { |
| appearance: none; |
| width: 18px; |
| height: 20px; |
| border-radius: 5px; |
| background-color: white; |
| border: 1px solid dimgray; |
| margin-top: -7px; |
| } |
| input[type=range]::-moz-range-thumb { |
| appearance: none; |
| width: 18px; |
| height: 20px; |
| border-radius: 5px; |
| background-color: white; |
| border: 1px solid dimgray; |
| margin-top: -7px; |
| } |
| |
| /* |
| * File choosers |
| */ |
| input[type=file] { |
| background-image: none; |
| border: none; |
| } |
| input::file-selector-button { |
| margin-right: 6px; |
| } |
| |
| /* |
| * Hover |
| */ |
| input[type=button]:hover, |
| input[type=color]:hover, |
| input[type=image]:hover, |
| input[type=reset]:hover, |
| input[type=submit]:hover, |
| input::file-selector-button:hover, |
| button:hover { |
| background-image: linear-gradient(to top, rgb(255, 255, 255), rgb(250, 250, 250)); |
| } |
| select:hover { |
| background-image: var(--select-arrow), |
| linear-gradient(to top, rgb(255, 255, 255), rgb(250, 250, 250)); |
| background-position: calc(100% - 7px), left top; |
| background-repeat: no-repeat; |
| } |
| @media (any-pointer: coarse) { |
| /* We don't want a hover style after touch input */ |
| input[type=button]:hover, |
| input[type=color]:hover, |
| input[type=image]:hover, |
| input[type=reset]:hover, |
| input[type=submit]:hover, |
| input::file-selector-button:hover, |
| button:hover { |
| background-image: var(--bg-gradient); |
| } |
| select:hover { |
| background-image: var(--select-arrow), var(--bg-gradient); |
| } |
| } |
| |
| /* |
| * Active (clicked) |
| */ |
| input[type=button]:active, |
| input[type=color]:active, |
| input[type=image]:active, |
| input[type=reset]:active, |
| input[type=submit]:active, |
| input::file-selector-button:active, |
| button:active, |
| select:active { |
| border-bottom-width: 1px; |
| margin-top: 1px; |
| } |
| |
| /* |
| * Focus (tab) |
| */ |
| input:focus-visible, |
| input:focus-visible::file-selector-button, |
| button:focus-visible, |
| select:focus-visible, |
| textarea:focus-visible { |
| outline: 2px solid rgb(74, 144, 217); |
| outline-offset: 1px; |
| } |
| input[type=file]:focus-visible { |
| outline: none; /* We outline the button instead of the entire element */ |
| } |
| |
| /* |
| * Disabled |
| */ |
| input:disabled, |
| input:disabled::file-selector-button, |
| button:disabled, |
| select:disabled, |
| textarea:disabled { |
| opacity: 0.4; |
| } |
| input[type=button]:disabled, |
| input[type=color]:disabled, |
| input[type=image]:disabled, |
| input[type=reset]:disabled, |
| input[type=submit]:disabled, |
| input:disabled::file-selector-button, |
| button:disabled, |
| select:disabled { |
| background-image: var(--bg-gradient); |
| border-bottom-width: 2px; |
| margin-top: 0; |
| } |
| input[type=file]:disabled { |
| background-image: none; |
| } |
| select:disabled { |
| background-image: var(--select-arrow), var(--bg-gradient); |
| } |
| input[type=image]:disabled { |
| /* See Firefox bug: |
| https://bugzilla.mozilla.org/show_bug.cgi?id=1798304 */ |
| cursor: default; |
| } |