/* Copyright 2016 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 or at
 * https://developers.google.com/open-source/licenses/bsd
 */

pre.prettyprint {
    padding: 0.5em;
    overflow: auto;
    font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
    font-size: 93%;
}

.role_label {
  background-color: var(--chops-gray-600);
  border-radius: 3px;
  color: var(--chops-white);
  display: inline-block;
  padding: 2px 4px;
  font-size: 75%;
  font-weight: bold;
  line-height: 14px;
  vertical-align: text-bottom;
}

.date {
  margin-right: 1em;
}

.issuedescription pre {
  margin: 0 8px;
  padding: 0 8px;
  max-width: 80em;
}

.issuecomment pre.issue_text {
  margin: 4px 8px;
}

.codefont .issue_text {
  font-family: monospace;
  font-size: 12px;
}

.issuedescription pre, .issuecomment pre {
    white-space: pre-wrap;
    white-space: -moz-pre-wrap;
    white-space: -pre-wrap;
    white-space: -o-pre-wrap;
    font-family: var(--chops-font-family);
}

.issuecomment {
    margin: 16px 8px;
}

.issuedescription pre a, .issuecomment pre a {
    word-wrap: break-word;
    word-break: break-all;
}

.closed_ref { text-decoration: line-through }
.rowmajor { width: 700px; }

.rowmajor th {
    text-align: right;
    white-space: nowrap;
}

@media (min-width: 425px) {
  #issue-main {
    display: flex;
  }
  #left-part {
    width: 10%;
    min-width: 20em;
  }
  #right-part {
    width: 90%;
    margin: 0;
    padding: 0;
    border-bottom: 2px solid var(--chops-page-bg);
  }
  #meta-float, .issueheader {
    position: sticky;
    z-index: 1;
    top: var(--monorail-header-height);
  }
}

@media (max-width: 840px) {
  #meta-float, #summary-float {
    top: 0;
  }
}

#left-part {
  background: var(--monorail-metadata-open-bg);
  border: var(--chops-normal-border);
}

.closed_colors #left-part {
  background: var(--monorail-metadata-closed-bg);
}

#meta-float th { white-space: nowrap; }
.labelediting input { margin: 0 3px 4px 0; }
.labelediting input { color: #060; }
.collapse .ifExpand { display: none }
.expand .ifCollapse { display: none }
.inplace input { width: 100%; }
.inplace td { border: 0; }
.issueheader {
  background: var(--monorail-metadata-open-bg);
  border: var(--chops-normal-border);
  padding: 2px;
  border-left: 0;
}

.closed_colors .issueheader {
  background: var(--monorail-metadata-closed-bg);
}

#flipper-box {
    float: right;
    height: 3em;
    padding: 4px;
    border-left: var(--chops-normal-border);
}

#flipper-box div {
    text-align: center;
    padding: 3px;
}

.closed_colors {
  -: var(--chops-link-color);
}

.closed_colors td.issueheader, .closed_colors td.issueheader a {
  background: #888;
}

#spam_banner {
    border: 1px solid red;
    background: var(--chops-red-50);
    padding: .5em;
    color: var(--chops-black);
    margin: 2px;
}

#spam_banner a {
    color: var(--chops-link-color);
}

.issuepage { margin-top: 0; }
.issuepage td { padding: 2px; }
.issuecomment {
  max-width: 80em;
}

.issuecommentheader {
    background: var(--chops-card-heading-bg);
    padding: 2px 3px 3px 3px;
}

.issuedescription pre, .issuecomment pre {
    padding-top: 6px;
}

.issuedescription pre b, .issuecomment pre b {
    font-size: 110%;
    font-weight: bolder;
    padding: 3px 0 3px 0;
}

.issue_text:focus {
    outline: 0;
}

.author { padding-left: 4px; }

.ichcommands a {
    color: var(--chops-gray-600);
    text-decoration: none;
}

.issueheader .ichcommands a {
    color: #555;
}

.issuecommentbody:focus {
    outline: 0;
}

#issue_meta_details {
    font-size: 95%;
    vertical-align: top;
    padding: 1em 5px 5px 5px;
}

