| /* |
| * Copyright (C) 2019 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| body { |
| background-color:black; |
| margin: 0; |
| touch-action: none; |
| overscroll-behavior: none; |
| } |
| |
| #device-connection { |
| display: none; |
| max-height: 100vh; |
| } |
| |
| @keyframes spin { |
| 0% { transform: rotate(0deg); } |
| 100% { transform: rotate(360deg); } |
| } |
| |
| #loader { |
| border-left: 12px solid #4285F4; |
| border-top: 12px solid #34A853; |
| border-right: 12px solid #FBBC05; |
| border-bottom: 12px solid #EA4335; |
| border-radius: 50%; |
| width: 70px; |
| height: 70px; |
| animation: spin 1.2s linear infinite; |
| margin: 100px; |
| } |
| |
| /* Top header row. */ |
| |
| #header { |
| height: 64px; |
| /* Items inside this use a row Flexbox.*/ |
| display: flex; |
| align-items: center; |
| } |
| |
| #camera-control { |
| display: none !important; |
| } |
| #record-video-control { |
| display: none !important; |
| } |
| |
| #app-controls { |
| margin-left: 10px; |
| } |
| #app-controls > div { |
| display: inline-block; |
| position: relative; |
| margin-right: 6px; |
| } |
| #device-audio { |
| height: 44px; |
| } |
| |
| #error-message-div { |
| flex-grow: 1; |
| } |
| #error-message { |
| color: white; |
| font-family: 'Open Sans', sans-serif; |
| padding: 10px; |
| margin: 10px; |
| border-radius: 10px; |
| } |
| #error-message .close-btn { |
| float: right; |
| cursor: pointer; |
| } |
| #error-message.hidden { |
| display: none; |
| } |
| #error-message.warning { |
| /* dark red */ |
| background-color: #927836; |
| } |
| #error-message.error { |
| /* dark red */ |
| background-color: #900000; |
| } |
| #status-div { |
| flex-grow: 1; |
| } |
| #status-message { |
| color: white; |
| font-family: 'Open Sans', sans-serif; |
| padding: 10px; |
| margin: 10px; |
| } |
| #status-message.connecting { |
| /* dark yellow */ |
| background-color: #927836; |
| } |
| #status-message.error { |
| /* dark red */ |
| background-color: #900000; |
| } |
| #status-message.connected { |
| /* dark green */ |
| background-color: #007000; |
| } |
| |
| /* Control panel buttons and device screen(s). */ |
| |
| #controls-and-displays { |
| height: calc(100% - 84px); |
| |
| /* Items inside this use a row Flexbox.*/ |
| display: flex; |
| } |
| |
| #controls-and-displays > div { |
| margin-left: 5px; |
| margin-right: 5px; |
| } |
| |
| .modal { |
| /* Start out hidden, and use absolute positioning. */ |
| display: none; |
| position: absolute; |
| |
| border-radius: 10px; |
| padding: 20px; |
| padding-top: 1px; |
| |
| background-color: #5f6368ea; /* Semi-transparent Google grey 500 */ |
| color: white; |
| font-family: 'Open Sans', sans-serif; |
| } |
| .modal-header { |
| cursor: move; |
| /* Items inside this use a row Flexbox.*/ |
| display: flex; |
| justify-content: space-between; |
| } |
| .modal-close { |
| color: white; |
| border: none; |
| outline: none; |
| background-color: transparent; |
| } |
| .modal-button, .modal-button-highlight { |
| background: #e8eaed; /* Google grey 200 */ |
| border-radius: 10px; |
| box-shadow: 1px 1px #444444; |
| padding: 10px 20px; |
| color: #000000; |
| display: inline-block; |
| font: normal bold 14px/1 "Open Sans", sans-serif; |
| text-align: center; |
| } |
| #bluetooth-wizard-mac:valid { |
| border: 2px solid black; |
| } |
| #bluetooth-wizard-mac:invalid { |
| border: 2px solid red; |
| } |
| #bluetooth-wizard-mac:invalid + span::before { |
| font-weight: bold; |
| content: 'X'; |
| color: red; |
| } |
| #bluetooth-wizard-mac:valid + span::before { |
| font-weight: bold; |
| content: 'OK'; |
| color: green; |
| } |
| .modal-button { |
| background: #e8eaed; /* Google grey 200 */ |
| } |
| .modal-button-highlight { |
| background: #f4cccc; |
| } |
| #device-details-modal span { |
| white-space: pre; |
| } |
| #bluetooth-console-input { |
| width: 100%; |
| } |
| #bluetooth-console-cmd-label { |
| color: white; |
| } |
| .bluetooth-text, .bluetooth-text-bold, .bluetooth-text-field input { |
| font: normal 18px/1 "Open Sans", sans-serif; |
| } |
| .bluetooth-text, .bluetooth-text-bold { |
| color: white; |
| } |
| .bluetooth-text-bold { |
| font: bold; |
| } |
| .bluetooth-button { |
| text-align: center; |
| } |
| .bluetooth-drop-down select { |
| font: normal 18px/1 "Open Sans", sans-serif; |
| color: black; |
| width: 500px; |
| margin: 5px; |
| rows: 10; |
| columns: 60; |
| } |
| .bluetooth-text-field input { |
| color: black; |
| width: 500px; |
| margin: 5px; |
| rows: 10; |
| columns: 60; |
| } |
| .bluetooth-list-trash { |
| background: #00000000; |
| border: 0px; |
| color: #ffffff; |
| } |
| |
| .control-panel-column { |
| width: 50px; |
| /* Items inside this use a column Flexbox.*/ |
| display: flex; |
| flex-direction: column; |
| } |
| #control-panel-custom-buttons { |
| display: none; |
| /* Give the custom buttons column a blue background. */ |
| background-color: #1c4587ff; |
| height: fit-content; |
| border-radius: 10px; |
| } |
| |
| .control-panel-column button { |
| margin: 0px 0px 5px 0px; |
| height: 50px; |
| font-size: 32px; |
| |
| color: #e8eaed; /* Google grey 200 */ |
| border: none; |
| outline: none; |
| background-color: transparent; |
| } |
| .control-panel-column button:disabled { |
| color: #9aa0a6; /* Google grey 500 */ |
| } |
| .control-panel-column button.modal-button-opened { |
| border-radius: 10px; |
| background-color: #5f6368; /* Google grey 700 */ |
| } |
| |
| #device-displays { |
| /* Take up the remaining width of the window.*/ |
| flex-grow: 1; |
| /* Don't grow taller than the window.*/ |
| max-height: 100vh; |
| /* Allows child elements to be positioned relative to this element. */ |
| position: relative; |
| } |
| |
| /* |
| * Container <div> used to wrap each display's <video> element which is used for |
| * maintaining each display's width and height while the display is potentially |
| * rotating. |
| */ |
| .device-display { |
| /* Prevents #device-displays from using this element when computing flex size. */ |
| position: absolute; |
| } |
| |
| /* Container <div> to show info about the individual display. */ |
| .device-display-info { |
| color: white; |
| /* dark green */ |
| background-color: #007000; |
| font-family: 'Open Sans', sans-serif; |
| text-indent: 0px; |
| border-radius: 10px; |
| padding: 10px; |
| margin-bottom: 10px; |
| } |
| |
| /* The actual <video> element for each display. */ |
| .device-display-video { |
| position: absolute; |
| left: 0px; |
| touch-action: none; |
| object-fit: cover; |
| } |