/* 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 {
  margin: 10px;
  min-width: 47em;
}

a {
  color: blue;
  font-size: 103%;
}

div#header {
  -webkit-padding-start: 0;
  box-sizing: border-box;
  margin-bottom: 1.05em;
  /* 67px is the height of the header's background image. */
  min-height: 67px;
  overflow: hidden;
  padding-bottom: 20px;
  padding-top: 20px;
  position: relative;
}

#header h1 {
  background: -webkit-image-set(
      url('../../app/theme/default_100_percent/common/extensions_section.png') 1x,
      url('../../app/theme/default_200_percent/common/extensions_section.png') 2x)
      0 20px no-repeat;
  display: inline;
  margin: 0;
  padding-bottom: 40px;
  padding-left: 75px;
  padding-top: 40px;
}

html[dir=rtl] #header h1 {
  background: -webkit-image-set(
      url('../../app/theme/default_100_percent/common/extensions_section.png') 1x,
      url('../../app/theme/default_200_percent/common/extensions_section.png') 2x)
      right no-repeat;
  padding-left: 0;
  padding-right: 95px;
}

h1 {
  font-size: 156%;
  font-weight: bold;
  margin: 0;
  padding: 0;
}

#disabled-container {
  font-size: 120%;
  padding-bottom: 1.5em;
}

#disabled-header {
  color: red;
  font-weight: bold;
}

div.content {
  margin-top: 5px;
}

.section-header {
  -webkit-padding-start: 5px;
  background: rgb(235, 239, 249);
  border-top: 1px solid rgb(181, 199, 222);
  font-size: 99%;
  padding-bottom: 2px;
  padding-top: 3px;
  width: 100%;
}

.section-header > table tr td:first-child {
  width: 100%;
}

.section-header > table {
  width: 100%;
}

.section-header-title {
  font-weight: bold;
}

.vbox-container {
  -webkit-box-orient: vertical;
  display: -webkit-box;
}

.wbox {
  -webkit-box-align: stretch;
  -webkit-box-flex: 1;
  display: -webkit-box;
}

#top {
  -webkit-padding-end: 5px;
}

.show-in-tmi-mode {
  overflow: hidden;
}

body.hide-tmi-mode-initial .show-in-tmi-mode {
  height: 0 !important;
  opacity: 0;
}

body.hide-tmi-mode .show-in-tmi-mode {
  -webkit-transition: all 100ms ease-out;
  height: 0 !important;
  opacity: 0;
}

body.show-tmi-mode-initial .show-in-tmi-mode {
  opacity: 1;
}

body.show-tmi-mode .show-in-tmi-mode {
  -webkit-transition: all 100ms ease-in;
  opacity: 1;
}

.wbox-tmi-mode {
  -webkit-box-align: stretch;
  -webkit-box-flex: 1;
}

.tmi-mode-image {
  margin-top: 2px;
  padding-left: 5px;
  padding-right: 5px;
}

.tmi-mode-link {
  margin-right: 3px;
  white-space: nowrap;
}

.tmi-mode-link a {
  font-size: 97%;
}

.tmi-mode {
  -webkit-padding-start: 10px;
  background: rgb(244, 246, 252);
  border-bottom: 1px solid rgb(237, 239, 245);
  font-size: 89%;
  padding-bottom: 0.8em;
  padding-top: 0.8em;
  width: 100%;
}

.plugin-disabled {
  background-color: #f0f0f0;
  color: #a0a0a0;
}

.plugin > tr > td {
  padding-bottom: 4px;
  padding-top: 5px;
}

.plugin-file {
  padding-bottom: 5px;
  padding-top: 5px;
}

.plugin {
  border-bottom: 1px solid #cdcdcd;
}

.critical {
  color: red;
}

/* Indent the text related to each plug-in. */
.plugin-text {
  -webkit-padding-start: 5px;
}

.plugin-name {
  font-weight: bold;
}

.no-plugins {
  font-size: 1.2em;
  margin: 6em 0 0;
  text-align: center;
}

/* Use tables for layout, so eliminate extra spacing. */
.plugin-details table {
  -webkit-border-horizontal-spacing: 0;
  -webkit-border-vertical-spacing: 0;
}

.plugin-details {
  -webkit-padding-start: 1em;
}

/* Separate the inital line, Description, Location, and MIME Types lines. */
.plugin-details > div {
  padding-top: 0.1em
}

/* Align rows of tables along the top. */
.plugin-details tr {
  vertical-align: top;
}

/* Separate columns by 1em for the most part. */
.plugin-details td+td {
  -webkit-padding-start: 1em;
}

/* Make the MIME Types tables smaller. */
.plugin-details .mime-types {
  font-size: 95%;
}

/* Separate the header from the contents in each MIME Types table. */
.plugin-details .mime-types .header td {
  border-bottom: 1px solid black;
  padding-bottom: 0.1em;
}

/* Separate the columns for tables used for horizontal listings only a bit. */
.hlisting td+td {
  -webkit-padding-start: 0.4em;
}

/* Match the indentation of .plugin-text. */
.plugin-actions {
  -webkit-padding-start: 5px;
  margin-bottom: 0.2em;
  margin-top: 0.2em;
}

.always-allow {
  -webkit-margin-start: 30px;
}

button {
  font-size: 104%;
}
