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

html,
body {
  height: 100%;
  overflow: hidden;
}

@media print {
  body {
    height: auto;
  }
}

html.loading * {
  -webkit-transition-duration: 0 !important;
}

html:not(.focus-outline-visible)
:enabled:focus:-webkit-any(input[type='checkbox'], input[type='radio']) {
  /* Cancel border-color for :focus specified in widgets.css. */
  border-color: rgba(0, 0, 0, 0.25);
}

/* Developer mode */

#dev-controls {
  -webkit-margin-end: 20px;
  -webkit-transition: padding 100ms, height 100ms, opacity 100ms;
  border-bottom: 1px solid #eee;
  height: 0;
  opacity: 0;
  overflow: hidden;
}

#dev-controls .buttons-container,
#apps-dev-tool-banner {
  -webkit-padding-end: 3px;
  -webkit-padding-start: 4px;
}

#dev-controls .buttons-container {
  display: -webkit-box;
  padding-top: 13px;
}

#dev-controls button {
  white-space: nowrap;
}

#extension-settings.dev-mode #dev-controls {
  -webkit-transition-duration: 250ms;
  height: 45px;
  opacity: 1;
  padding-bottom: 7px;
}

#extension-settings.dev-mode.apps-dev-tools-mode #dev-controls {
  height: 100px;
}

#apps-dev-tool-banner {
  border-bottom: 1px solid #eee;
  display: none;
  padding-bottom: 13px;
  padding-top: 13px;
}

#extension-settings.dev-mode.apps-dev-tools-mode #apps-dev-tool-banner {
  display: -webkit-box;
}

.apps-dev-tool-banner-text {
  -webkit-box-flex: 1;
}

#dev-controls-spacer {
  -webkit-box-flex: 1;
}

#dev-toggle {
  margin-top: 0;
  text-align: end;
}

#extension-settings:not(.dev-mode) .developer-extras {
  display: none;
}

.developer-extras > div,
.permanent-warnings > div {
  margin: 5px 0;
}

#extension-settings #page-header {
  /* These values match the .page values. */
  -webkit-margin-end: 24px;
  min-width: 576px;
}

/* Contents */

#page-container {
  height: 100%;
  overflow-y: auto;
}

#extension-settings {
  max-width: 738px;
}

#no-extensions-message {
  font-weight: bold;
}

#suggest-gallery {
  -webkit-padding-start: 10px;
}

#footer-section {
  background: url('chrome://theme/IDR_WEBSTORE_ICON_32') no-repeat left center;
  font-size: 1.25em;
}

html[dir=rtl] #footer-section {
  background: url('chrome://theme/IDR_WEBSTORE_ICON_32') no-repeat right center;
}

#footer-section > a {
  -webkit-margin-start: 42px;
  line-height: 32px;
}

.empty-extension-list {
  height: 3em;
}

.loading #no-extensions,
.loading #footer-section,
#extension-settings-list:not(.empty-extension-list) ~ #no-extensions,
.empty-extension-list ~ #footer-section {
  display: none;
}

.extension-list-item-wrapper {
  margin: 23px 0;
}

.extension-list-item {
  background-repeat: no-repeat;
  display: -webkit-box;
  min-height: 48px;
}

html[dir='rtl'] .extension-list-item {
  background-position: right;
}

.extension-title {
  -webkit-padding-end: 20px;
  color: rgb(48, 57, 66);
  font-size: 14px;
  font-weight: 500;
}

.inactive-extension .extension-title {
  color: inherit;
}

.extension-version {
  -webkit-padding-end: 7px;
  font-size: 13px;
  font-weight: 400;
}

.extension-description {
  -webkit-padding-end: 5px;
  font-size: 13px;
  margin: 5px 0;
  white-space: normal;
}

.extension-details {
  -webkit-box-flex: 1;
  -webkit-padding-start: 55px;
}

.extension-description,
.extension-list-item-wrapper.inactive-extension .extension-details,
.location-text,
.enable-checkbox input:disabled + .enable-checkbox-text {
  color: rgb(151, 156, 160);
}

.enable-controls {
  /* Matches right: position of dev controls toggle. */
  -webkit-margin-end: 20px;
  position: relative;
}

.enable-checkbox-text {
  /* Matches width of trash. */
  -webkit-margin-end: 30px;
}

.checkbox {
  display: inline-block;
}

.enabled-text {
  font-weight: bold;
}

.extension-list-item-wrapper.inactive-extension .enabled-text,
.extension-list-item-wrapper:not(.inactive-extension) .enable-text,
.extension-list-item-wrapper.inactive-extension .optional-controls,
.extension-list-item-wrapper.inactive-extension .butter-bar {
  display: none;
}

.load-path > span {
  word-wrap: break-word;
}

.terminated-reload-link {
  -webkit-margin-end: 2.5em;
  padding-top: 7px;
}

.extension-list-item a {
  -webkit-margin-start: 0.5em;
  display: inline-block;
}

.install-warnings a {
  -webkit-margin-start: 0;
}

.butter-bar,
.install-warnings,
.extension-warnings {
  border-radius: 3px;
  margin-top: 5px;
  padding: 2px 5px;
}

.butter-bar {
  background: rgb(255, 242, 153);
}

.install-warnings,
.extension-warnings {
  background: pink;
}

.install-warnings ul,
.extension-warnings ul {
  margin: 0;
}

#font-measuring-div {
  /* Remove from the flow and hide. */
  position: absolute;
  visibility: hidden;
}

.extension-commands-config {
  float: right;
}

html[dir=rtl] .extension-commands-config {
  float: left;
}

/* Overlays */

#overlay {
  z-index: 5;
}

#overlay .page:not(.showing) {
  display: none;
}

#drop-target-overlay {
  color: rgb(48, 57, 66);
  font-size: 18px;
  text-align: center;
}

#drop-target-overlay div {
  margin: 1em;
}

.location-text {
  display: block;
  width: 100px;
}

/* Trash */

#extension-settings .trash {
  -webkit-transition: opacity 200ms;
  height: 22px;
  opacity: 0.8;
  position: absolute;
  right: 0;
  top: 3px;
  vertical-align: middle;
}

html[dir='rtl'] #extension-settings .trash {
  left: 0;
  right: auto;
}

.extension-list-item:not(:hover) .trash:not(:focus) {
  opacity: 0;
}

.extension-list-item-wrapper.may-not-disable .trash {
  visibility: hidden;
}

.extension-highlight {
  background: rgb(238, 238, 238);
  background-position: auto;
  background-repeat: auto;
  border-radius: 3px;
  padding: 5px 0 5px 5px;
}

.may-not-disable .optional-controls .optional-controls-disableable {
  display: none;
}

/* Managed mode */

.page:not(.profile-is-managed) .profile-is-managed-banner,
.profile-is-managed .more-extensions-link {
  display: none;
}

.profile-is-managed-banner .page-banner-text {
  background-image: url('chrome://theme/IDR_WARNING');
}

/* Sideload Wipeout */

.sideload-wipeout-learn-more {
  text-decoration: none;
}

.sideload-wipeout-banner .page-banner-text {
  -webkit-padding-start: 8px;
  background-image: none;
}
