/* 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. */

/* The order of z-index:
 * - 2: drag-selection-bodrder
 * - 3: preview-panel
 * - 500: scrollbar
 * - 500: splitter
 * - 525: spinner
 * - 550: autocomplete-suggestions
 * - 600: menus
 * - 600: tooltip
 * - 1000: preview thumbnail popup
 * - 1000: overlay panel (ie. image editor)
 */

/* Special attribute used in HTML to hide elements. */
body[type='folder'] [invisibleif~='folder'],
body[type='upload-folder'] [invisibleif~='upload-folder'],
body[type='saveas-file'] [invisibleif~='saveas-file'],
body[type='open-file'] [invisibleif~='open-file'],
body[type='open-multi-file'] [invisibleif~='open-multi-file'],
body[type='full-page'] [invisibleif~='full-page'],

body[type='folder'] [visibleif]:not([visibleif~='folder']),
body[type='upload-folder'] [visibleif]:not([visibleif~='upload-folder']),
body[type='saveas-file'] [visibleif]:not([visibleif~='saveas-file']),
body[type='open-file'] [visibleif]:not([visibleif~='open-file']),
body[type='open-multi-file'] [visibleif]:not([visibleif~='open-multi-file']),
body[type='full-page'] [visibleif]:not([visibleif~='full-page']) {
  display: none !important;
}

html {
  height: 100%;
}

html.col-resize * {
  cursor: col-resize !important;
}

/* Outer frame of the dialog. */
body {
  -webkit-box-flex: 1;
  -webkit-box-orient: vertical;
  -webkit-tap-highlight-color: transparent;
  -webkit-user-select: none;
  cursor: default;
  display: -webkit-box;
  height: 100%;
  margin: 0;
  padding: 0;
  width: 100%;
}

/* Drop opacity of selected rows to give a visual feedback on copy/cut
 * operation. */
.blink {
  opacity: 0.8;
}

::-webkit-scrollbar {
  height: 0;
  width: 0;
}

/* TODO(mtomasz): Flip scrollbars to the opposite side for RTL languages. */
.scrollbar-vertical {
  bottom: 0;
  position: absolute;
  right: 0;
  top: 0;
  width: 10px;
  z-index: 500;  /* Must be below the contextmenu (600). */
}

.scrollbar-button {
  background-color: black;
  border: 1px solid #ccc;
  border-radius: 3px;
  box-sizing: border-box;
  height: 50%;
  margin-right: 2px;
  opacity: 0;
  position: absolute;
  transition: opacity 100ms;
  width: 8px;
}

:hover > .scrollbar-vertical > .scrollbar-button {
  opacity: 0.3;
}

.scrollbar-vertical > .scrollbar-button:hover {
  opacity: 0.4;
}

.scrollbar-vertical > .scrollbar-button.pressed {
  opacity: 0.5;
}

/* Main part of the dialog between header and footer. */
.dialog-container {
  -webkit-box-align: stretch;
  -webkit-box-flex: 1;
  -webkit-box-orient: horizontal;
  background-color: white;  /* Makes #drag-container invisible. */
  border-radius: 2px;
  display: -webkit-box;
  overflow: hidden;
  position: relative;
}

/* The style applied when a modal dialog box overlap the dialog container. */
.dialog-container.disable-header-drag .dialog-navigation-list-header,
.dialog-container.disable-header-drag .dialog-header {
  -webkit-app-region: no-drag;
}

/* List/grid and preview are inside this container. */
.dialog-main {
  -webkit-box-align: stretch;
  -webkit-box-flex: 1;
  -webkit-box-orient: vertical;
  display: -webkit-box;
}

/* Directory tree at the left. */
.dialog-navigation-list {
  -webkit-border-end: 1px solid rgba(20, 20, 22, 0.1);
  -webkit-box-flex: 0;
  -webkit-box-orient: vertical;
  background-color: #f1f1f1;
  display: flex;
  flex-direction: column;
  max-width: 50%;
  min-width: 100px;
  overflow: hidden;
  position: relative;
  width: 150px;
}

.dialog-navigation-list-header {
  -webkit-app-region: drag;
  flex: none;
  height: 48px;  /* Keep in sync with #dialog-header. */
  line-height: 45px;
}

.dialog-navigation-list-header #app-name {
  -webkit-margin-start: 15px;
  color: #303030;
  font-size: 130%;
}

.dialog-navigation-list-contents {
  display: -webkit-box;
  flex: 1 1 auto;
  position: relative;
}

.dialog-navigation-list-footer {
  display: -webkit-flex;
  flex: none;
  flex-direction: column;
}

/* A vertical splitter between the roots list and the file list. It is actually
   a transparent area centered on the roots list right border.*/
div.splitter {
  -webkit-box-flex: 0;
  cursor: col-resize;
  margin-left: -3px;
  margin-right: -3px;
  position: relative;
  width: 6px;
  z-index: 500;  /* Must be below the contextmenu (600). */
}

#navigation-list {
  -webkit-box-flex: 1;
  -webkit-box-orient: vertical;
  display: -webkit-box;
}

#navigation-list > * {
  height: 40px;
  padding: 0 5px;
}

#navigation-list > .accepts,
#navigation-list > [lead][selected],
#navigation-list > [lead],
#navigation-list > [selected],
#navigation-list > [anchor] {
  background-color: rgb(225, 225, 225);
}

#navigation-list:focus > .accepts,
#navigation-list:focus > [lead][selected],
#navigation-list:focus > [lead],
#navigation-list:focus > [selected],
#navigation-list:focus > [anchor] {
  background-color: rgb(66, 129, 244);
  color: white;
}

#navigation-list li.root-item {
  -webkit-box-align: center;
  display: -webkit-box;
  line-height: 22px;  /* To accomodate for icons. */
  padding-left: 11px;
}

#navigation-list li.root-item > .root-label {
  -webkit-box-flex: 1;
  margin: 0 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#navigation-list .volume-icon {
  background-position: center 2px;
  background-repeat: no-repeat;
  height: 24px;
  width: 24px;
}

#middlebar-header {
  -webkit-border-end: 1px solid rgba(20, 20, 22, 0.1);
  -webkit-box-sizing: border-box;
  -webkit-padding-start: 20px;
  color: rgb(100, 100, 100);
  height: 47px;
  line-height: 40px;
  overflow-x: hidden;
  position: absolute;
  text-overflow: ellipsis;
  width: 100%;
}

