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

@charset "utf-8";

body {
    margin: 0 0 3px 0;
    min-width: 768px;
}

#monobar {
    background: var(--chops-primary-header-bg);
    margin: 0;
    padding: 0;
}

#monobar th {
    white-space: nowrap;
    vertical-align: middle;
    font-weight: normal;
}

.sidebar {
    background: var(--chops-sidebar-bg);
    border: var(--chops-normal-border);
    padding: 4px;
}

.padded {
    padding: 4px 1em;
}

#monobar a#wordmark {
    font-family: sans-serif;
    font-variant: small-caps;
    font-size: 140%;
    font-weight: bold;
    font-style: oblique;
    color: #822;
    letter-spacing: 1px;
    text-decoration: none;
}

#thumbnail_box {
    background-color: var(--chops-white);
    vertical-align: middle;
}

#thumbnail_box a, #thumbnail_box img {
    display: block;
}

.toptabs a:link, .toptabs a:visited {
    color: #444;
    padding: 0 .5em ;
    text-decoration: none;
}

.toptabs a:hover {
    color: var(--chops-link-color);
    text-decoration: underline;
}

.toptabs a.active {
    font-weight: bold;
    color: var(--chops-black);
    text-decoration: none;
}

#userbar {
    text-align: right;
}

#userbar a {
    color: var(--chops-black);
}

.subt {
    background: var(--chops-secondary-header-bg);
    margin: 0;
    padding: 4px 1em;
    border: var(--chops-normal-border);
    border-width: 1px 0 1px 0;
}

a:link, a:focus {
    color: var(--chops-link-color);
}

a:active {
    color: red;
}

input[type="text"] {
    border-color: #999 #ccc #ccc;
    border-style: solid;
    border-width: 1px;
    padding: 3px 3px;
}

input[type=button], input[type=reset], input[type=submit], .buttonify {
    font-size: 100%;
    background: var(--chops-button-bg);
    color: var(--chops-button-color) !important;

    padding: 6.1px 10px;
    margin-right: .6em;
    border: var(--chops-button-border);
    border-radius: var(--chops-button-radius);
    box-shadow: var(--chops-shadow);
    cursor: pointer;
    text-decoration: none;
}

.subt input[type=button], .subt input[type=reset], .subt input[type=submit], .subt .buttonify {
    padding: 3px 6px;
}

input[type=submit], input[type=button].primary, a.primary {
    background: var(--chops-primary-button-bg);
    color: var(--chops-primary-button-color) !important;
}

input[type=submit].secondary {
    background: var(--chops-button-bg);
    color: var(--chops-button-color) !important;
}

input[type=submit]:disabled, input[type=button]:disabled {
    background: var(--chops-button-disabled-bg);
    color: var(--chops-button-disabled-color) !important;
}

.button_set {
    float: right;
    font-size: 95%;
    display: flex;
    margin-left: 2em;
    margin-bottom: 5px; /* Offsets padding lost by flex+float. */
}

@-moz-document url-prefix() {
    .buttonify {
	padding: 2px 3px 2px 3px;
    }
}

input[type=button]:hover, input[type=reset]:hover, input[type=submit]:hover, .buttonify:hover {
    border-color: #666;
    text-decoration: none !important;
}

.choice_chip {
    padding: 4px 10px;
    margin-left: 6px;
    background: var(--chops-choice-bg);
    color: var(--chops-choice-color);
    border-radius: 50vh;
    text-decoration: none;
}

.active_choice {
    background: var(--chops-active-choice-bg);
    color: var(--chops-active-choice-color);
    font-weight: var(--chops-link-font-weight);
}

a.choice_chip, a.choice_chip:visited {
    color: var(--chops-choice-color);
}

input[type=button]:active, input[type=reset]:active, input[type=submit]:active,
input.primary:active, .buttonify:active {
  background: var(--chops-gray-600);
  color: var(--chops-white) !important;
}

textarea {
    border-color: #999 #ccc #ccc;
    border-style: solid;
    border-width: 1px;
}

td td, th th, th td, td th {
    font-size: 100%;
}

form {
    padding: 0;
    margin: 0;
}

.hidden {
  display: none !important;
}

/* Project tab bar. */
.gtb {
  background: var(--chops-white);
  border-bottom: 1px solid #ccc;
  padding: 5px 10px 0 5px;
  white-space: nowrap;
}

.user_bar {
    cursor: pointer;
    float: right;
    margin: 5px 15px 6px 10px;
}

.gtb .gtbc {
    clear: left;
}

table {
    border-collapse: separate;
}

.nowrap { white-space: nowrap; }
.nowrapspan span { white-space: nowrap; }
.derived { font-style: italic; }

