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

/* Markdown rendered in /+doc/ or tree view page . */

.Site-Content--markdown {
  padding-top: 0;
}
.Header-nav ul {
  max-width: 1020px;
  margin: 0 auto;
  padding: 0 20px;
}
.Header-nav li {
  display: inline-block;
  margin-right: 15px;
}
.doc h1, .doc h2, .doc h3, .doc h4, .doc h5, .doc h6 {
  font-weight: normal;
  margin: 1.236em 0 .618em;
}
.doc.RepoIndexDoc h1 {
  margin-top: .25em;
}
.doc h1 {
  font-size: 2em;
}
.doc h2 {
  font-size: 1.5em;
}
.doc h3 {
  font-size: 1.3em;
}
.doc h4 {
  font-size: 1.3em;
  font-weight: lighter;
  font-style: italic;
}
.doc h5 {
  font-size: 16px;
  font-weight: lighter;
  font-style: italic;
}
.doc h6 {
  font-size: 14px;
  font-style: italic;
}
.doc hr {
  border: none;
  border-top: 1px solid #aaa;
  display: block;
  margin-top: 25px;
}
.doc a {
  text-decoration: none;
}
.doc a:link {
  color: #245dc1;
}
.doc a:visited {
  color: #7759ae;
}
.doc a:hover {
  text-decoration: underline;
}
.doc a.h {
  display: inline-block;
  font-weight: normal;
  width: 1.5em;
  margin-left: -1.5em;
  margin-top: -1em;
  margin-bottom: -1em;
}
.doc a.h:link,
.doc a.h:visited {
  color: #444;
}
.doc a.h:focus {
  outline: none;
}
.doc a.h:hover {
  text-decoration: none;
}
.doc a.h span {
  display: inline-block;
  width: 1.5em;
}
.doc h1:hover a.h span:before,
.doc h2:hover a.h span:before,
.doc h3:hover a.h span:before,
.doc h4:hover a.h span:before,
.doc h5:hover a.h span:before,
.doc h6:hover a.h span:before {
  content: '#';
  font-weight: normal;
  color: #AAA;
}
.doc h1:hover a:hover.h span:before,
.doc h2:hover a:hover.h span:before,
.doc h3:hover a:hover.h span:before,
.doc h4:hover a:hover.h span:before,
.doc h5:hover a:hover.h span:before,
.doc h6:hover a:hover.h span:before {
  text-decoration: underline;
}
.doc h1:hover a:visited.h span:before,
.doc h2:hover a:visited.h span:before,
.doc h3:hover a:visited.h span:before,
.doc h4:hover a:visited.h span:before,
.doc h5:hover a:visited.h span:before,
.doc h6:hover a:visited.h span:before {
  color: #AAA;
}
.doc ul, .doc ol {
  margin: 10px 10px 10px 30px;
  padding: 0;
}
.doc ul {
  list-style-type: disc;
}
.doc ol {
  list-style-type: decimal;
}
.doc img {
  border: 0;
  max-width: 100%;
}
.doc iframe {
  min-width: 100px;
  min-height: 30px;
}
iframe.noborder {
  border: 0;
}
.doc em {
  font-weight: normal;
  font-style: italic;
}
.doc strong {
  font-weight: bold;
  color: inherit;
}
.doc p {
  margin: 10px 0;
}
.doc blockquote {
  background-color: #fffde7;
  border-left: 2px solid #fab700;
  padding: 2px 10px 2px 10px;
}
.doc pre {
  padding: 12px;
  font-size: 10pt;
  background-color: #fafafa;
  border: 1px solid #ccc;
  overflow-x: auto;
}
.doc code {
  padding: 2px 4px;
  background-color: #F5F5F5;
  border: transparent;
  border-radius: 4px;
}
.doc .code {
  font-family: 'Source Code Pro', monospace;
}
.doc dl dt {
  margin-top: 1em;
}
.doc table {
  border-collapse: collapse;
  border-spacing: 0;
}
.doc th {
  text-align: center;
}
.doc th,
.doc td {
  border: 1px solid #eee;
  padding: 4px 12px;
  vertical-align: top;
}
.doc th {
  background-color: #f5f5f5;
}
.toc {
  margin-top: 30px;
}
.toc-aux {
  background: #f9f9f9;
  border: 1px solid #f2f2f2;
}
.toc h2 {
  margin: 0 0 5px 0;
}
.toc ul {
  margin: 10px 10px 10px 30px;
}
.toc ul li {
  margin-left: 0px;
  list-style: disc;
}
.toc ul ul {
  margin-top: 0;
  margin-bottom: 0;
}
.toc ul ul li {
  list-style: circle;
}
.note,
.promo,
.aside {
  border: 1px solid;
  border-radius: 4px;
  margin: 10px 0;
  padding: 10px;
}
.note {
  background: #fffbe4;
  border-color: #f8f6e6;
}
.promo {
  background: #f6f9ff;
  border-color: #eff2f9;
}
.aside {
  background: #f9f9f9;
  border-color: #f2f2f2;
}
.note :first-child,
.promo :first-child,
.aside :first-child {
  margin-top: 0;
}
.note p:last-child,
.promo p:last-child,
.aside p:last-child {
  margin-bottom: 0;
}
.cols {
  margin: 0 -1.533%;
  width: 103.067%;
}
.col-1, .col-2, .col-3, .col-4, .col-5, .col-6,
.col-7, .col-8, .col-9, .col-10, .col-11, .col-12 {
  display: inline-block;
  margin: 0 1.488% 20px;
  vertical-align: top;
}
.cols h1, .cols h2, .cols h3, .cols h4, .cols h5, .cols h6 {
  margin: .67em 0;
}
.col-1 { width: 5.357%; }
.col-2 { width: 13.690%; }
.col-3 { width: 22.024%; }
.col-4 { width: 30.357%; }
.col-5 { width: 38.690%; }
.col-6 { width: 47.024%; }
.col-7 { width: 55.357%; }
.col-8 { width: 63.690%; }
.col-9 { width: 72.024%; }
.col-10 { width: 80.357%; }
.col-11 { width: 88.690%; }
.col-12 { width: 97.024%; }
.cols hr { width: 80%; }
