/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/* Common styles and definitions. */

@import "//fonts.googleapis.com/css?family=Open+Sans:300,400,700&subset=latin,cyrillic-ext,greek-ext,cyrillic,greek,vietnamese,latin-ext";
@import "//fonts.googleapis.com/css?family=Source+Code+Pro";
*,
*::after,
*::before {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}
h1, h2, h3, h4, h5, h6 {
  font-weight: normal;
  margin: .25em 0 .5em;
}
h1 {
  font-size: 2em;
}
h2 {
  font-size: 1.5em;
}
h3 {
  font-size: 1.3em;
}
h4, h5, h6 {
  font-size: 14px;
  font-style: italic;
}
ul, ol {
  list-style: none;
}

/* Utility classes */

.u-sha1 {
  background-color: #f1f2f3;
  color: #000;
  font-size: 13px;
}
.u-pre {
  font-size: 10pt;
  font-weight: 500;
  white-space: pre;
}
.u-lineNum {
  border-right: 1px solid #f1f2f3;
  color: #666;
  display: inline-block;
  min-width: 3em;
  text-align: right;
}
.u-noSelect {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.u-monospace {
  font-family: 'Source Code Pro', monospace;
}

/* Common.soy */

.Site {
  background: #fff;
  color: #000;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  font: 14px/1.54 'Open Sans', sans-serif;
  min-height: 100vh;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
}
.Site-header,
.Site-footer {
  background: #eee;
  -webkit-flex: none;
  -ms-flex: none;
  flex: none;
}
.Site-header--withNavbar {
  background: #fff;
}
.Site-content {
  -webkit-flex: 1 0 auto;
  -ms-flex: 1 0 auto;
  flex: 1 0 auto;
  padding: 20px;
}
.Container {
  margin: 0 auto;
  max-width: 980px;
}
.Container--fullWidth {
  max-width: none;
}
.Header,
.Footer {
  -webkit-align-items: center;
  -ms-flex-align: center;
  align-items: center;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  padding: 20px;
}
.Site-header--withNavbar .Header {
  max-width: 980px;
  margin: 0 auto;
  padding: 10px 0;
}
.Header-title,
.Header-image {
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
}
.Header-anchor {
  color: #666;
  font-size: 32px;
  font-weight: 300;
  text-decoration: none;
}
.Header-anchorLogo {
  display: inline-block;
  margin-right: 10px;
  vertical-align: middle;
}
.Header-nav {
  background: #eee;
  padding: 15px 0;
}
.Header-menu {
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-justify-content: flex-end;
  -ms-flex-pack: end;
  justify-content: flex-end;
}
.Header-menuItem {
  color: #00e;
  display: inline-block;
  margin-left: 15px;
}
.Header-menuItem--noAction {
  color: inherit;
}
.Breadcrumbs {
  font-size: 18px;
  margin-bottom: 20px;
}
.Breadcrumbs-crumb {
  color: #00e;
}
.Breadcrumbs-crumb:last-child {
  color: #000;
  font-weight: bold;
}
.Footer {
  color: #666;
}
.Footer-poweredBy {
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
}
.Footer-formats,
.Footer-links {
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-justify-content: flex-end;
  -ms-flex-pack: end;
  justify-content: flex-end;
}
.Footer-formatsItem {
  display: inline-block;
}
.Footer-formatsItem:first-child {
  margin-right: 20px;
}
.Footer-link {
  display: inline-block;
  margin-left: 10px;
}
.RepoList-item {
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  left: -10px;
  padding: 5px 0 5px 10px;
  position: relative;
  white-space: nowrap;
  width: calc(100% + 20px);
}
.RepoList-item:link,
.RepoList-item:visited {
  text-decoration: none;
}
.RepoList-item:hover {
  background: #eee;
}
.RepoList-item--header {
  font-weight: bold;
  margin: 0;
}
.RepoList-item--header:hover {
  background: #fff;
}
.RepoList-itemName,
.RepoList-itemDescription {
  display: inline-block;
}
.RepoList-itemName {
  margin-right: 10px;
  min-width: 25%;
  text-decoration: underline;
}
.RepoList-item--header > .RepoList-itemName {
  text-decoration: none;
}
.RepoList-itemDescription {
  color: #000;
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* RepositoryIndex.soy */

.RepoDescription {
  margin: 10px 0;
}
.RepoMirroredFrom {
  margin: 10px 0;
  color: #666;
}
.CloneRepo {
  background: #eee;
  margin-bottom: 20px;
  padding: 10px;
}
.CloneRepo-title {
  margin-bottom: 2px;
}
.CloneRepo-command {
  border: 1px solid #ccc;
  border-radius: 4px;
  display: block;
  font-size: inherit;
  padding: 10px;
  width: 100%;
}
.RepoShortlog {
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
}
.RepoShortlog-refs {
  -webkit-flex: none !important;
  -ms-flex: none !important;
  flex: none !important;
  width: 20%;
}
.RepoShortlog-refs > .RefList:first-child {
  margin: 0;
}
.RepoShortlog-log {
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
}
.RepoIndexDoc {
  border-top: 1px solid #ddd;
  margin-top: 20px;
  padding-top: 5px;
}

/* RefList.soy */

.Refs {}
.RefList {
  margin: 15px 0;
}
.RefList-title {
  margin: 0;
}
.RefList-items {}
.RefList-item {
  padding: 2px 0;
}

/* LogDetail.soy */

.LogNav {
  margin: 10px 0;
  text-align: center;
}
.CommitLog {}
.CommitLog-item {
  padding: 2px 0;
}
.CommitLog-item--oneline:hover {
  background: #eee;
}
.CommitLog-item--full {
  margin-bottom: 20px;
}
.CommitLog-item--empty {
  padding: 10px 0;
  text-align: center;
}
.CommitLog-sha1 {
  border-radius: 3px;
  display: inline-block;
  margin-right: 3px;
  padding: 2px 4px;
  text-align: center;
}
.CommitLog-time {
  color: #666;
}
.CommitLog-branchLabel {
  color: #dd4b39;
}
.CommitLog-tagLabel {
  color: #093;
}

/* ObjectDetail.soy */

.Metadata {
  margin-bottom: 15px;
}
.Metadata-title {
  font-weight: bold;
  padding-right: 10px;
  text-align: right;
}
.MetadataMessage {
  background-color: #fafafa;
  border: 1px solid #ccc;
  color: #000;
  margin: 0;
  padding: 12px;
  white-space: pre-wrap;
}
.DiffTree {
  margin: 10px 0 5px;
}
.DiffTree-action {
  margin-left: .5em;
}
.DiffTree-action--add {
  color: #060;
}
.DiffTree-action--delete {
  color: #600;
}
.DiffTree-action--rename,
.DiffTree-action--copy {
  color: #006;
}
.DiffSummary {}
.TreeDetail-sha1,
.BlobSha1 {
  margin: 10px 0;
  padding: 5px 10px;
}
.FileList {
  margin-left: 25px;
}
.FileList-item {
  padding: 1px 0;
  position: relative;
}
.FileList-item:hover {
  background: #eee;
}
.FileList-item::before {
  left: -22px;
  position: absolute;
  top: 4px;
}
.FileList-itemLink {
  display: block;
}
/* Tree icons are taken from the public domain Tango icons:
 * http://tango.freedesktop.org/Tango_Icon_Library
 * Compressed with pngcrush -brute -rem tEXt -rem tIME -rem iTXt -rem zTXt */
.FileList-item--gitTree::before {
  /* places/folder.png */
  content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAAb5JREFUOMulkr1KA0EQgGdvTwwnYmER0gQsrFKmSy+pLESw9Qm0F/ICNnba+h6iEOuAEWslKJKTOyJJvIT72d1xZuOFC0giOLA77O7Mt/PnNptN+I+49Xr9GhH3f3mb0v1ht9vtLAUYYw5ItkgDL3KyD8PhcLvdbl/WarXT3DjLMnAcR/f7/YfxeKwtgC5RKQVhGILWeg4hQ6hUKjWyucmhLFEUuWR3QYBWAZABQ9i5CCmXy16pVALP80BKaaG+70MQBLvzFMjRKKXh8j6FSYKF7ITdEWLa4/ktokN74wiqjSMpnVcbQZqmEJHz+ckeCPFjWKwULpyspAqhdXVXdcnZcPjsIgn+2BsVA8jVYuWlgJ3yBj0icgq2uoK+lg4t+ZvLomSKamSQ4AI5BcMADtMhyNoSgNIISUaFNtwlazcDcBc4gjjVwCWid2usCWroYEhnaqbzFJLUzAHIXRDChXCcQP8zhkSZ5eNLgHAUzwDcRu4CoIRn/wsGUQIIy4Vr9TH6SYFCNzw4nALn5627K4vIttOUOwfa5YnrDYzt/9OLv9I5l8kk5hZ3XLO20b7tbR7zHLy/BX8G0IeBEM7ZN1NGIaFUaKLgAAAAAElFTkSuQmCC);
}
.FileList-item--symlink::before {
  /* actions/edit-redo.png */
  content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAABZUlEQVQ4y2NgIAL4zWL7D8TGDOQCqAEg7Ey2Aes+58AMcSSkmB2I3YB4HhCfh9kOMoCgIUAJMyDe2D+b58jKe553133M+r/uU/b/zV+L/y97n/i/+JIYbkOAAl5AfGLNTde/69+n/1/4MuD/gtsqKBhkALIh5S0M1jDN2kC8a+UNt/8b36f+X3JP5f/0u1pwjeuvS8E1g3DpZQm4ITAD5s09ZPBq49uE/0vvq4E1gPCJC5z/yy+IoGgG4a5HJqjeCJ3Pc2vjy+T/ux4Y/j99Rfz/7GtK/xfeUkbBN+8pY9cMAkFzuT5uepPy/+w1lf+TF3L/Q4p3OD5zRQ67Zlg873vk9n/mMlaQ5EcgLgZiA2R5nJphCjbfNP8LVeCBJyUa40xpO+5afQXS/8jKC0DJg+uPKx+bOJf1HDYXEJPW46JW8LcduKYzbdZMph4gn4ccQxSAOAuIo4FYdvsKFpYdK1iYCekDACq5JXDHGJhDAAAAAElFTkSuQmCC);
}
.FileList-item--regularFile::before {
  /* mimetypes/text-x-generic.png */
  content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAtElEQVQ4ja2TSw7CIBRFu0r3wyIYsAMHDl1CC92IDqC0wAbQi4Fo5VOMJGcAyT33vQEDY+xCCPGdnIZ48NB7kPkSLMvipZQBpVQC70Br7Y0xZQGC4zj6aZoCnPMPhBBtwb41NoN1XesCBHPNhyfI7fziFu6HJti3IgS0vrcFuZ3Btm2JpmC/M5jnOdEU5JoRstYmigKES80x7JyrC+IE7+1xAoSrgp//AqX02vsbn5nz8K/zAP9CzjbgFoHjAAAAAElFTkSuQmCC);
}
.FileList-item--executableFile::before {
  /* mimetypes/text-x-script.png */
  content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA7ADsAOwdIxY2AAAACXBIWXMAAAsTAAALEwEAmpwYAAABOklEQVQ4T5WTTYqDQBBGPdKcZnIJdy7EVRByBQPi0iwHAlGT0YBHcG82kkV2VnffoKar7FYzIQYLPtqffq+rEJ04jn/CMMSV+XZs0YO1RcyLoO/7MdAD9gAI8wiK+CyYA0IDFABhrmFBAHNYbwYTIxFyWN8KwAiEmIEaknqVUposCoBBGE8cIGUipUKp5IJAzOe2JxI0pG1b3Gw2+Hg8FjoQzy0rLVAavt0GuGkaXrfb7avAzs0CNcHtDD4ejwzTve/7X/9GGFqn2QmkDmzbBJ9OJ8yyDNM0Rdd1J8mzgDqQPDNJLFwUBZ7PZ7xcLizwPI9gfj+NYAX2k+kx7vc7byrLEquqwuv1ivv9HpMk4ec6Uwfvqus63lzXNeZ5zoIRpoqiKP/09wVBwNDhcOB1t9v9OmuLTnw62dQfVIHPYx/I/0kAAAAASUVORK5CYII=);
}
.FileList-item--gitlink::before {
  /* emblems/emblem-symbolic-link.png */
  content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAABO0lEQVQ4T7WT3U6EMBCF92m99yGMZuODGL01eueyXqjvwc+WUlooUPkfZxq3sQEvJLHJSQvlfDOnDbub/dUFCrZof3t9uaPF1kFeBwjD8E+apukfAVEUQRzHkCQJJKfEznES43tUGP0OIOMheIGn50e4f7izCo4H4GkKDEXPBIviCIZh8AFkfv94g5Qx4Jw7AOn4Grh1iqATdrUAEJmxFLIsgzzPQSnpQc4SIkMIh7ZtfQCjys6soNQlVFW1AEgpQWQCjDE+gHIKIaxZo7mu69UOiqJwRXxAxnFDQllS5XUzSeO+kmoJoOzUni41NE1tM9JBTdMII85d14FpjI2lihUA9wCNA8zzDOM4WkBjvgFqrQO8ulzmNgLl/8SPyTT0WL3vLLBGsNZ6HUBV1tT3vROd/Fk/AZt/Z/J+AUN8ayghXmezAAAAAElFTkSuQmCC);
}
.FileContents {
  border-collapse: collapse;
  border-spacing: 0;
  margin: 10px 0;
}
.FileContents-line {
  border: none;
}
.FileContents-lineNum {
  padding-right: 10px;
  width: 1%;
}
/* Used to prevent copying the line number. */
.FileContents-lineNum::before {
  color: #aaa;
  content: attr(data-line-number);
  cursor: pointer;
}
.FileContents-lineContents {
  min-height: 1em;
  padding-left: 10px;
}
.InlineReadme {
  border-top: 1px solid #ddd;
  margin: 10px 0;
  padding: 7px 0;
}
.InlineReadme-path {
  color: #666;
}

/* BlameDetail.soy */

.Blame {
  border-collapse: collapse;
  font-size: 8pt;
  margin: 0 auto;
}
.Blame-region--bg1 {
  background: #fff;
}
.Blame-region--bg2 {
  background: #f1f2f3;
}
.Blame-sha1,
.Blame-author,
.Blame-time,
.Blame-regionLink {
  font-size: 8pt;
  padding: 0 3px;
  white-space: nowrap;
}
.Blame-regionLink {
  text-align: right;
}
.Blame-lineNum .u-lineNum {
  padding: 0 8px;
  text-align: right;
}
.Blame-lineNum:hover {
  text-decoration: underline;
}
.Blame-lineContent {
  font-size: 9pt;
  padding: 0 8px;
}

/* DiffDetail.soy */

.Diff {
  margin: 10px 0;
}
.Diff-fileIndex {
  color: #444;
  font-weight: bold;
}
.Diff-unified {
  border-bottom: 1px solid #ddd;
  border-top: 1px solid #ddd;
  padding: 10px 0;
}
.Diff-hunk {
  color: #00c;
}
.Diff-delete {
  color: #c00;
}
.Diff-insert {
  color: #080;
}