.bubble_bg {
    background: #eee;
    margin-bottom: 0.6em;
}

.bubble {
    padding: 4px;
}

#bub {
    padding: 0 1px 0 1px;
}

.bub-top {
    margin: 0 2px 2px;
}

.bub-bottom {
    margin: 2px 2px 0;
}

.drop-down-bub {
    font-size: 80%;
    margin-top: -1px;
}


h4 {
    color: #222;
    font-size: 16pt;
    margin: .4em;
    padding: 0;
}

.section {
    margin: 0 4px 1.6em 4px;
    padding:4px;
}
.section .submit {
    margin: 8px;
}

#maincol {
    padding:4px;
    background: var(--chops-page-bg);
}

.isf a, .at a, .isf a:visited, .at a:visited {
  color: var(--chops-link-color);
  text-decoration: none;
}

.at span {
  margin-right: 1em;
  white-space: nowrap;
}

.isf a:hover, .at a:hover {
  color: var(--chops-link-color);
  text-decoration: underline;
}

.at {
    padding-top: 6px;
    padding-bottom: 3px;
}

.st1 .inst1 a,
.st2 .inst2 a,
.st3 .inst3 a,
.st4 .inst4 a,
.st5 .inst5 a,
.st6 .inst6 a,
.st7 .inst7 a,
.st8 .inst8 a,
.st9 .inst9 a {
  color: var(--chops-black);
  font-weight: bold;
  text-decoration: none;
}

.notice, .error {
    font-weight: bold;
    padding: 4px 16px;
    border-radius: 4px;
}

.notice {
    background: var(--chops-notice-bubble-bg);
}

.error {
    background: var(--chops-error-bubble-bg);
}

.adminonly {
    color: #a00;
    font-style: italic;
}

.fielderror {
    color: var(--chops-field-error-color);
    font-weight: bold;
    padding: 4px;
}

.tip, .help {
    background: var(--chops-help-bubble-bg);
    font-size: 92%;
    margin: 5px;
    padding: 6px;
    border-radius: 6px;
}

.tip {
    width: 14em;
}

.help {
    width: 44em;
}

.x_icon::before {
    content: "\00D7";
}

.x_icon {
    text-decoration: none;
    font-size: 130%;
    color: #444 !important;
    padding: 0 2px;
    vertical-align:middle;
}

.x_icon:active {
    color: var(--chops-white) !important;
    background: #444;
}

/* Google standard */
.gbh {
    border-top: 1px solid #C9D7F1;
    font-size: 1px;
    height: 0;
    position: absolute;
    top: 24px;
    width: 100%;
}

#pname {
    font-size:300%;
    margin: 0;
    padding: 0;
}

#pname a,
#pname a:visited {
    text-decoration:none;
    color: #666;
}

#project_summary_link {
    text-decoration: none;
    color: #444;
}

.vt td,
.vt th,
.vt {
    vertical-align: top;
}

.indicator {
    font-size: x-small;
    color: var(--chops-link-color);
}

div.h4, table.h4 {
    background-color: var(--chops-secondary-header-bg);
    margin-bottom: 2px;
    padding: 2px;
    font-weight: bold;
    position: relative;
    margin-top: 2px;
}

.mainhdr {
    background-color: #ebeff9;
    border-bottom: 1px solid #6b90da;
    font-weight: bold;
    font-size: 133%;
    padding: 2px;
}

.secondaryhdr {
    background-color: #eee;
    padding: 10px;
    border-bottom: 1px solid #ddd;
    border-left: 1px solid #ddd;
    border-right: 1px solid #ddd;
}

h1 {
    font-size: x-large;
    margin-top: 0px;
}

h2 {
    font-size: large;
}

h3 {
    font-size: medium;
    background: #eee;
    padding: 0.5ex 0.5em 0.5ex 0.5em;
    margin-right: 2em;
}

img {
    border: 0;
}

#user_bar {
    text-align: right;
    margin-bottom: 10px;
}

#user_bar a {
    color: var(--chops-link-color);
    text-decoration: none;
}

#header {
    position: relative;
    height: 55px;
    padding-top: 6px;
    margin-bottom: -9px;
}

#title {
    margin-left: 171px;
    background-color: #eee;
    font-size: large;
    font-weight: bold;
    padding-left: 3px;
    padding-top: 1px;
    padding-bottom: 1px;
}

.label { text-decoration: none; color: green !important; }
.label:hover { text-decoration: underline; }

.fieldvalue { text-decoration: none; }
.fieldvalue:hover { text-decoration: underline; }

.fieldvalue_url {
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
}
.fieldvalue_url:after {
    content: "\A";
    white-space: pre;
}

#colcontrol {
    padding: 5px;
}