#directory-tree {
  -webkit-border-end: 1px solid rgba(20, 20, 22, 0.1);
  bottom: 0;
  left: 0;
  overflow-x: hidden;
  overflow-y: auto;
  padding-bottom: 0;  /* For the preview panel. Will be overridden by JS. */
  position: absolute;
  right: 0;
  top: 47px;
}

#directory-tree .tree-row {
  cursor: pointer;
  display: -webkit-box;
  line-height: 29px;
  padding: 0 3px;
}

/* For rows of subitems (non-top items) */
#directory-tree .tree-children .tree-row {
  line-height: 29px;
}

#directory-tree .tree-row > .expand-icon {
  height: 37px;
  left: 3px;
  margin: -13px;
  right: 3px;
  top: 0;
  vertical-align: middle;
  width: 37px;
}

#directory-tree:focus .tree-row[selected] > .expand-icon {
  background-image: -webkit-canvas(tree-triangle-inverted);
}

#directory-tree .tree-row > .volume-icon {
  background-position: center 2px;
  background-repeat: no-repeat;
  height: 24px;
  vertical-align: middle;
  width: 24px;
}

#directory-tree .tree-row > .label {
  -webkit-box-flex: 1;
  display: block;
  margin: 0 3px;
  overflow-x: hidden;
  text-overflow: ellipsis;
}

#directory-tree .tree-item.accepts > .tree-row,
#directory-tree .tree-row[lead][selected],
#directory-tree .tree-row[lead],
#directory-tree .tree-row[selected],
#directory-tree .tree-row[anchor] {
  background-color: rgb(204, 204, 204);
}

#directory-tree .tree-item.accepts > .tree-row,
#directory-tree .tree-row[lead][selected],
#directory-tree .tree-row[lead],
#directory-tree .tree-row[selected],
#directory-tree .tree-row[anchor] {
  background-color: rgb(225, 225, 225);
}

#directory-tree:focus .tree-item.accepts > .tree-row,
#directory-tree:focus .tree-row[lead][selected],
#directory-tree:focus .tree-row[lead],
#directory-tree:focus .tree-row[selected],
#directory-tree:focus .tree-row[anchor] {
  background-color: rgb(193, 209, 232);
}

#directory-tree:focus .tree-item.accepts > .tree-row,
#directory-tree:focus .tree-row[lead][selected],
#directory-tree:focus .tree-row[lead],
#directory-tree:focus .tree-row[selected],
#directory-tree:focus .tree-row[anchor] {
  background-color: rgb(66, 129, 244);
  color: white;
}

#navigation-list .root-item > div.root-eject {
  background-image: -webkit-image-set(
    url('../images/files/ui/eject.png') 1x,
    url('../images/files/ui/2x/eject.png') 2x);
  background-position: center center;
  background-repeat: no-repeat;
  cursor: pointer;
  height: 20px;
  margin-right: 6px;
  opacity: 0.7;
  transition: opacity 70ms linear;
  vertical-align: middle;
  width: 20px;
}

#navigation-list:focus .root-item[selected] > div.root-eject {
  -webkit-filter: brightness(0) invert();
  opacity: 1;
}

#directory-tree .root-item[disabled] {
  opacity: 0.5;
  pointer-events: none;
}

/* Breadcrumbs and things under the title but above the list view. */
.dialog-header {
  -webkit-app-region: drag;
  -webkit-box-align: center;
  -webkit-box-orient: horizontal;
  display: flex;
  height: 48px;
  margin: 0;
  transition: all 180ms ease;
}

/* Search box */

#search-box {
  display: flex;
  flex: auto;
}

#search-box.too-short {
  visibility: hidden;
}

#search-box .icon {
  -webkit-app-region: no-drag;
  -webkit-padding-end: 0;
  -webkit-padding-start: 10px;
  background: transparent -webkit-image-set(
      url(../images/files/ui/search_icon_inactive.png) 1x,
      url(../images/files/ui/2x/search_icon_inactive.png) 2x)
      no-repeat center;
  flex: none;
  height: 32px;
  padding-bottom: 8px;
  padding-top: 8px;
  width: 32px;
}

#search-box .icon:hover,
#search-box.has-cursor .icon,
#search-box.has-text .icon {
  background-image: -webkit-image-set(
      url(../images/files/ui/search_icon_active.png) 1x,
      url(../images/files/ui/2x/search_icon_active.png) 2x);
}

#search-box .full-size {
  flex: 1 0 0;
}

#search-box input {
  -webkit-app-region: no-drag;
  background-color: #fff;
  border-style: none;
  color: #333;
  cursor: default;
  display: block;
  height: 48px;
  line-height: 1em;
  margin: 0;
  max-width: 100%;
  outline: none;
  padding: 0;
}

#search-box input::-webkit-search-cancel-button {
  -webkit-appearance: none;
}

#search-box.has-cursor input,
#search-box.has-text input {
  cursor: text;
}

#search-box .clear {
  -webkit-app-region: no-drag;
  -webkit-margin-end: 30px;
  align-self: center;
  background: -webkit-image-set(
      url(../images/files/ui/search_clear.png) 1x,
      url(../images/files/ui/2x/search_clear.png) 2x)
      no-repeat center;
  border: none;
  display: none;
  flex: none;
  height: 12px;
  min-height: 0;
  min-width: 0;
  outline: none;
  padding: 0;
  width: 12px;
}

#search-box.has-text .clear {
  display: block;
}

#search-box .clear:hover {
  background-image: -webkit-image-set(
      url(../images/files/ui/search_clear_hover.png) 1x,
      url(../images/files/ui/2x/search_clear_hover.png) 2x);
}

#search-box .clear:active {
  background-image: -webkit-image-set(
      url(../images/files/ui/search_clear_pressed.png) 1x,
      url(../images/files/ui/2x/search_clear_pressed.png) 2x);
}

.topbutton-bar {
  flex: none;
}

/* Container for the detail and thumbnail list views. */
.dialog-body {
  -webkit-box-flex: 1;
  -webkit-transition: all 180ms ease;
  border-top: 1px solid rgba(20, 20, 22, 0.1);
  position: relative;
}

.main-panel {
  bottom: 0;
  display: -webkit-box;
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
}

.dialog-middlebar-contents {
  display: -webkit-box;
  max-width: 50%;
  min-width: 45px;
  position: relative;
  width: 180px;
}

/* Container for the ok/cancel buttons. */
.dialog-footer {
  -webkit-box-align: center;
  -webkit-box-orient: horizontal;
  border-top: 1px solid rgb(225, 225, 225);
  display: -webkit-box;
  outline: none;
  padding: 10px;
}

