/* 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;
}
