/**
 * 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;
  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: -ms-flexbox;
  display: flex;
  font: 14px/1.54 'Open Sans', sans-serif;
  min-height: 100vh;
  -ms-flex-direction: column;
  flex-direction: column;
}
.Site-header,
.Site-footer {
  background: #eee;
  -ms-flex: none;
  flex: none;
}
.Site-header--withNavbar {
  background: #fff;
}
.Site-content {
  -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 {
  -ms-flex-align: center;
  align-items: center;
  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: -ms-flexbox;
  display: flex;
  -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: -ms-flexbox;
  display: flex;
  -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 {
  -ms-flex: 1;
  flex: 1;
}
.Footer-formats,
.Footer-links {
  display: -ms-flexbox;
  display: flex;
  -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: -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;
  -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: -ms-flexbox;
  display: flex;
}
.RepoShortlog-refs {
  -ms-flex: none !important;
  flex: none !important;
  width: 20%;
}
.RepoShortlog-refs > .RefList:first-child {
  margin: 0;
}
.RepoShortlog-log {
  -ms-flex: 1;
  flex: 1;
  width: 80%;
}
.RepoIndexDoc {
  border-top: 1px solid #ddd;
  margin-top: 20px;
  padding-top: 5px;
}
.EmptyRepo-header {}
.EmptyRepo-description {
  font-size: 14px;
  font-style: italic;
}

/* RefList.soy */

.Refs {}
.RefList {
  margin: 15px 0;
}
.RefList-title {
  margin: 0;
}
.RefList-items {
  word-wrap: break-word;
}
.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;
}
.CommitLog-rename {
  font-size: 0.9em;
  display: block;
  padding-left: 5px;
}

/* 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 {
  line-height: 1.3em;
  min-height: 1em;
  padding-left: 10px;
}
.FileContents-lineContents:target {
  background: #cfd8dc;
}
.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;
  line-height: 1.3em;
  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;
}