.progressable:not([progress]) .progress-bar,
.progressable:not([progress]) .preparing-label {
  display: none;
}

.progressable[progress] .ok,
.progressable[progress] #filename-input-box,
.progressable[progress] #preview-lines,
.progressable[progress] .file-type {
  display: none;
}

.progressable .progress-bar {
  -webkit-box-flex: 1;
  -webkit-margin-end: 20px;
  -webkit-margin-start: 20px;
}

/* The container for breadcrumb elements. */
.breadcrumbs {
  -webkit-box-align: center;
  -webkit-box-flex: 1;
  -webkit-box-orient: horizontal;
  display: -webkit-box;
  line-height: 20px;
  overflow: hidden;
  padding-top: 1px;
}

#dir-breadcrumbs {
  -webkit-margin-end: 5px;
  -webkit-margin-start: 10px;
}

/* The icon for offline mode */
.offline-icon {
  -webkit-margin-end: 0;
  -webkit-margin-start: 10px;
  background-image: -webkit-image-set(
    url('../images/files/ui/offline.png') 1x,
    url('../images/files/ui/2x/offline.png') 2x);
  height: 16px;
  opacity: 0;
  transition-duration: 200ms;
  transition-property: opacity;
  transition-timing-function: ease-out;
  width: 16px;
}

/* Transition for '-webkit-margin-start' (or -end) property is not working.
 * So I added .offline-icon-space to animate 'width' property. */
.offline-icon-space {
  -webkit-margin-end: 0;
  -webkit-margin-start: -26px; /* Clear width of .offline-icon */
  transition-duration: 200ms;
  transition-property: width;
  transition-timing-function: ease-out;
  width: 0;
}

body[drive] .dialog-container[connection='offline'] .offline-icon,
body[drive] .dialog-container[connection='metered'] .offline-icon {
  opacity: 1;
}

body[drive] .dialog-container[connection='offline'] .offline-icon-space,
body[drive] .dialog-container[connection='metered'] .offline-icon-space {
  width: 26px;
}

.breadcrumbs > [collapsed]::before {
  content: '...';
}

.breadcrumbs > [collapsed] {
  width: 1em;
}

/* A single directory name in the list of path breadcrumbs. */
.breadcrumb-path {
  color: #969696;
  cursor: pointer;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* The final breadcrumb, representing the current directory. */
#search-breadcrumbs .breadcrumb-path.breadcrumb-last {
  color: #141414;
  cursor: default;
}

/* The > arrow between breadcrumbs. */

.breadcrumbs .separator {
  background-image: -webkit-image-set(
    url('../images/files/ui/breadcrumb-separator.png') 1x,
    url('../images/files/ui/2x/breadcrumb-separator.png') 2x);
  background-position: center center;
  background-repeat: no-repeat;
  height: 10px;
  overflow: hidden;
  width: 25px;
}

#filename-input-box input {
  border: 1px solid #c8c8c8;
  border-radius: 1px;
  box-sizing: border-box;
  height: 31px;  /* border-box */
  margin-right: 30px;
}

.filelist-panel {
  -webkit-box-flex: 1;
  -webkit-box-orient: vertical;
  display: -webkit-box;
}

#list-container {
  -webkit-box-flex: 1;
  -webkit-box-orient: vertical;
  display: -webkit-box;
  position: relative;
}

#detail-table {
  -webkit-box-flex: 1;
  -webkit-box-orient: vertical;
  display: -webkit-box;
}

#detail-table > list,
.thumbnail-grid {
  -webkit-box-flex: 1;
  padding-bottom: 0;  /* For the preview panel. Will be overridden by JS. */
}

#file-list .drag-selection-border {
  -webkit-box-sizing: border-box;
  background-color: rgba(255, 255, 255, 0.3);
  border: 2px solid rgba(255, 255, 255, 0.6);
  outline: 1px solid rgba(0, 0, 0, 0.1);
  position: absolute;
  z-index: 2;
}

.spinner {
  background: 100% url(../images/common/spinner.svg);
  height: 16px;
  left: 50%;
  margin-left: -8px;
  margin-top: -8px;
  opacity: 0.5;
  position: absolute;
  top: 50%;
  width: 16px;
}

.spinner-layer {
  background: url(../images/common/spinner.svg) center / 16px no-repeat;
  bottom: 0;
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
  z-index: 525;
}

.downloads-warning {
  -webkit-box-align: center;
  -webkit-box-orient: horizontal;
  background-color: #f0f0f0;
  background-image: -webkit-image-set(
    url('../images/files/ui/warning_icon_square.png') 1x,
    url('../images/files/ui/2x/warning_icon_square.png') 2x);
  background-position: 15px center;
  background-repeat: no-repeat;
  color: #666;
  display: -webkit-box;
  font-size: 13px;
  height: 57px;
  overflow: hidden;
  padding-left: 57px;  /* Make space for the icon. */
  transition: height 70ms linear;
}

.downloads-warning[hidden] {
  display: -webkit-box !important;  /* Overrides [hidden] for animation. */
  height: 0;
}

@-webkit-keyframes heightAnimation {
  0% {
    height: 0;
    display: -webkit-box;
  }
}

