/**
 * 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: 980px;
  margin: 0 auto;
}
.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%; }
