blob: ebad7bd2a33ecb0b109f952a9b6e91c12be010fd [file] [log] [blame]
/* Copyright (c) 2012 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. */
body {
-webkit-user-select: none;
font-family: Open Sans, Droid Sans Fallback, sans-serif;
font-size: 84%;
margin: 0;
}
.gallery,
.gallery .content {
bottom: 0;
left: 0;
overflow: hidden;
position: absolute;
right: 0;
top: 0;
}
/* Common background for both mosaic and slide mode. */
.gallery .content {
background-color: black;
}
/* Close button */
/* We actually want (left,top) to be (0,0) but for some weird reason
this triggers :hover style on page reload which is ugly. */
.gallery > .back-button {
cursor: pointer;
left: 1px;
position: absolute;
top: 1px;
z-index: 200;
}
/* The close icon is in a nested div so that its opacity can be manipulated
independently from its parent (which can be dimmed when the crop frame
overlaps it) */
.gallery > .back-button div {
background-image: -webkit-image-set(
url('../images/gallery/back_to_files.png') 1x,
url('../images/gallery/2x/back_to_files.png') 2x);
background-position: center center;
background-repeat: no-repeat;
height: 40px;
opacity: 0;
width: 64px;
}
.gallery[tools] > .back-button div {
opacity: 0.5;
}
.gallery[tools] > .back-button div:hover {
opacity: 1;
}
/* Image container and canvas elements */
.gallery .image-container {
cursor: none; /* Only visible when the toolbar is active */
height: 100%;
position: absolute;
width: 100%;
}
.gallery[tools] .image-container[cursor='default'] {
cursor: default;
}
.gallery[tools] .image-container[cursor='move'] {
cursor: -webkit-image-set(
url('../images/gallery/cursor_move.png') 1x,
url('../images/gallery/2x/cursor_move.png') 2x) 15 15;
}
.gallery[tools] .image-container[cursor='crop'] {
cursor: -webkit-image-set(
url('../images/gallery/cursor_crop.png') 1x,
url('../images/gallery/2x/cursor_crop.png') 2x) 15 15;
}
.gallery[tools] .image-container[cursor='n-resize'],
.gallery[tools] .image-container[cursor='s-resize'] {
cursor: -webkit-image-set(
url('../images/gallery/cursor_updown.png') 1x,
url('../images/gallery/2x/cursor_updown.png') 2x) 15 15;
}
.gallery[tools] .image-container[cursor='e-resize'],
.gallery[tools] .image-container[cursor='w-resize'] {
cursor: -webkit-image-set(
url('../images/gallery/cursor_leftright.png') 1x,
url('../images/gallery/2x/cursor_leftright.png') 2x) 15 15;
}
.gallery[tools] .image-container[cursor='nw-resize'],
.gallery[tools] .image-container[cursor='se-resize'] {
cursor: -webkit-image-set(
url('../images/gallery/cursor_nwse.png') 1x,
url('../images/gallery/2x/cursor_nwse.png') 2x) 15 15;
}
.gallery[tools] .image-container[cursor='ne-resize'],
.gallery[tools] .image-container[cursor='sw-resize'] {
cursor: -webkit-image-set(
url('../images/gallery/cursor_swne.png') 1x,
url('../images/gallery/2x/cursor_swne.png') 2x) 15 15;
}
.gallery .image-container > .image {
pointer-events: none;
position: absolute;
/* Duration and timing function are set in Javascript. */
transition-property: -webkit-transform, opacity;
}
.gallery .image-container > .image[fade] {
opacity: 0;
}
/* Full resolution image is invisible unless printing. */
.gallery .image-container > canvas.fullres {
display: none;
}
@media print {
/* Do not print anything but the image content. */
.gallery > :not(.content) {
display: none !important;
}
/* Center the printed image. */
.gallery .image-container {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
display: -webkit-box;
}
/* Do not print the screen resolution image. */
.gallery .image-container > canvas.image {
display: none !important;
}
/* Print the full resolution image instead. */
.gallery .image-container > canvas.fullres {
display: block !important;
max-height: 100%;
max-width: 100%;
}
/* Print video at the center of the page */
.gallery .image-container > video.image {
position: auto !important;
}
}
/* Toolbar */
.gallery > .header,
.gallery > .toolbar {
-webkit-box-align: stretch;
-webkit-box-orient: horizontal;
-webkit-box-pack: start;
background-color: rgba(30, 30, 30, 0.8);
display: -webkit-box;
left: 0;
opacity: 0;
padding: 0 10px;
pointer-events: none;
position: absolute;
right: 0;
transition: opacity 300ms ease;
}
.gallery > .header {
-webkit-box-align: center;
-webkit-box-pack: end;
border-bottom: 1px solid rgba(50, 50, 50, 0.8);
display: -webkit-box;
height: 45px;
top: 0;
}
.gallery > .toolbar {
border-top: 1px solid rgba(50, 50, 50, 0.8);
bottom: 0;
height: 55px;
min-width: 800px;
}
.gallery[tools]:not([slideshow]) > .header,
.gallery[tools]:not([slideshow]) > .toolbar {
opacity: 1;
pointer-events: auto;
}
/* Hide immediately when entering the slideshow. */
.gallery[tools][slideshow] > .toolbar {
transition-duration: 0;
}
.gallery[tools][locked] > .toolbar {
pointer-events: none;
}
.gallery .arrow-box {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
display: -webkit-box;
height: 100%;
pointer-events: none;
position: absolute;
width: 100%;
z-index: 100;
}
.gallery .arrow-box .arrow {
opacity: 0;
pointer-events: none;
}
.gallery .arrow-box .arrow-spacer {
-webkit-box-flex: 1;
pointer-events: none;
}
.gallery[tools] .arrow-box[active] .arrow {
cursor: pointer;
opacity: 1;
pointer-events: auto;
}
/* The arrow icons are in nested divs so that their opacity can be manipulated
* independently from their parent (which can be dimmed when the crop frame
* overlaps it) */
.gallery .arrow div {
background-position: center center;
background-repeat: no-repeat;
height: 193px;
opacity: 0;
width: 105px;
}
.gallery[tools] .arrow-box[active] .arrow div {
opacity: 0.25;
}
.gallery[tools] .arrow-box[active] .arrow div:hover {
opacity: 1;
}
.gallery .arrow.left div {
background-image: -webkit-image-set(
url('../images/gallery/arrow_left.png') 1x,
url('../images/gallery/2x/arrow_left.png') 2x);
}
.gallery .arrow.right div {
background-image: -webkit-image-set(
url('../images/gallery/arrow_right.png') 1x,
url('../images/gallery/2x/arrow_right.png') 2x);
}
/* Special behavior on mouse drag.
Redundant .gallery attributes included to make the rules more specific */
/* Everything but the image container should become mouse-transparent */
.gallery[tools][editing][mousedrag] * {
pointer-events: none;
}
.gallery[tools][editing][mousedrag] .image-container {
pointer-events: auto;
}
/* The editor marks elements with 'dimmed' attribute to get them out of the way
of the crop frame */
.gallery[tools][editing] [dimmed],
.gallery[tools][editing] [dimmed] * {
pointer-events: none;
}
.gallery[tools][editing] [dimmed] {
opacity: 0.2;
}
/* Filename */
.gallery .filename-spacer {
position: relative;
width: 270px;
}
.gallery .filename-spacer > * {
background-color: transparent;
overflow: hidden;
position: absolute;
transition: visibility 0 linear 180ms, all 180ms linear;
width: 260px;
}
.gallery .filename-spacer * {
color: white;
}
.gallery .filename-spacer .namebox {
height: 22px;
top: 15px;
}
.gallery[editing] .filename-spacer .namebox {
height: 21px;
top: 5px;
}
.gallery .filename-spacer .namebox {
background-color: transparent;
border: none;
box-sizing: border-box;
cursor: pointer;
display: block;
font-size: 120%;
outline: none;
overflow: hidden;
padding: 0 3px;
position: absolute;
text-overflow: ellipsis;
white-space: nowrap;
}
.gallery .filename-spacer .namebox[disabled] {
-webkit-user-select: none;
cursor: default;
}
.gallery .filename-spacer .namebox:not([disabled]):not(:focus):hover {
background-color: rgba(48, 48, 48, 1.0);
}
.gallery .filename-spacer .namebox:focus {
background-color: white;
color: black;
cursor: text;
}
.gallery .filename-spacer .options {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
-webkit-box-pack: start;
display: -webkit-box;
opacity: 0;
top: 50px;
visibility: hidden;
}
.gallery[editing] .filename-spacer .options {
opacity: 1;
top: 28px;
visibility: visible;
}
.gallery .filename-spacer .saved,
.gallery .filename-spacer .overwrite-original {
cursor: inherit;
font-size: 90%;
margin-left: 3px;
margin-right: 18px;
opacity: 0;
pointer-events: none;
transition: all linear 120ms;
}
.gallery[editing] .filename-spacer .saved {
color: white;
opacity: 0.5;
}
.gallery[editing] .filename-spacer .overwrite-original,
.gallery[editing] .filename-spacer .overwrite-original > * {
cursor: pointer;
opacity: 1;
pointer-events: auto;
}
.gallery[editing] .options[saved] .overwrite-original {
opacity: 0.5;
}
.gallery[editing] .options[saved] .overwrite-original,
.gallery[editing] .options[saved] .overwrite-original > * {
cursor: default;
pointer-events: none;
}
.gallery .filename-spacer .overwrite-original input {
margin-bottom: -2px;
margin-right: 6px;
}
.gallery .filename-spacer .saved[highlighted] {
-webkit-transform: scaleX(1.1) scaleY(1.1) rotate(0);
opacity: 1;
}
/* Bubble */
.gallery .toolbar .bubble {
bottom: 65px;
font-size: 85%;
left: 50px;
position: absolute;
width: 220px;
}
.gallery:not([editing]) .toolbar .bubble {
display: none;
}
/* Toolbar buttons */
.gallery .button-spacer {
-webkit-box-flex: 1;
display: -webkit-box;
}
/* Thumbnails */
.gallery .ribbon-spacer {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
display: -webkit-box;
height: 100%;
left: 280px;
position: absolute;
right: 280px;
}
.gallery .toolbar .ribbon {
-webkit-box-flex: 0;
-webkit-box-orient: horizontal;
-webkit-box-pack: start;
display: -webkit-box;
height: 100%;
overflow: hidden;
transition: opacity 180ms linear, visibility 0 linear;
z-index: 0;
}
.gallery[editing] .toolbar .ribbon {
opacity: 0;
transition-delay: 0, 180ms;
visibility: hidden;
}
.gallery .ribbon-image {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
border: 2px solid rgba(255, 255, 255, 0); /* transparent white */
cursor: pointer;
display: -webkit-box;
height: 47px;
margin: 2px;
overflow: hidden;
transition: all 180ms linear;
width: 47px;
}
.ribbon-image[vanishing='smooth'] {
border-left-width: 0;
border-right-width: 0;
margin-left: 0;
margin-right: 0;
width: 0;
}
.gallery .ribbon-image[selected] {
border: 2px solid rgba(255, 233, 168, 1);
}
.gallery .toolbar .ribbon.fade-left {
-webkit-mask-image: linear-gradient(to right, rgba(0, 0, 0, 0) 0,
rgba(0, 0, 0, 1) 40px);
}
.gallery .toolbar .ribbon.fade-right {
-webkit-mask-image: linear-gradient(to left, rgba(0, 0, 0, 0) 0,
rgba(0, 0, 0, 1) 40px);
}
.gallery .toolbar .ribbon.fade-left.fade-right {
-webkit-mask-image: linear-gradient(to right, rgba(0, 0, 0, 0) 0,
rgba(0, 0, 0, 1) 40px,
rgba(0, 0, 0, 1) 230px,
rgba(0, 0, 0, 0) 100%);
}
.gallery .image-wrapper {
background-size: 45px 45px;
border: 1px solid rgba(0, 0, 0, 0); /* transparent black */
height: 45px;
overflow: hidden;
position: relative;
width: 45px;
}
.gallery .image-wrapper > img {
position: absolute;
}
.gallery .image-wrapper > img:not(.cached) {
-webkit-animation: fadeIn 500ms ease-in;
}
/* Editor buttons */
.gallery .edit-bar-spacer {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
display: -webkit-box;
height: 100%;
left: 280px;
opacity: 0;
position: absolute;
right: 280px;
transition: opacity 180ms linear, visibility 0 linear 180ms;
visibility: hidden;
}
.gallery .toolbar .edit-main {
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
color: white;
display: -webkit-box;
height: 55px;
overflow: visible;
}
.gallery[editing] .edit-bar-spacer {
opacity: 1.0;
pointer-events: auto;
transition-delay: 100ms, 100ms;
visibility: visible;
}
.gallery .header button,
.gallery .toolbar button,
.gallery .header button[disabled],
.gallery .toolbar button[disabled] {
-webkit-box-align: center;
-webkit-box-flex: 0;
-webkit-box-orient: horizontal;
-webkit-box-pack: end;
background-color: rgba(0, 0, 0, 0);
background-position: center;
background-repeat: no-repeat;
border: none;
box-shadow: none;
color: white;
cursor: pointer;
display: -webkit-box;
opacity: 0.99; /* Workaround for http://crosbug.com/21065 */
padding: 1px; /* Instead of a border. */
position: relative;
z-index: 10;
}
.gallery .header button,
.gallery .toolbar button {
height: 40px;
margin: 6px 0;
min-width: 40px; /* Reset. */
width: 40px;
}
/* By default, labels are hidden. */
.gallery > .toolbar button span {
display: none;
}
/* Show labels if there is enough space. */
@media (min-width: 1180px) {
.gallery .edit-main button,
.gallery .edit-main button[disabled] {
background-position: 5px center;
max-width: 60px;
min-width: 0; /* Reset. */
padding: 0 10px 0 35px;
width: auto;
}
.gallery > .toolbar button span {
display: inline;
}
}
.gallery .header button:hover,
.gallery .toolbar button:hover {
background-color: rgba(31, 31, 31, 1);
color: white;
}
.gallery .header button:active,
.gallery .toolbar button:active,
.gallery .header button[pressed],
.gallery .toolbar button[pressed],
.gallery .header button[pressed]:hover,
.gallery .toolbar button[pressed]:hover {
background-color: rgba(240, 240, 240, 1);
color: black;
}
.gallery > .toolbar button.autofix {
background-image: -webkit-image-set(
url('../images/gallery/icon_autofix.png') 1x,
url('../images/gallery/2x/icon_autofix.png') 2x);
}
.gallery > .toolbar button.autofix:active,
.gallery > .toolbar button.autofix[pressed] {
background-image: -webkit-image-set(
url('../images/gallery/icon_autofix_selected.png') 1x,
url('../images/gallery/2x/icon_autofix_selected.png') 2x);
}
.gallery > .toolbar button.crop {
background-image: -webkit-image-set(
url('../images/gallery/icon_crop.png') 1x,
url('../images/gallery/2x/icon_crop.png') 2x);
}
.gallery > .toolbar button.crop:active,
.gallery > .toolbar button.crop[pressed] {
background-image: -webkit-image-set(
url('../images/gallery/icon_crop_selected.png') 1x,
url('../images/gallery/2x/icon_crop_selected.png') 2x);
}
.gallery > .toolbar button.exposure {
background-image: -webkit-image-set(
url('../images/gallery/icon_brightness.png') 1x,
url('../images/gallery/2x/icon_brightness.png') 2x);
}
.gallery > .toolbar button.exposure:active,
.gallery > .toolbar button.exposure[pressed] {
background-image: -webkit-image-set(
url('../images/gallery/icon_brightness_selected.png') 1x,
url('../images/gallery/2x/icon_brightness_selected.png') 2x);
}
.gallery > .toolbar button.rotate_right {
background-image: -webkit-image-set(
url('../images/gallery/icon_rotate.png') 1x,
url('../images/gallery/2x/icon_rotate.png') 2x);
}
.gallery > .toolbar button.rotate_right:active,
.gallery > .toolbar button.rotate_right[pressed] {
background-image: -webkit-image-set(
url('../images/gallery/icon_rotate_selected.png') 1x,
url('../images/gallery/2x/icon_rotate_selected.png') 2x);
}
.gallery > .toolbar button.rotate_left {
background-image: -webkit-image-set(
url('../images/gallery/icon_rotate_left.png') 1x,
url('../images/gallery/2x/icon_rotate_left.png') 2x);
}
.gallery > .toolbar button.rotate_left:active,
.gallery > .toolbar button.rotate_left[pressed] {
background-image: -webkit-image-set(
url('../images/gallery/icon_rotate_left_selected.png') 1x,
url('../images/gallery/2x/icon_rotate_left_selected.png') 2x);
}
.gallery > .toolbar button.undo {
background-image: -webkit-image-set(
url('../images/gallery/icon_undo.png') 1x,
url('../images/gallery/2x/icon_undo.png') 2x);
}
.gallery > .toolbar button.undo:active,
.gallery > .toolbar button.undo[pressed] {
background-image: -webkit-image-set(
url('../images/gallery/icon_undo_selected.png') 1x,
url('../images/gallery/2x/icon_undo_selected.png') 2x);
}
.gallery > .toolbar button.redo {
background-image: -webkit-image-set(
url('../images/gallery/icon_redo.png') 1x,
url('../images/gallery/2x/icon_redo.png') 2x);
position: absolute; /* Exclude from center-packing*/
}
.gallery > .toolbar button.redo:active,
.gallery > .toolbar button.redo[pressed] {
background-image: -webkit-image-set(
url('../images/gallery/icon_redo_selected.png') 1x,
url('../images/gallery/2x/icon_redo_selected.png') 2x);
}
.gallery > .toolbar button[disabled],
.gallery[tools][locked] > .toolbar button {
opacity: 0.5;
pointer-events: none;
}
.gallery > .toolbar button[hidden] {
display: none;
}
.gallery[mode='slide'] > .toolbar > button.mode {
background-image: -webkit-image-set(
url('../images/gallery/icon_mosaic.png') 1x,
url('../images/gallery/2x/icon_mosaic.png') 2x);
}
.gallery[mode='slide'] > .toolbar > button.mode:active {
background-image: -webkit-image-set(
url('../images/gallery/icon_mosaic_selected.png') 1x,
url('../images/gallery/2x/icon_mosaic_selected.png') 2x);
}
.gallery[mode='mosaic'] > .toolbar > button.mode {
background-image: -webkit-image-set(
url('../images/gallery/icon_1up.png') 1x,
url('../images/gallery/2x/icon_1up.png') 2x);
}
.gallery[mode='mosaic'] > .toolbar > button.mode:active {
background-image: -webkit-image-set(
url('../images/gallery/icon_1up_selected.png') 1x,
url('../images/gallery/2x/icon_1up_selected.png') 2x);
}
.gallery > .toolbar > button.slideshow {
background-image: -webkit-image-set(
url('../images/gallery/icon_slideshow.png') 1x,
url('../images/gallery/2x/icon_slideshow.png') 2x);
}
.gallery > .toolbar > button.slideshow:active,
.gallery > .toolbar > button.slideshow[pressed] {
background-image: -webkit-image-set(
url('../images/gallery/icon_slideshow_selected.png') 1x,
url('../images/gallery/2x/icon_slideshow_selected.png') 2x);
}
.gallery > .toolbar > button.delete {
background-image: -webkit-image-set(
url('../images/gallery/icon_delete.png') 1x,
url('../images/gallery/2x/icon_delete.png') 2x);
}
.gallery > .toolbar > button.delete:active {
background-image: -webkit-image-set(
url('../images/gallery/icon_delete_selected.png') 1x,
url('../images/gallery/2x/icon_delete_selected.png') 2x);
}
.gallery > .toolbar > button.edit {
background-image: -webkit-image-set(
url('../images/gallery/icon_edit.png') 1x,
url('../images/gallery/2x/icon_edit.png') 2x);
}
.gallery > .toolbar > button.edit:active,
.gallery > .toolbar > button.edit[pressed] {
background-image: -webkit-image-set(
url('../images/gallery/icon_edit_selected.png') 1x,
url('../images/gallery/2x/icon_edit_selected.png') 2x);
}
.gallery > .toolbar > button.print {
background-image: -webkit-image-set(
url('../images/gallery/icon_print.png') 1x,
url('../images/gallery/2x/icon_print.png') 2x);
}
.gallery > .toolbar > button.print:active,
.gallery > .toolbar > button.print[pressed] {
background-image: -webkit-image-set(
url('../images/gallery/icon_print_selected.png') 1x,
url('../images/gallery/2x/icon_print_selected.png') 2x);
}
.gallery > .toolbar > button.share {
background-image: -webkit-image-set(
url('../images/gallery/icon_share.png') 1x,
url('../images/gallery/2x/icon_share.png') 2x);
}
.gallery > .toolbar > button.share:active,
.gallery > .toolbar > button.share[pressed] {
background-image: -webkit-image-set(
url('../images/gallery/icon_share_selected.png') 1x,
url('../images/gallery/2x/icon_share_selected.png') 2x);
}
.gallery > .toolbar > button.share[disabled] {
display: none;
}
/* Secondary toolbar (mode-specific tools) */
.gallery .edit-modal {
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
bottom: 80px;
display: -webkit-box;
height: 40px;
pointer-events: none;
position: absolute;
width: 100%;
}
.gallery .edit-modal-wrapper[hidden] {
display: none;
}
.gallery .edit-modal-wrapper {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
background-color: rgba(0, 0, 0, 0.75);
color: white;
display: -webkit-box;
padding-right: 5px;
pointer-events: auto;
}
.gallery .edit-modal .label {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
background-position: 20px center;
background-repeat: no-repeat;
display: -webkit-box;
height: 20px;
padding-left: 50px;
padding-right: 10px;
}
.gallery .edit-modal .label.brightness {
background-image: -webkit-image-set(
url('../images/gallery/icon_brightness.png') 1x,
url('../images/gallery/2x/icon_brightness.png') 2x);
}
.gallery .edit-modal .label.contrast {
background-image: -webkit-image-set(
url('../images/gallery/icon_contrast.png') 1x,
url('../images/gallery/2x/icon_contrast.png') 2x);
height: 24px;
margin-left: 15px;
}
.gallery .edit-modal .range {
-webkit-appearance: none !important;
height: 3px;
margin-right: 10px;
margin-top: 1px;
}
.gallery .edit-modal .range::-webkit-slider-thumb {
-webkit-appearance: none;
background-image: -webkit-image-set(
url('../images/gallery/slider_thumb.png') 1x,
url('../images/gallery/2x/slider_thumb.png') 2x);
height: 29px;
width: 16px;
}
/* Crop frame */
.gallery .crop-overlay {
-webkit-box-orient: vertical;
display: -webkit-box;
pointer-events: none;
position: absolute;
}
.gallery .crop-overlay .shadow {
background-color: rgba(0, 0, 0, 0.65);
}
.gallery .crop-overlay .middle-box {
-webkit-box-flex: 1;
-webkit-box-orient: horizontal;
display: -webkit-box;
}
.gallery .crop-frame {
-webkit-box-flex: 1;
display: -webkit-box;
position: relative;
}
.gallery .crop-frame div {
background-color: rgba(255, 255, 255, 1);
box-shadow: 0 0 3px rgba(0, 0, 0, 0.75);
position: absolute;
}
.gallery .crop-frame .horizontal {
height: 1px;
left: 7px;
right: 7px;
}
.gallery .crop-frame .horizontal.top {
top: 0;
}
.gallery .crop-frame .horizontal.bottom {
bottom: 0;
}
.gallery .crop-frame .vertical {
bottom: 7px;
top: 7px;
width: 1px;
}
.gallery .crop-frame .vertical.left {
left: 0;
}
.gallery .crop-frame .vertical.right {
right: 0;
}
.gallery .crop-frame .corner {
border-radius: 6px;
height: 13px;
width: 13px;
}
.gallery .crop-frame .corner.left {
left: -6px;
}
.gallery .crop-frame .corner.right {
right: -6px;
}
.gallery .crop-frame .corner.top {
top: -6px;
}
.gallery .crop-frame .corner.bottom {
bottom: -6px;
}
/* Prompt/notification panel */
.gallery .prompt-wrapper {
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
display: -webkit-box;
height: 100%;
pointer-events: none;
position: absolute;
width: 100%;
}
.gallery .prompt-wrapper[pos=top] {
-webkit-box-align: start;
}
.gallery .prompt-wrapper[pos=center] {
-webkit-box-align: center;
}
.gallery .prompt-wrapper[pos=center] .back-button {
display: none;
}
.gallery .prompt-wrapper > div.dimmable {
opacity: 1;
transition: opacity 220ms ease;
}
.gallery .prompt {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
background-color: rgba(0, 0, 0, 0.8);
color: white;
display: -webkit-box;
font-size: 120%;
height: 40px;
opacity: 0;
padding: 0 20px;
position: relative;
top: 5px;
transition: all 180ms ease;
}
.gallery .prompt[state='fadein'] {
opacity: 1;
top: 0;
}
.gallery .prompt[state='fadeout'] {
opacity: 0;
top: 0;
}
.gallery .prompt-wrapper[pos=top] .prompt {
padding-right: 10px;
}
.gallery .prompt .back-button {
background-image: -webkit-image-set(
url('../images/gallery/butterbar_close_button.png') 1x,
url('../images/gallery/2x/butterbar_close_button.png') 2x);
background-position: center center;
background-repeat: no-repeat;
height: 16px;
margin-left: 16px;
opacity: 0.65;
pointer-events: auto;
width: 16px;
}
.gallery .prompt .back-button:hover {
background-color: rgba(81, 81, 81, 1);
opacity: 1.0;
}
.gallery .share-menu {
-webkit-box-align: stretch;
-webkit-box-orient: vertical;
-webkit-box-pack: start;
background-color: white;
border: 1px solid #7f7f7f;
border-radius: 1px;
bottom: 60px;
display: -webkit-box;
opacity: 1.0;
padding: 8px;
position: absolute;
right: 10px;
transition: opacity 500ms ease-in-out;
}
.gallery .share-menu .bubble-point {
background-image: -webkit-image-set(
url('../images/gallery/bubble_point.png') 1x,
url('../images/gallery/2x/bubble_point.png') 2x);
background-position: center top;
background-repeat: no-repeat;
bottom: -8px;
height: 8px;
padding: 0;
position: absolute;
right: 20px;
width: 20px;
}
.gallery .share-menu[hidden] {
bottom: -100%; /* Offscreen so that 'dimmed' attribute does not show it. */
opacity: 0;
pointer-events: none;
}
.gallery .share-menu > .item {
background-color: rgba(0, 0, 0, 0);
background-position: 5px center;
background-repeat: no-repeat;
cursor: pointer;
padding: 5px;
padding-left: 26px;
}
.gallery .share-menu > .item:hover {
background-color: rgba(240, 240, 240, 1);
}
.gallery .share-menu > div > img {
display: block;
margin-right: 5px;
}
/* Load spinner and error banner. */
.gallery .spinner {
background-image: url(../images/common/spinner.svg);
background-size: 100%;
height: 16px;
left: 50%;
margin-left: -8px;
margin-top: -8px;
position: absolute;
top: 50%;
width: 16px;
}
.gallery:not([spinner]) .spinner {
display: none;
}
.gallery .error-banner {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
background-color: rgba(24, 24, 24, 1);
background-image: -webkit-image-set(
url('../images/media/error.png') 1x,
url('../images/media/2x/error.png') 2x);
background-position: 25px center;
background-repeat: no-repeat;
color: white;
display: -webkit-box;
height: 54px;
padding-left: 70px;
padding-right: 35px;
}
.gallery:not([error]) .error-banner {
display: none;
}
/* Video playback support. */
.gallery video {
height: 100%;
position: absolute;
width: 100%;
}
.gallery .video-controls-spacer {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
bottom: 60px; /* Just above the toolbar */
display: -webkit-box;
height: 30px;
left: 0;
opacity: 0;
pointer-events: none;
position: absolute;
right: 0;
}
.gallery[video] .video-controls-spacer {
/* Animate opacity on 'tools' attribute toggle. */
/* Change opacity immediately on 'video' attribute change. */
transition: opacity 280ms ease;
}
.gallery[video][tools] .video-controls-spacer {
opacity: 1;
}
.gallery .video-controls {
display: none;
max-width: 800px;
}
.gallery[video] .video-controls {
-webkit-box-flex: 1;
display: -webkit-box;
}
.gallery[video] > .toolbar .edit-main {
display: none;
}
/* Mosaic view. */
.mosaic {
bottom: 55px; /* Toolbar height. */
left: 0;
overflow-x: scroll;
overflow-y: hidden;
position: absolute;
right: 0;
top: 0;
/* transition-duration is set in Javascript. */
transition-property: -webkit-transform;
transition-timing-function: linear;
}
.mosaic::-webkit-scrollbar {
background: transparent;
}
.mosaic::-webkit-scrollbar-thumb {
background: rgb(31, 31, 31);
}
.gallery:not([mode='mosaic']) .mosaic::-webkit-scrollbar-thumb {
background: transparent;
}
.mosaic-tile {
position: absolute;
/* Tile's zoom factor is animated on hover. We apply the transform to
the entire tile so that the image outline is included into the animation. */
transition: -webkit-transform 150ms linear;
}
/* Mosaic tile's opacity is controlled by |visible| attribute which changes
separately from .gallery[mode] */
.mosaic:not([visible]) .mosaic-tile .img-border {
opacity: 0;
}
/* Animate tile's opacity, except for the selected tile which should show/hide
instantly (this looks better when zooming to/from the slide mode). */
.mosaic-tile:not([selected]) .img-border {
transition: opacity 350ms linear;
}
/* Must be in sync with mosaic_mode.js.
Mosaic.Layout.SPACING should be equal to
top + bottom + border-top-width + border-bottom-width AND
left + right + border-left-width + border-right-width */
.mosaic-tile .img-border {
border: 1px solid black; /* Space between the outline and the image. */
bottom: 4px;
left: 4px;
outline: 2px solid transparent;
overflow: hidden;
position: absolute;
right: 4px;
top: 4px;
}
/* Selected and hover state are only visible when zoom transition is over. */
.mosaic[visible='normal'] .mosaic-tile[selected] .img-border {
outline-color: rgb(51, 153, 255);
}
.mosaic[visible='normal'].hover-visible .mosaic-tile:hover {
-webkit-transform: scale(1.05);
z-index: 50;
}
.mosaic[visible='normal'].hover-visible
.mosaic-tile:hover:not([selected]) .img-border {
outline-color: rgb(182, 212, 252);
}
.mosaic-tile .img-wrapper {
bottom: 0;
left: 0;
position: absolute;
right: 0;
top: 0;
}
.mosaic-tile .img-wrapper[generic-thumbnail],
.mosaic-tile .img-wrapper.animated:not([generic-thumbnail])
canvas:not(.cached) {
-webkit-animation: fadeIn ease-in 1;
-webkit-animation-duration: 500ms;
-webkit-animation-fill-mode: forwards;
}
@-webkit-keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* In order to do mode animated transitions smoothly we keep both mosaic and
image-container but transparent. */
.gallery:not([mode='mosaic']) .mosaic,
.gallery:not([mode='slide']) .image-container {
pointer-events: none;
}
.gallery:not([mode='slide']) .ribbon,
.gallery:not([mode='slide']) .arrow-box {
opacity: 0;
pointer-events: none;
}
/* Temporary. Remove this along with the delete confirmation dialog
when Undo delete is implemented. */
.cr-dialog-shield {
background-color: black;
}
/* Slideshow controls */
.slideshow-toolbar {
-webkit-box-align: center;
-webkit-box-orient: horizontal;
-webkit-box-pack: center;
bottom: 0;
display: none;
left: 0;
padding-bottom: 6px;
pointer-events: none;
position: absolute;
right: 0;
}
.gallery[tools][slideshow] .slideshow-toolbar {
display: -webkit-box;
}
.slideshow-toolbar > div {
background-position: center;
background-repeat: no-repeat;
height: 68px;
opacity: 0.5;
pointer-events: auto;
width: 68px;
}
.slideshow-toolbar > div:hover {
opacity: 1;
}
.slideshow-toolbar > .slideshow-play {
background-image: -webkit-image-set(
url('../images/gallery/slideshow-play.png') 1x,
url('../images/gallery/2x/slideshow-play.png') 2x);
margin-right: -2px;
}
.gallery[slideshow='playing'] .slideshow-toolbar > .slideshow-play {
background-image: -webkit-image-set(
url('../images/gallery/slideshow-pause.png') 1x,
url('../images/gallery/2x/slideshow-pause.png') 2x);
}
.slideshow-toolbar > .slideshow-end {
background-image: -webkit-image-set(
url('../images/gallery/slideshow-end.png') 1x,
url('../images/gallery/2x/slideshow-end.png') 2x);
margin-left: -2px;
}
.gallery > .header > button {
-webkit-margin-start: 10px;
cursor: default;
height: 32px;
min-width: 32px;
width: 32px;
}
.gallery > .header > .maximize-button {
background: -webkit-image-set(
url('chrome://resources/images/apps/topbar_button_maximize.png') 1x,
url('chrome://resources/images/2x/apps/topbar_button_maximize.png') 2x)
center;
}
.gallery > .header > .close-button {
background: -webkit-image-set(
url('chrome://resources/images/apps/topbar_button_close.png') 1x,
url('chrome://resources/images/2x/apps/topbar_button_close.png') 2x)
center;
}