/* Drive space warning banner. */
.volume-warning {
  -webkit-animation: heightAnimation 70ms linear;
  -webkit-box-align: center;
  -webkit-box-orient: horizontal;
  background-image: url(chrome://resources/images/clouds.png);
  background-repeat: repeat-x;
  background-size: 150px 44px;
  color: #333;
  display: -webkit-box;
  font-size: 13px;
  height: 44px;
  overflow: hidden;
  position: relative;
}

.volume-warning[hidden] {
  border-top-width: 0;
  height: 0;
}

.volume-warning .drive-icon {
  background-image: -webkit-image-set(
    url('../images/files/ui/drive_logo.png') 1x,
    url('../images/files/ui/2x/drive_logo.png') 2x);
  background-position: center;
  background-repeat: no-repeat;
  background-size: 25px 22px;
  height: 44px;
  width: 50px;
}

.volume-warning .drive-text {
  margin-right: 11px;
}

/* The cr.ui.Grid representing the detailed file list. */
.thumbnail-grid {
  overflow-y: auto;
  padding-bottom: 0;  /* For the preview panel. Will be overridden by JS. */
  width: 100%;
}

body[type='full-page'] .thumbnail-frame > .img-container {
  position: relative;
}

body[type='full-page'] .thumbnail-frame > .img-container,
body[type='full-page'] .detail-name .detail-icon {
  cursor: pointer;
}

.img-container > img {
  -webkit-user-drag: none;
  position: absolute;
}

.img-container > img:not(.cached):not(.drag-thumbnail) {
  -webkit-animation: fadeIn 250ms linear;
}

.thumbnail-bottom {
  -webkit-box-align: center;
  -webkit-box-orient: horizontal;
  -webkit-box-pack: center;
  bottom: 0;
  cursor: auto;
  display: -webkit-box;
  left: 0;
  padding: 0 10px;
  position: absolute;
  right: 0;
}

.thumbnail-bottom .filename-label {
  -webkit-box-flex: 1;
}

/* Styles specific for the grid view. */

.thumbnail-grid .thumbnail-item {
  -webkit-margin-start: 21px;
  border: 3px solid transparent;  /* Selection will make the border visible. */
  margin-top: 20px;
  position: relative;
}

.thumbnail-grid .thumbnail-frame {
  background-color: rgb(245, 245, 245);
  height: 120px;
  overflow: hidden;
  position: relative;
  width: 160px;
}

.thumbnail-grid .thumbnail-item[selected] .thumbnail-frame,
.thumbnail-grid .thumbnail-item.accepts .thumbnail-frame {
  border-color: white;
}

.thumbnail-grid .img-container {
  height: 100%;
  width: 100%;
}

.thumbnail-grid .thumbnail-bottom {
  background: rgba(0, 0, 0, 0.55);
  color: #fff;
  height: 30px;
}

/* Padding counterweights negative margins of items, thus eliminating scroll
   bar when it's not needed. Max height is set to fit 8 items before showing
   scroll bar. */
#default-actions-list {
  max-height: 328px;
  padding: 1px 0;
}

#default-actions-list > li > * {
  background-position: 5px center;
  background-repeat: no-repeat;
  background-size: 16px 16px;
  padding-left: 26px;
}

#list-container list > li[selected],
#list-container grid > li[selected],
#default-actions-list > li[selected] {
  background-color: rgb(225, 225, 225);
}

#list-container list:focus > li[selected],
#list-container grid:focus > li[selected],
#default-actions-list:focus > li[selected] {
  background-color: rgb(66, 129, 244);
  color: white;
}

#list-container list > li.accepts[selected],
#list-container grid > li.accepts[selected] {
  background-color: rgb(215, 215, 215);
}

#list-container list:focus > li.accepts[selected],
#list-container grid:focus > li.accepts[selected] {
  background-color: rgb(48, 125, 254);
}

#list-container list > li.accepts,
#list-container grid > li.accepts {
  background-color: #f1f1f1;
}

#list-container.nohover grid > .accepts {
  background-color: transparent;
}

#directory-tree .tree-item.accepts > .tree-row,
#navigation-list > .accepts,
#list-container list > li.accepts,
#list-container grid > li.accepts {
  -webkit-animation: acceptsBlink 200ms linear 1s 3;
}

@-webkit-keyframes acceptsBlink {
  0% {
    background-color: transparent;
  }
}

.table-row-cell .selection-label {
  -webkit-margin-end: 10px;
  height: 15px;
}

.table-row-cell .filename-label,
.thumbnail-item .filename-label,
/* Show ellipsis in cells. The name column has different structure and overrides
   this rule. */
.table-row-cell > div {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Text box used for renaming in the detail list. */
.table-row-cell input.rename {
  border-width: 0;
  padding: 2px 0;
}

input.rename:focus {
  outline-color: rgb(77, 144, 254);
}

input.rename {
  font: inherit;
  line-height: 1;
  text-align: inherit;
}

.table-row-cell .filename-label,
.table-row-cell input.rename {
  -webkit-box-flex: 1;
}

[renaming] > .filename-label {
  display: none;
}

/* Text box used for renaming in the thumbnail list. */
.thumbnail-grid input.rename {
  -webkit-margin-start: -1px;
  box-sizing: border-box;
  height: 20px;
  width: 114px;
}

/* The cr.ui.Table representing the detailed file list. */
.detail-table {
  width: 100%;
}

/* Bottom pane describing current selection. */
.preview-panel {
  -webkit-box-align: center;
  -webkit-box-orient: horizontal;
  -webkit-transition: background-color 150ms ease;
  background: linear-gradient(
      to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 1));
  border-top: 1px solid rgba(20, 20, 22, 0.1);
  bottom: 0;
  display: -webkit-box;
  height: 51px;
  left: 0;
  opacity: 1;
  padding: 0 10px 0 7px;
  position: absolute;
  right: 0;
  z-index: 3;
}

.preview-panel[visibility=hiding] {
  -webkit-transform: translate(0, 5px);
  opacity: 0;
  /* Using all seems to cause preview panel and checkbox flicking issue. */
  transition: opacity 220ms ease,
              -webkit-transform 220ms ease;
}

.preview-panel[visibility=hidden] {
  display: none;
  opacity: 0;
}

.preview-panel > .left,
.dialog-footer > .left {
  -webkit-box-align: center;
  -webkit-box-flex: 1;
  -webkit-box-orient: horizontal;
  display: -webkit-box;
}

.preview-panel > .right,
.dialog-footer > .right {
  -webkit-box-pack: end;
}

.preview-panel .preparing-label {
  -webkit-margin-start: 30px;
}

.preview-panel .progress-bar {
  -webkit-box-flex: 1;
}

.preview-thumbnails {
  -webkit-box-orient: horizontal;
  display: -webkit-box;
  padding-left: 25px;
}

.preview-thumbnails > .img-container {
  background-color: white;
  background-size: 35px 35px;  /* For file icons. */
  border: 2px solid white;
  box-shadow: 0 1px 1px rgba(80, 80, 80, 0.5);
  box-sizing: border-box;
  cursor: pointer;
  height: 35px;
  margin: 0 0 0 -25px;  /* Overlapped images. */
  overflow: hidden;
  position: relative;
  width: 35px;
}

.preview-thumbnails > .popup {
  -webkit-transform: translate(0, 3px) scale(0.95);
  background-color: #f2f2f2;
  border: 2px solid #fff;
  bottom: 8px;
  box-shadow: 0 0 0 1px #F0F0F0,
              0 0 0 2px #D0D0D0,
              2px 2px 6px rgba(0, 0, 0, 0.2);
  display: -webkit-flex;
  left: -8px;
  opacity: 0;
  pointer-events: none;
  position: absolute;
  transition: opacity 180ms ease-in 300ms,
              -webkit-transform 180ms ease-in 300ms;
  z-index: 1000;
}