.cue {
    margin-top: -4px;
    padding: 1px;
    background: var(--chops-notice-bubble-bg);
    border: 1px solid #f0c36d;
}
.cue td span {
    font-size: 85%;
    text-align: center;
    padding: 0 1em;
}

.results tr td { border-bottom: var(--chops-table-divider); }
.resultstable tr td { border-bottom: var(--chops-table-divider); }

.results th, .results_lite th {
    background: var(--chops-table-header-bg);
    text-align: left;
    padding: 3px;
    border: 0;
    border-right: 1px solid var(--chops-white);
}
.results th:last-child { border-right: 0; }

.results th a, .results th a:visited {
    color: var(--chops-link-color);
    padding-right: 4px;
    margin-right: 4px;
}
.results td { cursor: pointer }
.results td { padding: 6px; }
.results td a { color: var(--chops-black); text-decoration: none; }
#project_list .results td { padding: 18px; }
#project_list table.results td.id { text-align: left; }

.results td.id a,
.results td.project a,
.results td.url a { color: var(--chops-link-color); white-space: nowrap; }
.results td.id a:visited,
.results td.project a:visited,
.results td.url a:visited { color: purple; }
.results td.id a:hover, .results td.project a:hover, .results td.url a:hover { color: red; text-decoration: underline; }
table.results .hoverTarget:hover a { color: #009; }
.results .label { font-size: 80% }
.results .selected { background-color: var(--chops-selected-bg); }
.results td tt { color: #999; font-style: italic; font-weight: bold; }
.results .displayproperties { font-size: 80%; color: #666; }

.results .grid .gridtile tr { border: 0; }
.results .grid .gridtile td { border: 0; }

.comptable.all .comprow { display: table-row; }
.comptable.active .comprow { display: none; }
.comptable.active .comprow.active { display: table-row; }
.comptable.toplevel .comprow { display: none; }
.comptable.toplevel .comprow.toplevel { display: table-row; }
.comptable.toplevel .comprow.toplevel.deprecated { display: none; }
.comptable.myadmin .comprow { display: none; }
.comptable.myadmin .comprow.myadmin { display: table-row; }
.comptable.mycc .comprow { display: none; }
.comptable.mycc .comprow.mycc { display: table-row; }
.comptable.deprecated .comprow { display: none; }
.comptable.deprecated .comprow.deprecated { display: table-row; }

/* The revision flipper. */
.flipper { font-family: monospace; font-size: 120%; }
.flipper ul { list-style-type: none; padding: 0; margin: 0em 0.3em; }
.flipper b { margin: 0em 0.3em; }

.closed .ifOpened { display: none }
.closed .opened span.ifOpened { display: inline }
.opened .ifClosed { display: none }
.opened .closed span.ifClosed { display: inline }

a.star {
  text-decoration: none;
  cursor: pointer;
  display: inline-block;
  font-size: 18px;
}

a.spamflag {
  text-decoration: none;
  cursor: pointer;
}

.h3 {
    font-size: 130%;
    font-weight: bolder;
}
input { padding-left: 1px; padding-right: 1px; }
textarea { padding-left: 1px; padding-right: 1px; }

.pagination { font-size: 100%; float: right; white-space: nowrap; }
.pagination a { margin-left: 0.3em; margin-right: 0.3em; }

.author { margin-bottom: 1em; }

#searchtips { padding-left: 2em; }
#searchtips p { margin-left: 2em; }

.issueList .inIssueList span,
.issueAdvSearch .inIssueAdvSearch a,
.issueSearchTips .inIssueSearchTips a {
    font-weight: bold;
    text-decoration: none;
    color: var(--chops-black);
}

iframe[frameborder="1"] {
    border: 1px solid #999;
}

/* For project menu */
.menuDiv {
    margin-top: 5px;
    border-color: #C9D7F1 #3366CC #3366CC #A2BAE7;
    border-style: solid;
    border-width: 1px;
    z-index: 1001;
    padding: 0;
    width: 175px;
    background: var(--chops-white);
    overflow: hidden;
}
.menuDiv .menuText {
    padding: 3px;
    text-decoration: none;
    background: var(--chops-white);
}
.menuDiv .menuItem {
    color: var(--chops-link-color);
    padding: 3px;
    text-decoration: none;
    background: var(--chops-white);
}
.menuDiv .menuItem:hover {
    color: var(--chops-white);
    background: #3366CC;
}
.menuDiv .categoryTitle {
    padding-left: 1px;
}
.menuDiv .menuCategory,
.menuDiv .categoryTitle {
    margin-top: 4px;
}
.menuDiv .menuSeparator {
    margin: 0 0.5em;
    border: 0;
    border-top: 1px solid #C9D7F1;
}

.hostedBy {
    text-align: center;
    vertical-align: center;
}

.fullscreen-popup {
    position: fixed;
    right: 4%;
    left: 4%;
    top: 5%;
    max-height: 90%;
    opacity: 0.85;
    -moz-opacity: 0.85;
    -khtml-opacity: 0.85;
    filter: alpha(opacity=85);
    -moz-border-radius: 10px;

    background: var(--chops-black);
    color: var(--chops-white);
    text-shadow: var(--chops-black) 1px 1px 7px;

    padding: 1em;
    z-index: 10;
    overflow-x: hidden;
    overflow-y: hidden;
}

/* Make links on this dark background a lighter blue. */
.fullscreen-popup a {
    color: #dd0;
}

div#keys_help th {
    color: yellow;
    text-align: left;
}

div#keys_help td {
    font-weight: normal;
    color: var(--chops-white);
}

td.shortcut {
    text-align: right;
}

span.keystroke {
    color: #8d0;
    font-family: monospace;
    font-size: medium;
}

.list {
    background-color:var(--chops-white);
    padding: 5px;
}

.list-foot {
    background-color:var(--chops-white);
    padding: 5px;
    height: 20px;
}

.graytext {
    color: #666;
}

.vspacer {
    margin-top: 1em;
}

.hspacer {
    margin-right: 1em;
}

.emphasis {
    font-weight: bold;
}

.formrow {
    vertical-align: top;
    padding-bottom: .569em;
    white-space: nowrap;
    overflow: hidden;
    padding-top: .2em;
}

.forminline {
    display: inline-block;
    vertical-align: top;
}

.formlabelgutter {
    margin-top: 0.3em;
    text-align: right;
    vertical-align: top;
    white-space: normal;
    width: 13em;
}

.formlabel {
    font-weight: bold;
    text-align: right;
}

.forminputgutter {
    margin-top: 0.3em;
    text-align: left;
    vertical-align: top;
    white-space: normal;
    width: 36em;
}

.forminput {
    width: 100%;
}

.formshortinput {
    width: 11em;
}

.formselectgutter {
    margin-top: 0.3em;
    text-align: left;
    vertical-align: top;
    white-space: normal;
    width: 18em;
}

.formselect {
    width: 18em;
}

.formqm {
    margin-left: 0.25em;
    margin-right: 0.25em;
}

.formerror {
    color: #a00;
    display: block;
    text-align: left;
}

.tablerow {
    vertical-align: top;
    padding-bottom: .569em;
    white-space: nowrap;
    overflow: hidden;
    padding-top: .2em;
}

.tablelabelgutter {
    margin-top: 0.3em;
    text-align: left;
    vertical-align: top;
    white-space: normal;
    width: 10em;
}

.tablelabel {
    font-weight: bold;
    text-align: left;
}

/* Gecko */
html>body .goog-inline-block {
    display: -moz-inline-box; /* This is ignored by FF3 and later*/
    display: inline-block; /* This is ignored by pre-FF3 Gecko */
}

/* Default rule */
.goog-inline-block {
    position: relative;
    display: inline-block;
}

/* Pre-IE7 */
* html .goog-inline-block {
    display: inline;
}

/* IE7 */
*:first-child+html .goog-inline-block {
    display: inline;
}

#popular {
    border: solid silver;
    border-width: 1px 0 1px 0;
    padding: 0.3em;
    width: 40em;
}

