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

#feedback-page {
  -webkit-margin-start: 80px;
  color: rgb(48, 57, 66);
}

#feedback-page > h1 {
  border-bottom: 1px solid #eee;
  padding-bottom: 6px;
  width: 718px;
}

#content {
  width: 600px;
}

#description {
  display: block;
  font-weight: 300;
  text-align: start;
  vertical-align: text-top;
}

#description-text {
  box-sizing: border-box;
  margin-top: 1em;
  width: 100%;
}

.input-text-container {
  -webkit-box-align: baseline;
  display: -webkit-box;
}

.input-text-container > label {
  -webkit-margin-end: 1em;
  width: 150px;
}

.input-text-container > input {
  -webkit-box-flex: 1;
  display: block;
  /* Don't push checkboxes out of alignment with bulky input. */
  margin-bottom: -0.25em;
}

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

.thumbnail-list {
  margin-bottom: 1em;
  margin-top: 1em;
  min-height: 151px;
}

.image-thumbnail-container {
  border: 2px solid #ccc;
  border-radius: 3px;
  display: inline-block;
}

.image-thumbnail-container-selected:not(:only-of-type) {
  border-color: green;
}

.image-thumbnail-container:not(:only-of-type):not(
    .image-thumbnail-container-selected):hover {
  border-color: rgb(184, 218, 176);
}

.image-thumbnail {
  border: 2px solid white;
}

.image-thumbnail img {
  display: block;
  height: 140px;
}

#privacy-note {
  margin-bottom: 0.8em;
  width: 44em;
}

#buttons-pane {
  /* Linux and Mac OS X display OK/Cancel dialogs in the reverse direction. */
<if expr="not pp_ifdef('toolkit_views')">
  -webkit-box-direction: reverse;
</if>
  display: -webkit-box;
  padding: 0 0 12px;
}

#buttons-pane > input {
  -webkit-margin-end: 0.8em;
  display: block;
}

#attach-file-note {
  -webkit-margin-start: 150px;
  -webkit-padding-start: 1em;
  padding-bottom: 20px
  padding-top: 10px;
}

#attach-file {
  margin: 0;
}

.attach-file-notification {
  color: rgb(204, 0, 0);
  font-weight: bold;
  padding-left: 20px;
}

.launcher-layout #page-url,
.launcher-layout #screenshot-row,
.launcher-layout #title,
.launcher-layout #description,
html:not(.launcher-layout) #launcher-title,
html:not(.launcher-layout) #launcher-description {
  display: none;
}