.preview-thumbnails.has-zoom:hover > .popup {
  -webkit-transform: translate(0, 0) scale(1.0);
  opacity: 1;
  pointer-events: auto;
}

@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.preview-thumbnails img {
  -webkit-animation: fadeIn 180ms ease-in-out;
}

.preview-thumbnails > .popup > img {
  -webkit-flex: 1 1 0;
  -webkit-user-drag: none;
}

/* Table splitter element */
.table-header-splitter {
  background-image: -webkit-image-set(
    url('../images/files/ui/vertical_separator.png') 1x,
    url('../images/files/ui/2x/vertical_separator.png') 2x);
  background-position: center;
  background-repeat: repeat-y;
  height: 20px;
  top: 10px;
  width: 5px;
}

.table-header-splitter:last-child {
  display: none;
}

/* Container for a table header. */
.table-header {
  box-sizing: border-box;
  height: 47px;
}

.table-header-sort-image-desc::after {
  -webkit-padding-start: 13px;
  background-image: -webkit-image-set(
    url('../images/files/ui/sort_desc.png') 1x,
    url('../images/files/ui/2x/sort_desc.png') 2x);
  background-position: center center;
  background-repeat: no-repeat;
  color: #888;
  content: '\00a0';
  position: relative;
  top: 1px;
}

.table-header-sort-image-asc::after {
  -webkit-padding-start: 13px;
  background-image: -webkit-image-set(
    url('../images/files/ui/sort_asc.png') 1x,
    url('../images/files/ui/2x/sort_asc.png') 2x);
  background-position: center center;
  background-repeat: no-repeat;
  color: #888;
  content: '\00a0';
  position: relative;
  top: -1px;
}

.preview-container .table-header {
  border-radius: 0 4px 0 0;
}

/* Text label in a table header. */
.table-header-label {
  color: rgb(100, 100, 100);
  line-height: 40px;
  margin: 0 7px;
}

.table-row-cell > * {
  -webkit-box-align: center;
  -webkit-box-flex: 1;
  -webkit-box-orient: horizontal;
  padding: 0 10px;
}

.table-row-cell {
  color: rgb(100, 100, 100);
}

.table-row-cell > .detail-name {
  display: -webkit-box;
}

.table-row-cell > .detail-name {
  color: rgb(0, 0, 0);
}


#list-container list:focus > [selected] .table-row-cell,
#list-container list:focus > [selected] .detail-name {
  color: white;
}

.table-row-cell {
  -webkit-box-align: center;
}

.file-checkbox {
  -webkit-margin-end: 0;
  -webkit-margin-start: 0;
  position: relative;
  z-index: 2;
}

#select-all-checkbox {
  -webkit-margin-end: 13px;
  -webkit-margin-start: 3px;
  margin-bottom: 0;
  margin-top: 0;
  vertical-align: middle;
}

#list-container .table-header #select-all-checkbox,
#list-container li.table-row .file-checkbox {
  -webkit-appearance: none;
  background-image: -webkit-image-set(
    url('../images/files/ui/select_checkbox.png') 1x,
    url('../images/files/ui/2x/select_checkbox.png') 2x);
  background-position: center;
  background-repeat: no-repeat;
  border-style: none;
  height: 15px;
  width: 15px;
}

#list-container li.table-row .file-checkbox {
  vertical-align: top;
}

#list-container .table-header #select-all-checkbox::after,
#list-container li.table-row .file-checkbox::after {
  content: none;
}

#list-container .table-header #select-all-checkbox:checked,
#list-container li.table-row .file-checkbox:checked {
  background-image: -webkit-image-set(
    url('../images/files/ui/select_checkbox_checked.png') 1x,
    url('../images/files/ui/2x/select_checkbox_checked.png') 2x);
}

#list-container .table-header #select-all-checkbox:checked,
#list-container list li.table-row[selected] .file-checkbox {
  -webkit-filter: brightness(0) opacity(40%);
}

#list-container list:focus li.table-row[selected] .file-checkbox {
  -webkit-filter: brightness(0) invert();
}

#list-container li.table-row,
#default-actions-list li {
  height: 29px;
  line-height: 29px;
}

/* The icon in the name column. See file_types.css for specific icons. */
.detail-icon {
  height: 24px;
  width: 24px;
}

#detail-table .detail-icon {
  /* To shift the icon position. */
  margin-bottom: 2px;
}

.metadata-item {
  -webkit-box-flex: 1;
  -webkit-box-orient: horizontal;
  -webkit-padding-start: 8px;
  display: -webkit-box;
}

.metadata-label {
  -webkit-margin-end: 6px;
}

.preview-panel .spacer {
  -webkit-box-flex: 1;
}

#delete-button {
  min-width: 21px;  /* overrride */
  padding: 0;  /* overrride */
  width: 21px;
}

#delete-button::before {
  /* Background image should be specified in the before pseudo element because
   * border image fill is specified to delete-button. */
  background: -webkit-image-set(
    url(../images/files/ui/onbutton_trash.png) 1x,
    url(../images/files/ui/2x/onbutton_trash.png) 2x) no-repeat center;
  content: '';
  display: block;
  height: 100%;
  width: 100%;
}

#delete-button[disabled] {
  display: none;
}

#tasks-menu menuitem:not(.change-default) {
  background-position: left 10px center;
  padding-left: 32px;
}

#share-button {
  display: block;
  min-width: 0;  /* overrride */
}

#preview-lines {
  -webkit-box-flex: 1;
  -webkit-margin-end: 10px;
  -webkit-margin-start: 10px;
  vertical-align: middle;
}

/* The selection summary text at the bottom of the preview pane. */
.preview-summary {
  color: #666;
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: middle;
  white-space: nowrap;
}

.preview-summary .calculating-size {
  margin-left: 5px;
  opacity: 0.5;
}

.detail-name > * {
  -webkit-box-align: center;
  display: -webkit-box;
}

/* Overriding input.common[type='checkbox'] rule in common.css. */
.detail-name > input.common[type='checkbox'] {
  -webkit-margin-end: 4px;
  -webkit-margin-start: -1px;
  border-color: #444;
}