#popular table {
    width: 40em;
}

#popular td {
    padding: 2px;
    white-space: nowrap;
}

#intro {
    background:#ada;
    margin: 3em;
    width: 52em;
}

.userlink_avail {
  display: inline-block;
  white-space: nowrap;
}

.availability_none {
    font-weight: bold;
    color: #FF1744;
}

.availability_unsure {
    font-weight: bold;
    color: #EF6C00;
}

.availability_never {
    font-weight: bold;
    color: #6A1B9A;
}

.availability_banned {
    font-weight: bold;
    color: var(--chops-black);
}

/* Just for screen readers. */
.visually_hidden {
    border: 0;
    clip: rect(0 0 0 0);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px;
}

.not_styled_as_heading {
    font-size: inherit !important;
    font-weight: inherit !important;
    display: inline !important;
    background: inherit !important;
    border: none !important;
    padding: 0 !important;
    margin: 0 !important;
}

/* Launch gates table. */

#launch-gates-table {
    border-collapse: collapse;
}
#launch-gates-table td, #launch-gates-table th {
    border: 1px solid #ddd;
    padding: 4px;
}
#launch-gates-table tr:nth-child(even){background-color: #f2f2f2;}

#launch-gates-table th {
    text-align: left;
    background-color: #6ec5ff;
}

input.unlink_account, input.incoming_invite {
    font-size: 80%;
}
