/* Copyright (c) 2017 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-margin-start: 23px;
}

body > .page {
  -webkit-margin-end: 0;
  -webkit-padding-end: 24px;
}

#filter-overlay {
  padding-bottom: 0;
  position: fixed;
  z-index: 4;
}

body header {
  left: 23px;
  max-width: none;
}

html[dir='rtl'] body header {
  right: 23px;
}

body section {
  max-width: none;
}

div.label {
  -webkit-margin-end: 1em;
  white-space: nowrap;
}

#show-unset-container {
  float: right;
  text-align: right;
}

html[dir='rtl'] #show-unset-container {
  float: left;
  text-align: left;
}

div.show-unset-checkbox {
  float: right;
}

html[dir='rtl'] div.show-unset-checkbox {
  float: left;
}

section.reload-show-unset-section {
  padding-bottom: 30px;
  padding-top: 15px;
}

div.table-description {
  color: rgb(100, 100, 100);
}

div.no-policies-set {
  color: rgb(180, 180, 180);
  font-size: 125%;
  margin-bottom: 10px;
  margin-top: 20px;
  text-align: center;
}

table {
  border-collapse: collapse;
  margin-bottom: 5px;
  margin-top: 17px;
  table-layout: fixed;
  width: 100%
}

section.empty > table {
  display: none;
}

section:not(.empty) > div.no-policies-set {
  display: none;
}

#main-section {
  -webkit-padding-start: 0;
}

section.policy-table-section {
  padding-bottom: 10px;
}

th,
td {
  border: 1px solid rgb(217, 217, 217);
  padding: 7px;
}

th {
  background-color: rgb(240, 240, 240);
  font-weight: normal;
}

.no-help-link .name-link {
  color: inherit;
  pointer-events: none;
  text-decoration: none;
}

div.elide,
span.value {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.toggle-expanded-value {
  padding: 0;
}

tbody.has-overflowed-value span.value {
  display: none;
}

tbody:not(.has-overflowed-value) .toggle-expanded-value {
  display: none;
}

tbody:not(.has-overflowed-value) > tr.expanded-value-container,
tbody:not(.show-overflowed-value) > tr.expanded-value-container {
  display: none;
}

td.expanded-value {
  white-space: pre;
  word-wrap: break-word;
}

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