list .detail-name > .file-checkbox::before,
.pin::before {
  /* Invisible area that reacts on mouse events. */
  content: '';
  display: -webkit-box;
  height: 38px;
  left: -8px;
  position: absolute;
  right: -9px;
  top: -14px;
}

#filename-input-box {
  -webkit-box-align: center;
  -webkit-box-flex: 1;
  display: -webkit-box;
}

#filename-input-box input {
  -webkit-box-flex: 1;
  display: -webkit-box;
  padding: 1px 2px;
}

#filename-input-box .filename-label {
  -webkit-box-orient: horizontal;
  background-color: white;
  color: #333;
  display: -webkit-box;
  padding-right: 4px;
}

body:not([type='saveas-file']) #filename-input-box {
  display: none;
}

/* A vertical spring. */
.vertical-spacer {
  -webkit-box-flex: 1;
  -webkit-box-orient: vertical;
  display: -webkit-box;
}

/* Dimmed items */

body[type='folder'] .file,
body[type='upload-folder'] .file,
body[drive] .dialog-container[connection='offline'] .dim-offline {
  opacity: 0.4;
}

/* Overlay pane covering the entire file manager window (e.g. image editor)*/
.overlay-pane {
  -webkit-app-region: no-drag;
  border: none;
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
  z-index: 1000;  /* Must be above all elements in file manager container. */
}

/* When the overlay pane is visible hide everything else so that the tab order
  is not confused. */
body[overlay-visible] > :not(.overlay-pane) {
  display: none !important;
}

/* Invisible container for elements representing files while dragging. */
#drag-container {
  left: 0;
  /* Hack for extra margins caused by setDragImage(). */
  padding: 1000px 0 0 1000px;
  position: fixed;
  top: 0;
  z-index: -1;  /* below .dialog-container */
}

#drag-container .drag-contents {
  -webkit-box-orient: horizontal;
  background-color: #fafafa;
  border: 1px solid #bbb;
  border-radius: 3px;
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .2);
  display: -webkit-box;
  margin-bottom: 5px;
  padding: 6px;
  transition: opacity 200ms ease-in;
}

#drag-container .drag-contents.for-image  {
  padding: 2px;
}

#drag-container .thumbnail-item {
  -webkit-box-orient: horizontal;
  display: -webkit-box;
}

/* When changing these properties please preserve these conditions:
   1. width == height (so that the rotated thumbnail does not look off-center)
   2. width % 8 == 0 (to minimize rounding errors in the centering code) */
#drag-container .img-container {
  -webkit-box-flex: 0;
  display: -webkit-box;
  height: 64px;
  overflow: hidden;
  position: relative;
  width: 64px;
}

#drag-container .label {
  -webkit-box-flex: 1;
  font-weight: bold;
  line-height: 24px;
  max-width: 320px;
  overflow: hidden;
  padding: 0 5px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

menu.file-context-menu {
  z-index: 600;  /* Must be below the overlay pane (1000). */
}

menu.chrome-menu hr {
  color: transparent;
  font-size: 0;
}

div.offline {
  -webkit-box-pack: center;
  display: -webkit-box;
}

div.offline > * {
  -webkit-box-align: center;
  display: -webkit-box;
}

div.shade {
  /* transition: opacity 1000ms linear; */
  background-color: rgba(255, 255, 255, 0.8);
  bottom: 0;
  left: 0;
  opacity: 0;
  position: absolute;
  right: 0;
  top: 0;
}

div.shade[fadein] {
  opacity: 1;
}

/* Message panel for unmounted Drive */
#unmounted-panel,
#format-panel {
  bottom: 0;
  color: #333;
  display: none;
  left: 0;
  padding-left: 50px;
  padding-top: 20px;
  position: absolute;
  right: 0;
  top: 0;
}

body[drive='mounting'] .dialog-container #unmounted-panel,
body[drive='error'] .dialog-container #unmounted-panel,
body[unformatted] .dialog-container #format-panel {
  display: block;
}

body[drive='unmounted'] .dialog-container .filelist-panel,
body[drive='mounting'] .dialog-container .filelist-panel,
body[drive='error'] .dialog-container .filelist-panel,
body[unformatted] .dialog-container .filelist-panel {
  /* Hide file list when Drive is not mounted.
     Use opacity to avoid manual resizing.*/
  opacity: 0;
}

#unmounted-panel > *,
#format-panel > * {
  -webkit-box-align: center;
  -webkit-box-orient: horizontal;
  -webkit-box-pack: start;
  display: none;
  height: 22px;
  margin-bottom: 10px;
}

#unmounted-panel > .loading {
  position: relative;
}

#unmounted-panel > .loading > .spinner-box {
  bottom: 0;
  position: absolute;
  right: 100%;
  top: 0;
  width: 40px;
}

body[unformatted] #format-panel > .error,
body[drive='mounting'] #unmounted-panel > .loading,
body[drive='error'] #unmounted-panel > .error,
#format-panel > #format-button,
#unmounted-panel.retry-enabled > .learn-more {
  display: -webkit-box;
}

.plain-link {
  color: rgb(17, 85, 204);
  cursor: pointer;
  text-decoration: none;
}

.buttonbar > * {
  position: relative;
}

.buttonbar .tooltip,
.topbutton-bar .tooltip {
  right: -12px;
  top: 35px;
}

/* Tooltips */
.tooltip {
  background: #2d2d2d;
  border-radius: 0;
  box-shadow: 1px 2px 4px #ccc;
  box-sizing: border-box;
  color: white;
  display: block;
  font-size: 11px;
  font-weight: bold;
  height: 29px;
  line-height: 29px;
  margin-left: -20px;
  min-width: 50px;
  opacity: 0;
  outline: 1px solid rgba(255, 255, 255, 0.5);
  padding: 0 10px;
  pointer-events: none;
  position: absolute;
  text-align: center;
  top: 5px;
  white-space: nowrap;
  z-index: 600;  /* Must be below the overlay pane (1000). */
}

.tooltip::after,
.tooltip::before {
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: transparent;
  content: '';
  display: block;
  margin-left: -5px;
  position: absolute;
  right: 24px;
  top: -5px;
}

.tooltip::after {
  border-bottom: 5px solid #2d2d2d;
}

.tooltip::before {
  border-bottom: 5px solid rgba(255, 255, 255, 0.5);
}

/* Show with delay, disappear instantly */
@-webkit-keyframes tooltip-show {
  0% { opacity: 0; }
  90% { opacity: 0; }
  100% { opacity: 1; }
}

