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

@import url(omnibox_column_widths.css);

output-results-group:not([hidden]) {
  display: inline-block;
  margin-bottom: 60px;
}

.check-mark,
.x-mark {
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
  font-size: 0;
  height: 16px;
  width: 16px;
}

.check-mark {
  background-image: url(../../../../ui/webui/resources/images/check_circle_green.svg);
}

.x-mark {
  background-image: url(../../../../ui/webui/resources/images/cancel_red.svg);
}

body {
  background-color: #fcfcfc;
  overflow-y: scroll;
}

* {
  transition-duration: 300ms;
}

table {
  --border-color: #ccc;
  --header-bg-color: #f8f8f8;
  --header-color: #555;
  --row-hover-color: #f6f6f6;

  background-color: white;
  border: 2px solid var(--border-color);
  border-spacing: 0;
  font-size: 12px;
  min-width: 900px;
  table-layout: fixed;
  width: 100%;
}

thead tr {
  background-color: var(--header-bg-color);
  color: var(--header-color);
  font-size: 15px;
  text-align: left;
}

tbody tr {
  height: 66px;
}

tbody td > * {
  display: block;
  max-height: 56px;
}

tbody td * {
  overflow: hidden;
  word-break: break-all;
}

tbody td:not(:hover) * {
  text-overflow: ellipsis;
  white-space: nowrap;
}

tbody td:hover * {
  overflow-y: auto;
}

tbody tr td pre.json,
tbody tr td pre.json * {
  white-space: pre-wrap;
}

tbody tr:hover td {
  background-color: var(--row-hover-color);
}

th,
td {
  padding: 0 5px;
}

th {
  padding-bottom: 6px;
  padding-top: 12px;
}

.header-container {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.header-container span:not(:last-child)::after {
  color: #555;
  content: ' & ';
}

.filtered-highlighted {
  background-color: rgb(208, 240, 255);
}

.filtered-highlighted-nested {
  background-color: rgb(208, 255, 208);
}

pre.json .key {
  color: purple;
  font-weight: bold;
}

pre.json .string {
  color: green;
}

pre.json .number {
  color: blue;
}

pre.json .boolean {
  color: slateblue;
  font-weight: bold;
}

pre.json .null {
  color: magenta;
  font-weight: bold;
}

/* column specific styling */

.cell-provider-and-type .pair-item:first-child {
  color: green;
  font-weight: bold;
}

tbody:not(:first-of-type) td.cell-provider-and-type .pair-item:first-child {
  font-size: 0;
}

.cell-contents-and-description .pair-container,
.cell-fill-and-inline .pair-container {
  display: flex;
  flex-wrap: wrap;
}

.cell-contents-and-description .pair-container {
  margin-right: -15px;
}

.cell-contents-and-description .pair-item {
  margin-right: 15px;
}

.cell-contents-and-description .pair-item:first-child {
  color: blue;
}

.cell-fill-and-inline .pair-container {
  align-items: center;
  margin-right: -1px;
}

.cell-fill-and-inline .pair-item {
  margin-right: 1px;
}

.cell-fill-and-inline .pair-item:nth-child(2):not(:empty) {
  border: 1px solid;
  font-weight: bold;
}

.cell-fill-and-inline .overlap-warning {
  color: red;
}

.accesskey {
  text-decoration: underline;
  text-transform: capitalize;
}

.header-provider-and-type .header-container :first-child {
  color: green;
}

.header-contents-and-description .header-container :first-child {
  color: blue;
}

.header-fill-and-inline .header-container :nth-child(2) {
  border: 1px solid;
}

omnibox-inputs {
  --action-color: rgb(66, 133, 244);
  --hover-color: #f2f2f2;
  --input-alignment-indentation: 9px;
  --text-active-color: #fff;
  --text-hover-color: #eee;
  --text-inactive-color: #f5f5f5;
}

/* :hover, :focus, & :active */

input[type=text]:hover,
select:hover {
  background-color: var(--text-hover-color);
}

.checkbox-container:hover input ~ .checkbox-mark,
.button:hover {
  background-color: var(--hover-color);
}

input[type=text]:focus,
select:focus,
.button:active {
  background-color: var(--text-active-color);
  border-color: var(--action-color);
  outline: none;
}

.button:active {
  transition-duration: 0ms;
}

/* text input */

input[type=text],
select {
  background-color: var(--text-inactive-color);
  border: 2px solid var(--text-inactive-color);
  border-radius: 5px;
}

input[type=text] {
  box-sizing: border-box;
  padding: 3px 7px;
  width: 100%;
}

input[type=text].input-icon-container {
  background-position-x: 5px;
  background-position-y: center;
  background-repeat: no-repeat;
  background-size: 20px;
  padding-left: 30px;
}

/* select */

select {
  cursor: pointer;
  max-width: 250px;
  /* padded so that its text aligns with other elements and its height is the
  same as input elements' height */
  padding: 2px 0 2px 3px;
  width: 100%;
}

/* stylized checkbox */

.checkbox-container {
  cursor: pointer;
  display: flex;
  position: relative;
  user-select: none;
}

input[type=checkbox] {
  margin-left: 0;
}

/* icon buttons */

.icon-button * {
  vertical-align: middle;
}

/* button */

.button {
  border-radius: 5px;
  color: var(--action-color);
  cursor: pointer;
  display: inline-block;
  padding: 3px var(--input-alignment-indentation);
  user-select: none;
}

/* icons */

.icon {
  background-position: -2px center;
  background-size: 20px;
  display: inline-block;
  height: 20px;
  width: 20px;
}

.search-icon {
  background-image: url(../../../../ui/webui/resources/images/icon_search.svg);
}

.filter-icon {
  background-image: url(../../../../ui/webui/resources/images/icon_search.svg);
}

.reset-icon {
  background-image: url(../../../../ui/webui/resources/images/icon_refresh.svg);
}

.copy-white-icon {
  background-image: url(../../../../ui/webui/resources/images/icon_tabs.svg);
}

.copy-black-icon {
  background-image: url(../../../../ui/webui/resources/images/icon_tabs.svg);
}

.copy-red-icon {
  background-image: url(../../../../ui/webui/resources/images/icon_tabs.svg);
}

/* layout */

.top {
  display: flex;
  padding: 5px 0;
}

.top-column {
  display: flex;
  flex-basis: 0;
  flex-direction: column;
  flex-grow: 1;
  padding: 0 15px;
}

.text,
.text-input {
  font-size: 14px;
}

.row {
  margin-bottom: 3px;
  margin-top: 3px;
}

.unindented {
  margin-left: calc(-1 * var(--input-alignment-indentation));
}

.section-header {
  color: gray;
  font-size: 12px;
}
