1/* 2 * Copyright (C) 2019 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17body { 18 background-color:black; 19 margin: 0; 20 touch-action: none; 21 overscroll-behavior: none; 22} 23 24#device-connection { 25 display: none; 26 max-height: 100vh; 27} 28 29@keyframes spin { 30 0% { transform: rotate(0deg); } 31 100% { transform: rotate(360deg); } 32} 33 34#loader { 35 border-left: 12px solid #4285F4; 36 border-top: 12px solid #34A853; 37 border-right: 12px solid #FBBC05; 38 border-bottom: 12px solid #EA4335; 39 border-radius: 50%; 40 width: 70px; 41 height: 70px; 42 animation: spin 1.2s linear infinite; 43 margin: 100px; 44} 45 46/* Top header row. */ 47 48#header { 49 height: 64px; 50 /* Items inside this use a row Flexbox.*/ 51 display: flex; 52 align-items: center; 53} 54 55#camera-control { 56 display: none !important; 57} 58#record-video-control { 59 display: none !important; 60} 61 62#app-controls { 63 margin-left: 10px; 64} 65#app-controls > div { 66 display: inline-block; 67 position: relative; 68 margin-right: 6px; 69} 70#device-audio { 71 height: 44px; 72} 73 74#error-message-div { 75 flex-grow: 1; 76} 77#error-message { 78 color: white; 79 font-family: 'Open Sans', sans-serif; 80 padding: 10px; 81 margin: 10px; 82 border-radius: 10px; 83} 84#error-message .close-btn { 85 float: right; 86 cursor: pointer; 87} 88#error-message.hidden { 89 display: none; 90} 91#error-message.warning { 92 /* dark red */ 93 background-color: #927836; 94} 95#error-message.error { 96 /* dark red */ 97 background-color: #900000; 98} 99#status-div { 100 flex-grow: 1; 101} 102#status-message { 103 color: white; 104 font-family: 'Open Sans', sans-serif; 105 padding: 10px; 106 margin: 10px; 107} 108#status-message.connecting { 109 /* dark yellow */ 110 background-color: #927836; 111} 112#status-message.error { 113 /* dark red */ 114 background-color: #900000; 115} 116#status-message.connected { 117 /* dark green */ 118 background-color: #007000; 119} 120 121/* Control panel buttons and device screen(s). */ 122 123#controls-and-displays { 124 height: calc(100% - 84px); 125 126 /* Items inside this use a row Flexbox.*/ 127 display: flex; 128} 129 130#controls-and-displays > div { 131 margin-left: 5px; 132 margin-right: 5px; 133} 134 135.modal { 136 /* Start out hidden, and use absolute positioning. */ 137 display: none; 138 position: absolute; 139 140 border-radius: 10px; 141 padding: 20px; 142 padding-top: 1px; 143 144 background-color: #5f6368ea; /* Semi-transparent Google grey 500 */ 145 color: white; 146 font-family: 'Open Sans', sans-serif; 147} 148.modal-header { 149 cursor: move; 150 /* Items inside this use a row Flexbox.*/ 151 display: flex; 152 justify-content: space-between; 153} 154.modal-close { 155 color: white; 156 border: none; 157 outline: none; 158 background-color: transparent; 159} 160.modal-button, .modal-button-highlight { 161 background: #e8eaed; /* Google grey 200 */ 162 border-radius: 10px; 163 box-shadow: 1px 1px #444444; 164 padding: 10px 20px; 165 color: #000000; 166 display: inline-block; 167 font: normal bold 14px/1 "Open Sans", sans-serif; 168 text-align: center; 169} 170#bluetooth-wizard-mac:valid { 171 border: 2px solid black; 172} 173#bluetooth-wizard-mac:invalid { 174 border: 2px solid red; 175} 176#bluetooth-wizard-mac:invalid + span::before { 177 font-weight: bold; 178 content: 'X'; 179 color: red; 180} 181#bluetooth-wizard-mac:valid + span::before { 182 font-weight: bold; 183 content: 'OK'; 184 color: green; 185} 186.modal-button { 187 background: #e8eaed; /* Google grey 200 */ 188} 189.modal-button-highlight { 190 background: #f4cccc; 191} 192#device-details-modal span { 193 white-space: pre; 194} 195#bluetooth-console-input { 196 width: 100%; 197} 198#bluetooth-console-cmd-label { 199 color: white; 200} 201.bluetooth-text, .bluetooth-text-bold, .bluetooth-text-field input { 202 font: normal 18px/1 "Open Sans", sans-serif; 203} 204.bluetooth-text, .bluetooth-text-bold { 205 color: white; 206} 207.bluetooth-text-bold { 208 font: bold; 209} 210.bluetooth-button { 211 text-align: center; 212} 213.bluetooth-drop-down select { 214 font: normal 18px/1 "Open Sans", sans-serif; 215 color: black; 216 width: 500px; 217 margin: 5px; 218 rows: 10; 219 columns: 60; 220} 221.bluetooth-text-field input { 222 color: black; 223 width: 500px; 224 margin: 5px; 225 rows: 10; 226 columns: 60; 227} 228.bluetooth-list-trash { 229 background: #00000000; 230 border: 0px; 231 color: #ffffff; 232} 233 234.control-panel-column { 235 width: 50px; 236 /* Items inside this use a column Flexbox.*/ 237 display: flex; 238 flex-direction: column; 239} 240#control-panel-custom-buttons { 241 display: none; 242 /* Give the custom buttons column a blue background. */ 243 background-color: #1c4587ff; 244 height: fit-content; 245 border-radius: 10px; 246} 247 248.control-panel-column button { 249 margin: 0px 0px 5px 0px; 250 height: 50px; 251 font-size: 32px; 252 253 color: #e8eaed; /* Google grey 200 */ 254 border: none; 255 outline: none; 256 background-color: transparent; 257} 258.control-panel-column button:disabled { 259 color: #9aa0a6; /* Google grey 500 */ 260} 261.control-panel-column button.modal-button-opened { 262 border-radius: 10px; 263 background-color: #5f6368; /* Google grey 700 */ 264} 265 266#device-displays { 267 /* Take up the remaining width of the window.*/ 268 flex-grow: 1; 269 /* Don't grow taller than the window.*/ 270 max-height: 100vh; 271 /* Allows child elements to be positioned relative to this element. */ 272 position: relative; 273} 274 275/* 276 * Container <div> used to wrap each display's <video> element which is used for 277 * maintaining each display's width and height while the display is potentially 278 * rotating. 279 */ 280.device-display { 281 /* Prevents #device-displays from using this element when computing flex size. */ 282 position: absolute; 283} 284 285/* Container <div> to show info about the individual display. */ 286.device-display-info { 287 color: white; 288 /* dark green */ 289 background-color: #007000; 290 font-family: 'Open Sans', sans-serif; 291 text-indent: 0px; 292 border-radius: 10px; 293 padding: 10px; 294 margin-bottom: 10px; 295} 296 297/* The actual <video> element for each display. */ 298.device-display-video { 299 position: absolute; 300 left: 0px; 301 touch-action: none; 302 object-fit: cover; 303} 304