:hover > .tooltip {
  -webkit-animation-duration: 800ms;
  -webkit-animation-iteration-count: 1;
  -webkit-animation-name: tooltip-show;
  -webkit-animation-timing-function: linear;
  opacity: 1;
}

#no-search-results {
  bottom: 0;
  display: none;
  left: 0;
  padding: 10px;
  position: absolute;
  right: 0;
  top: 28px;  /* Leave room for the file list header. */
}

.dialog-container:not([drive-welcome='page']) #no-search-results[show] {
  display: block;
}

#volume-space-info-contents {
  -webkit-box-align: center;
  display: -webkit-box;
}

#volume-space-info-contents > div {
  -webkit-box-flex: 1;
  -webkit-margin-start: 15px;
  display: -webkit-box;
}

#list-container .table-header-inner {
  height: 100%;
}

#list-container .table-header-cell:hover {
  background-color: inherit;
}

#list-container .table-header-cell:first-child {
  -webkit-box-sizing: border-box;
  -webkit-padding-start: 8px;
}

button:focus {
  outline-color: rgb(77, 144, 254);
}

#new-folder-button {
  margin-right: 30px;
}

#default-action-dialog {
  min-width: 300px;
  width: auto;
}

.drive-welcome-wrapper {
  /* drive_welcome.css will override it once loaded. */
  display: none;
}

list.autocomplete-suggestions {
  -webkit-margin-before: -7px;
  -webkit-margin-start: -38px;
  background-color: rgb(250, 250, 250);
  border-radius: 3px;
  box-shadow: 0 1px 4px 0 rgba(0, 0, 0, .5);
  box-sizing: border-box;  /* To match the width with the search box's. */
  color: rgb(34, 34, 34);
  overflow: hidden;
  padding: 5px 0;
  position: fixed;
  width: 300px !important; /* This overrides the value specified by script. */
  z-index: 550;
}

list.autocomplete-suggestions > li {
  -webkit-box-align: center;
  display: -webkit-box;
  padding: 3px 0;
}

list.autocomplete-suggestions > li > div.detail-icon {
  -webkit-margin-end: 6px;
  -webkit-margin-start: 6px;
}

list.autocomplete-suggestions > li > div.detail-text {
  -webkit-box-flex: 1;
  overflow-x: hidden;
  text-overflow: ellipsis;
}

list.autocomplete-suggestions > li > div.detail-text em {
  color: rgb(150, 150, 150);
  font-style: normal;
}

list.autocomplete-suggestions > li > div[search-icon] {
  background: -webkit-image-set(
    url('../images/files/ui/search_icon_active.png') 1x,
    url('../images/files/ui/2x/search_icon_active.png') 2x);
  background-position: center;
  background-repeat: no-repeat;
}

list.autocomplete-suggestions > li[selected] > div[search-icon],
list.autocomplete-suggestions > li[lead] > div[search-icon] {
  -webkit-filter: brightness(0) invert();
}

list.autocomplete-suggestions > [selected],
list.autocomplete-suggestions > [lead] {
  background-color: rgb(66, 129, 244);
  color: white;
}

list.autocomplete-suggestions > [selected] > div.detail-text em,
list.autocomplete-suggestions > [lead] > div.detail-text em {
  color: white;
}

#gear-menu {
  margin-top: 8px;
}

#gear-menu > menuitem:not(.menuitem-button) {
  margin-right: 50px;
}

/* View buttons in the gear menu. */

menuitem#detail-view {
  background-image: -webkit-image-set(
    url('../images/files/ui/button_list_view.png') 1x,
    url('../images/files/ui/2x/button_list_view.png') 2x);
}

menuitem#detail-view[selected]:not([disabled]),
menuitem#detail-view[lead]:not([disabled]) {
  background-image: -webkit-image-set(
    url('../images/files/ui/button_list_view_white.png') 1x,
    url('../images/files/ui/2x/button_list_view_white.png') 2x);
}

menuitem#thumbnail-view {
  background-image: -webkit-image-set(
    url('../images/files/ui/button_mosaic_view.png') 1x,
    url('../images/files/ui/2x/button_mosaic_view.png') 2x);
}

menuitem#thumbnail-view[selected]:not([disabled]),
menuitem#thumbnail-view[lead]:not([disabled]) {
  background-image: -webkit-image-set(
    url('../images/files/ui/button_mosaic_view_white.png') 1x,
    url('../images/files/ui/2x/button_mosaic_view_white.png') 2x);
}

#iframe-drag-area {
  -webkit-app-region: drag;
  height: 48px;
  left: 64px;
  position: absolute;
  right: 92px;
  top: 0;
  width: auto;
  z-index: 101;
}

#suggest-app-dialog {
  background-color: #fff;
  border: 0;
  padding: 0;
  width: auto;
}

#suggest-app-dialog .cr-dialog-title {
  /* Entire height: 44px (content-box 22px + padding 11px * 2) */
  font-size: 16px;
  height: 22px;
  margin: 0;
  padding: 11px 18px;
}

#suggest-app-dialog #webview-container {
  border-bottom: solid 1px #bbb;
  border-top: solid 1px #bbb;
  position: relative;
}

#suggest-app-dialog.show-spinner #webview-container webview {
  pointer-events: none;
}

#suggest-app-dialog:not(.show-spinner) .spinner-layer {
  display: none;
}

#suggest-app-dialog .spinner-layer {
  background-color: rgba(255, 255, 255, 0.7);
}

#suggest-app-dialog .cr-dialog-buttons,
#suggest-app-dialog .cr-dialog-ok,
#suggest-app-dialog .cr-dialog-cancel {
  display: none;
}

#suggest-app-dialog .cr-dialog-text {
  -webkit-padding-after: 10px;
  -webkit-padding-before: 0;
  -webkit-padding-end: 20px;
  -webkit-padding-start: 20px;
  margin: 0;
}

#suggest-app-dialog #buttons {
  background: #eee;
  width: 100%;
}

#suggest-app-dialog #buttons > #webstore-button {
  -webkit-padding-after: 10px;
  -webkit-padding-before: 10px;
  -webkit-padding-end: 10px;
  -webkit-padding-start: 36px;
  background-image: -webkit-image-set(
    url('chrome://theme/IDR_WEBSTORE_ICON_16') 1x,
    url('chrome://theme/IDR_WEBSTORE_ICON_16@2x') 2x);
  background-position: 12px center;
  background-repeat: no-repeat;
  color: #00f;
  cursor: pointer;
  display: inline-block;
  height: 16px;
}