#meta-float td, #meta-float td div, #meta-float div.widemeta {
    max-width: 14em;
    overflow-x: hidden;
    text-overflow: ellipsis;
}
#meta-float td.widemeta,  #meta-float td.widemeta div, #meta-float div.widemeta {
    max-width: 20em;
}

.meta-floatheader {
    padding: 0 5px;
    position: relative;
    min-width: 14em;
}

.issueheader a.material-icons {
    padding: 0 5px;
    text-decoration: none;
    color: grey;
    float: right;
}

.closed_colors #meta-float {
    background: var(--monorail-metadata-closed-bg);
}

#meta-float table td, #meta-float table th {
    margin: 0;
    padding: 0;
    padding-top: 5px;
}

.rel_issues a { white-space: nowrap; }

.issue_restrictions {
    padding: 2px 4px;
    background-color: #fed;
    min-width: 14em;
    border: 2px solid var(--chops-white);
}

.issue_restrictions .restrictions_header {
    padding: 0 0 2px 0;
    text-align: center;
    font-weight: bold;
}

.issue_restrictions ul {
    padding: 0 2px;
    margin: 0;
    list-style: none;
}

.issue_restrictions .other_restriction {
    white-space: nowrap;
}

.lock_grey {
    background: no-repeat url(/static/images/lock.png);
    width: 15px;
    height: 16px
}

.updates {
    background: var(--chops-card-details-bg);
}

.updates table {
    width: 100%;
    font-size: 90%;
    padding: 4px;
}

.fakelink {
    color: var(--chops-link-color);
    cursor: pointer;
    white-space: nowrap;
}

.undef { color: #666; }
table.advquery {
    border: var(--chops-card-border);
    border-radius: var(--chops-radius);
    box-shadow: var(--chops-shadow);
}

table.advquery td {
    white-space: nowrap;
    padding: 2px;
}

.focus td { background: var(--chops-card-heading-bg); }

.eg {
    color: #666;
    font-size: 90%;
}

#submit { font-weight: bold; }
div td .novel { color: #430; }
div td .blockingsubmit { color: #a03; }
div td .exclconflict { color: #a03; }
div td .questionmark { color: #a03; }
.issuecomment .delcom { background: #e8e8e8; }
.numberentry { text-align: right; }

.rollovercontrol { display: none; }
.rolloverzone:hover .rollovercontrol { display: inline; }

td u {
    margin-left: .3em;
    color: var(--chops-link-color);
    cursor: pointer;
    white-space: nowrap;
    text-decoration: none;
}

td u:hover { text-decoration: underline; }
#peopledetail input { margin-bottom: 2px; }
#perm_defs { margin-top: 1em; }
#perm_defs th { text-align:left; }

#perm_defs td {
    vertical-align:bottom;
    padding-left: 1em;
}

.attachments { width:33%; margin-left: .7em;}
.attachments table {
  background: var(--chops-card-details-bg);
  padding: 4px;
   margin: 8px;
}
.attachments table tr td { padding: 0; margin: 0; font-size: 95%; }
.preview { border: 2px solid #c3d9ff; padding: 1px; }
.preview:hover { border: 2px solid blue; }
.label { white-space: nowrap; }

.cursor_on .author {
    background: url(/static/images/show-arrow.gif) no-repeat 2px;
}

/* For Popup dialog boxes*/

#update-issues-hotlists, #transfer-ownership-container, #remove-self-container {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.4);
    z-index: 10;
}

#update-issues-hotlists-dialog, #transfer-ownership-dialog, #remove-self-dialog {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: var(--chops-white);
    border: 3px solid #333;
    padding: 1em;
    max-height: 75%;
    width: 75%;
    max-width: 30em;
    overflow-y: auto;
}

/* Issue Peek Feature */

#infobubble {
  position: absolute;
  display: none;
  border: 1px solid #666;
  padding: 3px 5px 5px 5px;
  background: #ebeff9;
}

#peekarea {
  min-height: 30em;
  font-size: 95%;
  background: var(--chops-white);
}

.perms_EditIssue #peekarea {
   min-height: 36.4em;
}

#issuesummary {
  width: 300px;
  max-width: 300px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

td.rowwidgets { padding: 2px 2px 0 7px; }
.cursor_on td.rowwidgets {
  background-image: url(/static/images/show-arrow.gif);
  background-repeat: no-repeat;
  background-position: 2px;
}

.loading {
  background-image: url(/static/images/spin_16.gif);
  background-repeat: no-repeat;
  background-position: 2px;
  padding: 4px 20px;
}

#peekheading {
  background: #ebeff9;
  font-size:140%;
  padding:2px 2px 0; overflow-x: hidden;
  white-space:nowrap;
}

