/* Copyright 2016 The Chromium Authors
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

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;
}