.cr-dialog-frame.error-dialog-frame {
  width: 300px;
}

.error-dialog-frame .error-dialog-img {
  background-image: -webkit-image-set(
    url('chrome://theme/IDR_ERROR_NETWORK_GENERIC') 1x,
    url('chrome://theme/IDR_ERROR_NETWORK_GENERIC@2x') 2x);
  background-position: center;
  background-repeat: no-repeat;
  height: 40px;
}

.error-dialog-frame .cr-dialog-cancel {
  display: none;
}

.error-dialog-frame .cr-dialog-close,
.error-dialog-frame .cr-dialog-title {
  display: none;
}

.error-dialog-frame .cr-dialog-text {
  text-align: center;
}

.cr-dialog-frame.share-dialog-frame {
  background-color: white;
  width: auto;
}

.share-dialog-webview-wrapper {
  height: 100px;
  margin-top: 10px;
  min-width: 300px;
  overflow: hidden;
  transition: height 200ms ease;
}

.share-dialog-webview {
  height: 100%;
  width: 100%;
}

.share-dialog-webview-wrapper:not(.loaded) .share-dialog-webview {
  visibility: hidden;
}

.share-dialog-frame .cr-dialog-text,
.share-dialog-frame .cr-dialog-buttons {
  display: none;
}

#conflict-confirm-dialog .cr-dialog-buttons {
  align-items: baseline;
  display: flex;
}

#conflict-confirm-dialog input[type=checkbox] {
  -webkit-margin-start: -2px;
  width: auto;
}

#conflict-confirm-dialog label {
  flex: 1 0 auto;
}

/* Progress center */

@-webkit-keyframes progress-center-toggle {
  /* Height values of each frame are set by script. */
  from {
  }
  to {
  }
}

#progress-center {
  background-color: transparent;
  border-top: 1px solid transparent;
  overflow: hidden;
  position: relative;
  transition: background-color 300ms linear,
              border 300ms linear;
}

#progress-center.opened {
  background-color: #ebebeb;
  border-top: 1px solid #d8d8d8;
}

#progress-center.animated {
  -webkit-animation: progress-center-toggle 300ms ease-out;
}

#progress-center-open-view {
  opacity: 1;
  padding-top: 42px;
  transition: opacity 300ms linear;
}

#progress-center:not(.opened) #progress-center-open-view {
  opacity: 0;
  pointer-events: none;
  position: absolute;
}

#progress-center-close-view {
  opacity: 1;
  transition: opacity 300ms linear;
}

#progress-center.opened #progress-center-close-view {
  opacity: 0;
  pointer-events: none;
  position: absolute;
}

#progress-center.animated #progress-center-open-view,
#progress-center.animated #progress-center-close-view {
  left: 0;
  pointer-events: none;
  position: absolute;
  right: 0;
  top: 0;
  z-index: 1;
}

#progress-center li {
  display: block;
  min-height: 29px;  /* label 17px + frame 12px */
  padding-bottom: 20px;
}

#progress-center label {
  color: #777;
  display: block;
  font: 12px/17px normal;
  min-height: 17px;
  overflow: hidden;
  padding: 0 20px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

#progress-center li.error label {
  white-space: normal;
}

#progress-center .progress-frame {
  -webkit-padding-end: 10px;
  -webkit-padding-start: 20px;
  align-items: center;
  display: flex;
  margin-top: 4px;
}

#progress-center li.error .progress-frame {
  height: 0;
}

#progress-center .progress-bar {
  -webkit-margin-end: 24px;
  background: #d8d8d8;
  border-radius: 3px;
  flex: 1 0 0;
  height: 6px;
  opacity: 1;
  overflow: hidden;
}

#progress-center li.error .progress-bar,
#progress-center li.canceled .progress-bar {
  visibility: hidden;
}

#progress-center .progress-track {
  background: #787878;
  height: 100%;
}

#progress-center .progress-track.animated {
  transition: width 300ms linear;
}

#progress-center button {
  background: orange;
  border: none;
  cursor: pointer;
  flex: 0 0 auto;
  height: 12px;
  min-height: 0;
  min-width: 0;
  outline: none;
  padding: 0;
  width: 12px;
  z-index: 0;
}

#progress-center button.toggle {
  background: -webkit-image-set(
      url(../images/files/ui/process_drawer_button_opened.png) 1x,
      url(../images/files/ui/2x/process_drawer_button_opened.png) 2x)
      no-repeat;
  position: absolute;
  right: 10px;
  top: 17px; /* label height */
  transition: top 300ms ease-out;
  z-index: 1;
}

#progress-center button.toggle:hover {
  background: -webkit-image-set(
      url(../images/files/ui/process_drawer_button_opened_hover.png) 1x,
      url(../images/files/ui/2x/process_drawer_button_opened_hover.png) 2x)
      no-repeat;
}

#progress-center button.toggle:active {
  background: -webkit-image-set(
      url(../images/files/ui/process_drawer_button_opened_pressed.png) 1x,
      url(../images/files/ui/2x/process_drawer_button_opened_pressed.png) 2x)
      no-repeat;
}

/*
 * If the closed progress center has only one item,
 * toggle button turned into cancel button the item.
 */
#progress-center:not(.opened) #progress-center-close-view.single ~
    button.toggle,
#progress-center button.cancel {
  background: -webkit-image-set(
      url(../images/files/ui/close_bar.png) 1x,
      url(../images/files/ui/2x/close_bar.png) 2x)
      no-repeat;
}

#progress-center:not(.opened)
    #progress-center-close-view.single:not(.cancelable) button.toggle,
#progress-center li:not(.cancelable) button.cancel {
  visibility: hidden;
}

#progress-center.opened button.toggle {
  background: -webkit-image-set(
      url(../images/files/ui/process_drawer_button_closed.png) 1x,
      url(../images/files/ui/2x/process_drawer_button_closed.png) 2x)
      no-repeat;
  top: 10px;
}

#progress-center.opened button.toggle:hover {
  background: -webkit-image-set(
      url(../images/files/ui/process_drawer_button_closed_hover.png) 1x,
      url(../images/files/ui/2x/process_drawer_button_closed_hover.png) 2x)
      no-repeat;
}

#progress-center.opened button.toggle:active {
  background: -webkit-image-set(
      url(../images/files/ui/process_drawer_button_closed_pressed.png) 1x,
      url(../images/files/ui/2x/process_drawer_button_closed_pressed.png) 2x)
      no-repeat;
}