.peek #meta-float, .peek #issuecomments {
  height: 28em;
  max-height: 28em;
  overflow-y: auto;
  overflow-x: hidden;
  scroll: auto;
}

#hc_controls { float: right; }
#hc_controls a.paginate { margin-left: 1px; }
#hc_controls a.close { margin-left: 3px; }

#infobuttons {
  background: var(--chops-white);
  /* for IE */
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f1f1f1');
  /* for webkit browsers */
  background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f1f1f1));
  /* for firefox 3.6+ */
  background: -moz-linear-gradient(top,  #fff,  #f1f1f1);
  border-top: 1px solid #ccc;
  white-space:nowrap;
}

#infobuttons td {
  padding: 0;
}

.custom_field_value_menu {
  width: 20em;
}

.enum_checkbox {
  display: inline-block;
  width: 24%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  background: #f8f8f8;
}

.cue.scrim {
  position: fixed;
  z-index: 1;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  overflow: auto;
  background-color: rgb(0,0,0);
  background-color: rgba(0,0,0,0.4);
}

#privacy_dialog {
  background: #fefefe;
  border: 1px solid #888;
  border-radius: 4px;
  margin: 15% auto;
  padding: 20px;
  width: 80%;
  max-width: 40em;
}

#privacy_dialog .actions {
  margin-top: 2em;
  text-align: right;
  font-weight: bold;
}

#privacy_dialog .actions a {
  text-decoration: none;
  margin-left: 2em;
}

#show-ranks, #hide-ranks, #add-issue-to-hotlist{
  color: #555;
  cursor: pointer;
}

.rel_issues:hover #show-ranks, #hide-ranks:hover, #add-issue-to-hotlist:hover {
  text-decoration: underline;
}

#blocked-scrim {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.4);
  z-index: 10;
}

#blocked-table {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: var(--chops-white);
  border: 3px solid #333;
  padding: 1em;
  max-height: 75%;
  width: 75%;
  overflow-y: auto;
}

#blocked-rank {
  display: table;
  width: 100%;
}

#blocked-rank .closed a {
  text-decoration: line-through;
}

.drag_item[draggable=true] {
  position: relative;
}

.drag_item[draggable=false] {
  cursor: wait;
}

.gripper {
  color: var(--chops-primary-icon-color);
  cursor: grab;
  opacity: 0;
}

.drag_item[draggable=true]:hover .gripper {
  opacity: 1;
}

.drag_container th, .drag_container td {
    padding: 0.5em;
}

.drag_container th {
  color: var(--chops-link-color);
  background: var(--chops-table-header-bg);
  text-align: left;
}

.drag_item.top td {
  border-top: 2px solid #888;
}

.drag_item.bottom td {
  border-bottom: 2px solid #888;
}

.component-suggestion {
  display: inline-block;
  cursor: pointer;
  padding: 0.25em;
  margin: 0.25em;
  border: 1px solid #ddd;
  border-radius: 0.25em;
  background-color: #e3e9ff;
}

#preview_filterrules_area {
  color: #430;
  margin-top: 1em;
}

#preview_filterrules_area div {
  margin-left: 1em;
}

#preview_filterrules_area div span {
  font-style: italic;
  text-decoration-line: underline;
  text-decoration-style: dotted;
}

#preview_filterrules_warnings, #preview_filterrules_errors {
  margin-top: 3px;
}
#preview_filterrules_warnings ul, #preview_filterrules_errors ul {
  margin-top: 0;
  list-style-type: none;
}

#preview_filterrules_errors ul {
  color: red;
}

#searchtips p {
  max-width: 60em;
}
