blob: 6e9318d44fc7bbae470eb1c0af548532de969414 [file] [log] [blame]
/* Copyright 2019 The Chromium Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file. */
html {
height: 100%; /* Required for printing. */
}
audio {
display: none;
}
body {
background: black;
bottom: 0;
height: 100%;
left: 0;
margin: 0;
overflow: hidden;
position: absolute;
top: 0;
width: 100%;
}
.scrollbar-track {
padding: 2px;
position: fixed;
}
.scrollbar-track-horizontal {
bottom: 0;
left: 0;
right: 0;
}
.scrollbar-track-vertical {
bottom: 0;
right: 0;
top: 0;
}
.scrollbar-thumb {
background: white;
border: 1px solid #555;
border-radius: 3px;
box-sizing: border-box;
opacity: 0.4;
position: absolute;
transition: opacity 100ms;
}
.scrollbar-track .scrollbar-thumb:hover {
opacity: 0.6;
}
.scrollbar-track .scrollbar-thumb:active {
opacity: 0.8;
}
.scrollbar-track-horizontal,
.scrollbar-track-horizontal .scrollbar-thumb {
height: 8px;
}
.scrollbar-track-vertical,
.scrollbar-track-vertical .scrollbar-thumb {
width: 8px;
}
button,
input {
background-color: transparent;
border-radius: 4px;
border-style: none;
margin: 0;
outline: none;
padding: 0;
pointer-events: auto;
position: relative;
}
input {
-webkit-appearance: none;
}
button:focus:after,
input:focus:after {
border: 2px solid rgba(37, 129, 223, 0.7);
border-radius: 4px;
bottom: -3px;
content: '';
left: -3px;
position: absolute;
right: -3px;
top: -3px;
}
#browser .media-wrapper:focus {
/* Make elements have the same focus style. */
outline: 2px solid rgba(37, 129, 223, 0.7);
}
.circle button,
.circle button:focus:after,
.circle input:focus:after {
border-radius: 50%;
}
.buttons {
align-items: center;
display: flex;
justify-content: center;
pointer-events: none;
}
.buttons button:active,
.buttons input:active {
transform: scale(1.07);
}
.buttons button,
.buttons input,
.menu-header .icon,
.menu-item .icon {
background-position: center;
background-repeat: no-repeat;
flex-shrink: 0;
height: 40px;
width: 40px;
}
#browser-print {
background-image: url(../images/browser_button_print.svg);
}
#browser-export {
background-image: url(../images/browser_button_export.svg);
}
#browser-back {
background-image: url(../images/browser_button_back.svg);
}
#browser-delete {
background-image: url(../images/browser_button_delete.svg);
}
::-webkit-scrollbar {
height: 0;
width: 0;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: transparent;
height: 0;
width: 0;
}
.top-stripe {
position: absolute;
top: 48px;
transform: translateY(-50%);
}
body.shift-top-stripe .top-stripe {
top: 0; /* Calculate at runtime. */
}
.bottom-stripe,
body:not(.tablet-landscape) .actions-group {
bottom: 56px;
position: absolute;
transform: translateY(50%);
}
body.tablet-landscape .bottom-stripe {
bottom: 48px;
}
body.shift-bottom-stripe .bottom-stripe,
body.shift-bottom-stripe:not(.tablet-landscape) .actions-group {
bottom: 0; /* Calculate at runtime. */
}
.left-stripe {
left: 48px;
position: absolute;
transform: translateX(-50%);
}
body.shift-left-stripe .left-stripe {
left: 0; /* Calculate at runtime. */
}
.right-stripe,
body.tablet-landscape .actions-group {
position: absolute;
right: 56px;
transform: translateX(50%);
}
body:not(.tablet-landscape) .right-stripe {
right: 48px;
}
body.shift-right-stripe .right-stripe,
body.shift-right-stripe.tablet-landscape .actions-group {
right: 0; /* Calculate at runtime. */
}
.top-stripe.right-stripe {
transform: translate(50%, -50%);
}
.top-stripe.left-stripe {
transform: translate(-50%, -50%);
}
.bottom-stripe.right-stripe {
transform: translate(50%, 50%);
}
.bottom-stripe.left-stripe {
transform: translate(-50%, 50%);
}
.actions-group button {
margin: 0 8px;
}
body.tablet-landscape .actions-group {
flex-direction: column-reverse;
}
body.tablet-landscape .actions-group button {
margin: 8px 0;
}
#shutter {
background-image: url(../images/camera_shutter_photo_start.svg);
height: 72px;
width: 72px;
z-index: 1; /* On top of transforming switch-mode buttons. */
}
#shutter:hover {
background-image: url(../images/camera_shutter_photo_start_hover.svg);
}
#shutter:active {
background-image: url(../images/camera_shutter_photo_start_active.svg);
}
body.taking.timer #shutter {
background-image: url(../images/camera_shutter_photo_stop.svg);
}
body.taking.timer #shutter:hover {
background-image: url(../images/camera_shutter_photo_stop_hover.svg);
}
body.record-mode #shutter {
background-image: url(../images/camera_shutter_recording_start.svg);
}
body.record-mode #shutter:hover {
background-image: url(../images/camera_shutter_recording_start_hover.svg);
}
body.record-mode.taking #shutter {
background-image: url(../images/camera_shutter_recording_stop.svg);
}
body.record-mode.taking #shutter:hover {
background-image: url(../images/camera_shutter_recording_stop_hover.svg);
}
#switch-recordvideo,
#switch-takephoto {
height: 56px;
width: 56px;
}
#switch-recordvideo {
background-image: url(../images/camera_button_switch_video.svg);
transition: transform 50ms;
}
#switch-takephoto {
background-image: url(../images/camera_button_switch_photo.svg);
transition: transform 50ms;
}
body.record-mode #switch-recordvideo {
transform: translateX(-160px);
}
body.tablet-landscape.record-mode #switch-recordvideo {
transform: translateY(160px);
}
body:not(.record-mode) #switch-takephoto {
transform: translateX(160px);
}
body.tablet-landscape:not(.record-mode) #switch-takephoto {
transform: translateY(-160px);
}
body.record-mode #switch-recordvideo,
body:not(.record-mode) #switch-takephoto,
body:not(.record-mode) #toggle-mic,
body:not(.multi-camera) #switch-device {
visibility: hidden;
}
#camera-mode {
background-image: url(../images/camera_mode_photo.svg);
height: 40px;
visibility: hidden;
width: 40px;
}
body.record-mode #camera-mode {
background-image: url(../images/camera_mode_recording.svg);
}
body.mode-switching:not(.streaming) #camera-mode {
visibility: visible;
}
#timer-tick-msg {
color: white;
font-family: 'Roboto', sans-serif;
font-size: 72px;
visibility: hidden;
}
#timer-tick-msg.animate {
opacity: 0.2;
transform: scale(1.8, 1.8);
transition: transform 500ms ease-out, opacity 500ms ease-out;
visibility: visible;
}
#switch-device {
background-image: url(../images/camera_button_switch_device.svg);
height: 48px;
width: 48px;
}
#switch-device.animate {
animation: switch-device-rotate 350ms ease-out;
}
@keyframes switch-device-rotate {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(-180deg);
}
}
#gallery-enter {
background-color: rgba(24, 24, 24, 1);
background-size: cover;
height: 48px;
position: relative;
width: 48px;
}
.centered-overlay {
left: 50%;
position: absolute;
top: 50%;
transform: translate(-50%, -50%);
}
.options-group {
flex-direction: column;
}
.options-group input {
margin: 18px 0;
}
body._3sec #toggle-timer:checked {
background-image: url(../images/camera_button_timer_on_3s.svg);
}
body._10sec #toggle-timer:checked {
background-image: url(../images/camera_button_timer_on_10s.svg);
}
#toggle-timer {
background-image: url(../images/camera_button_timer_off.svg);
}
#toggle-grid:checked {
background-image: url(../images/camera_button_grid_on.svg);
}
#toggle-grid {
background-image: url(../images/camera_button_grid_off.svg);
}
#toggle-mirror:checked {
background-image: url(../images/camera_button_mirror_on.svg);
}
#toggle-mirror {
background-image: url(../images/camera_button_mirror_off.svg);
}
#toggle-mic:checked {
background-image: url(../images/camera_button_mic_on.svg);
}
#toggle-mic {
background-image: url(../images/camera_button_mic_off.svg);
}
#open-settings {
background-image: url(../images/camera_button_settings.svg);
}
#camera,
#settings,
#gridsettings,
#timersettings,
#browser,
#dialog,
#warning {
bottom: 0;
left: 0;
opacity: 0;
overflow: auto;
position: absolute;
right: 0;
top: 0;
visibility: hidden;
}
body.camera #camera,
body.settings #settings,
body.gridsettings #gridsettings,
body.timersettings #timersettings,
body.browser #browser,
body.dialog #dialog,
body.warning #warning {
opacity: 1;
transition: opacity 100ms;
visibility: visible;
}
body.gridsettings #gridsettings,
body.timersettings #timersettings,
body.settings #settings {
/* Avoid flicking for transition between settings. */
transition: opacity 0ms;
}
body.settings .left-stripe,
body.gridsettings .left-stripe,
body.gridsettings #settings,
body.timersettings .left-stripe,
body.timersettings #settings {
opacity: 0;
}
#camera,
#preview-wrapper {
align-items: center;
display: flex;
justify-content: center;
overflow: hidden;
}
body.shift-preview-top #preview-wrapper {
position: absolute;
top: 0;
}
body.shift-preview-left #preview-wrapper {
left: 0;
position: absolute;
}
#preview-wrapper,
#preview-video {
flex-shrink: 0;
pointer-events: none;
position: relative;
}
body.streaming #preview-video {
pointer-events: auto;
}
body.mirror #preview-video,
body.mirror #preview-focus {
transform: scaleX(-1);
}
#preview-focus {
bottom: 0;
left: 0;
position: absolute;
right: 0;
top: 0;
}
#preview-focus-aim {
position: absolute;
transform: translate(-50%, -50%);
}
body:not(.streaming) #preview-video {
filter: blur(10px);
/* Scale up to hide blurred edges. */
transform: scale(1.03, 1.03);
}
body.mirror:not(.streaming) #preview-video {
transform: scale(-1.03, 1.03);
}
#preview-grid {
bottom: 0;
left: 0;
opacity: 0.5;
position: absolute;
right: 0;
top: 0;
}
body:not(.streaming) #preview-grid,
body:not(.streaming) #preview-focus,
body:not(.streaming) #open-settings,
body:not(.streaming) #toggle-mic,
body:not(.streaming) .options-group {
visibility: hidden;
}
#preview-grid-horizontal {
border-bottom: 1px solid white;
border-top: 1px solid white;
height: 100%;
left: 0;
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
}
body._4x4 #preview-grid-horizontal:before {
border-bottom: 1px solid white;
content: '';
height: 0;
left: 0;
position: absolute;
right: 0;
top: 0;
}
body.grid._3x3 #preview-grid-horizontal,
body.gridsettings._3x3 #preview-grid-horizontal {
height: 33.333%;
}
body.grid.golden #preview-grid-horizontal,
body.gridsettings.golden #preview-grid-horizontal {
height: 23.607%;
}
body.grid._4x4 #preview-grid-horizontal,
body.grid._4x4 #preview-grid-horizontal:before,
body.gridsettings._4x4 #preview-grid-horizontal,
body.gridsettings._4x4 #preview-grid-horizontal:before {
height: 50%;
}
#preview-grid-vertical {
border-left: 1px solid white;
border-right: 1px solid white;
bottom: 0;
left: 50%;
position: absolute;
top: 0;
transform: translateX(-50%);
width: 100%;
}
body._4x4 #preview-grid-vertical:before {
border-right: 1px solid white;
bottom: 0;
content: '';
left: 0;
position: absolute;
top: 0;
width: 0;
}
body.grid._3x3 #preview-grid-vertical,
body.gridsettings._3x3 #preview-grid-vertical {
width: 33.333%;
}
body.grid.golden #preview-grid-vertical,
body.gridsettings.golden #preview-grid-vertical {
width: 23.607%;
}
body.grid._4x4 #preview-grid-vertical,
body.grid._4x4 #preview-grid-vertical:before,
body.gridsettings._4x4 #preview-grid-vertical,
body.gridsettings._4x4 #preview-grid-vertical:before {
width: 50%;
}
#preview-grid-horizontal.animate,
#preview-grid-horizontal.animate:before {
transition: height 500ms, visibility 500ms;
}
#preview-grid-vertical.animate,
#preview-grid-vertical.animate:before {
transition: width 500ms, visibility 500ms;
}
body:not(.grid):not(.gridsettings) #preview-grid-horizontal,
body:not(.grid):not(.gridsettings) #preview-grid-horizontal:before,
body:not(.grid):not(.gridsettings) #preview-grid-vertical,
body:not(.grid):not(.gridsettings) #preview-grid-vertical:before {
visibility: hidden;
}
#record-time {
align-items: center;
background-color: rgba(0, 0, 0, 0.2);
border-radius: 4px;
display: flex;
height: 32px;
justify-content: flex-start;
padding: 0 12px;
pointer-events: none;
}
#record-time[hidden],
.menu-item[hidden] {
display: none; /* Required for flexbox hidden. */
}
#record-time .icon {
background-color: #ea4335;
border-radius: 50%;
flex-shrink: 0;
height: 6px;
width: 6px;
}
#record-time #record-time-msg {
color: white;
flex-shrink: 0;
font-family: 'Roboto', sans-serif;
font-size: 13px;
margin-left: 8px;
}
#browser .buttons {
left: 10px;
position: fixed;
top: 10px;
}
#browser .buttons button {
margin: 0 8px;
}
#browser .buttons button[disabled],
body.ext-fs #browser-export {
display: none;
}
#browser {
background: black;
}
#browser .padder {
align-items: center;
display: flex;
height: 100%;
}
#browser div.media-wrapper {
align-items: center;
display: flex;
flex-shrink: 0;
justify-content: center;
margin: 4%;
pointer-events: auto;
}
#browser div.bounds-padder {
display: flex;
flex-shrink: 0;
height: 1px; /* Required to make the element visible. */
width: 50%;
}
@media print {
html {
height: 100%; /* Required for printing. */
}
body {
height: auto;
overflow: visible;
position: static;
width: 100%;
}
/* Reset background colors. */
body,
#browser {
background: transparent;
}
/* Hide the buttons and scroll bars. */
.buttons,
.scrollbar-track {
display: none;
}
/* Hide all root elements, except the printed view. */
body.browser > :not(#browser) {
display: none;
}
/* Hide everything from the browser view, but the selected one(s). */
#browser .padder > :not(.selected) {
display: none;
}
#browser .padder {
align-items: flex-start;
}
/* Set default styles and max-dimensions for printing the browser view. */
#browser div.media-wrapper.selected {
border: none;
box-shadow: none;
display: block; /* Allows to keep aspect ratio of children. */
margin: auto;
position: absolute;
}
#browser div.media-wrapper.selected img,
#browser div.media-wrapper.selected video {
height: auto;
max-height: 100%;
max-width: 100%;
width: auto;
}
#browser video::-webkit-media-controls {
display: none;
}
}
#tooltip {
background: rgba(241, 243, 244, 0.8);
border-radius: 2px;
color: #202124;
font-family: 'Roboto', sans-serif;
font-size: 12px;
left: 0;
line-height: 22px;
opacity: 0;
padding: 0 8px;
pointer-events: none;
position: absolute;
top: 0;
white-space: nowrap;
z-index: 100;
}
#tooltip.visible {
opacity: 1;
transition: opacity 350ms ease-out 1500ms;
}
#toast {
background: #1e1e23;
border-radius: 16px;
color: white;
font-family: 'Roboto', sans-serif;
font-size: 16px;
line-height: 32px;
opacity: 0;
padding: 0 16px;
pointer-events: none;
z-index: 100;
}
#toast.animate.spoken {
animation: toast-spoken 3000ms ease-out;
}
#toast.animate:not(.spoken) {
animation: toast-shown 3000ms ease-out;
}
@keyframes toast-spoken {
0%, 100% {
opacity: 0;
}
}
@keyframes toast-shown {
0% {
opacity: 0;
}
10%, 90% {
opacity: 0.9;
}
100% {
opacity: 0;
}
}
.menu {
background: rgba(0, 0, 0, 0.75);
display: flex;
flex-direction: column;
height: 100%;
left: 0px;
min-width: 360px;
opacity: 0.9;
position: absolute;
top: 0px;
}
.menu-header,
.menu-item {
align-items: center;
color: #f1f3f4;
display: flex;
flex-shrink: 0;
font-family: 'Roboto', sans-serif;
font-size: 13px;
height: 64px;
justify-content: flex-start;
padding: 0 20px 0 24px;
text-align: left;
}
.menu-header {
color: white;
font-size: 20px;
height: 88px;
}
.menu-header .icon,
.menu-item .icon {
margin-right: 6px;
}
.menu-item .end {
margin-left: auto;
}
.menu-item .description {
color: #bdc1c6;
margin-top: 5px;
}
.menu-item .description span {
display: none;
}
body._3x3 .description span[i18n-content=label_grid_3x3],
body._4x4 .description span[i18n-content=label_grid_4x4],
body.golden .description span[i18n-content=label_grid_golden],
body._3sec .description span[i18n-content=label_timer_3s],
body._10sec .description span[i18n-content=label_timer_10s] {
display: inline;
}
.menu-item input:before {
border-radius: 50%;
bottom: 13px;
box-shadow: 0px 0px 0px 2px #f1f3f4;
content: '';
left: 13px;
position: absolute;
right: 13px;
top: 13px;
}
.menu-item input:checked:before {
background-clip: padding-box;
background-color: #f1f3f4;
border: 4px solid transparent;
bottom: 12px;
box-shadow: 0px 0px 0px 1px #f1f3f4;
left: 12px;
right: 12px;
top: 12px;
transition: border-width 100ms ease-in;
}
.menu-item:focus:after {
left: 2px;
right: 2px;
}
.menu-header .icon {
background-image: url(../images/settings_button_back.svg);
}
#settings-gridtype .icon {
background-image: url(../images/settings_grid_type.svg);
}
#settings-timerdur .icon {
background-image: url(../images/settings_timer_duration.svg);
}
#settings-feedback .icon {
background-image: url(../images/settings_feedback.svg);
}
#settings-help .icon {
background-image: url(../images/settings_help.svg);
}
#settings-gridtype .icon.end,
#settings-timerdur .icon.end {
background-image: url(../images/settings_button_expand.svg);
}
#warning,
#dialog {
align-items: center;
display: flex;
justify-content: center;
z-index: 1;
}
#warning {
background: black;
color: white;
}
#warning #error-msg {
font-family: 'Roboto', sans-serif;
font-size: 18px;
line-height: 32px;
text-align: center;
white-space: pre-wrap;
}
#dialog {
background: rgba(0, 0, 0, 0.8);
}
#dialog-popup {
background: white;
border-radius: 4px;
display: flex;
flex-direction: column;
padding: 20px;
transform: translateY(20px);
transition: transform 200ms;
}
body.dialog #dialog #dialog-popup {
transform: translateY(0);
}
#dialog #dialog-msg {
color: #202124;
cursor: text;
font-family: 'Roboto', sans-serif;
font-size: 14px;
max-height: 320px;
max-width: 472px;
overflow: auto;
padding: 20px 0;
user-select: text; /* Allow copying the message. */
white-space: pre-wrap;
}
#dialog #dialog-msg::-webkit-scrollbar {
height: 6px;
width: 6px;
}
#dialog #dialog-msg::-webkit-scrollbar-track {
background: transparent;
}
#dialog #dialog-msg::-webkit-scrollbar-thumb {
background: gray;
height: 6px;
width: 6px;
}
#dialog-buttons {
align-items: center;
display: flex;
justify-content: flex-end;
margin: 0 -2px;
}
#dialog-buttons button {
background-color: white;
border-style: solid;
color: #2581df;
font-family: 'Roboto', sans-serif;
font-size: 12px;
margin: 4px;
padding: 6px 18px;
}
#dialog-buttons button:focus {
background-color: #2581df;
border-color: #2581df;
color: white;
}
#dialog-buttons button:focus:after {
border: none;
}
#spinner {
background-image: url(../images/spinner.svg);
height: 32px;
visibility: hidden;
width: 32px;
z-index: 1;
}
body:not(.mode-switching):not(.streaming) #spinner {
visibility: visible;
}