/*
   Copyright 2009 The Go Authors. All rights reserved.
   Use of this source code is governed by a BSD-style
   license that can be found in the LICENSE file.
*/

/* ------------------------------------------------------------------------- */
/* Styles meant to help page authors achieve beauty. */

a {
  text-decoration: none;
}

code, .code {
  font-size: 100%;
  font-family: monospace;
  color: #0f398d;
}

kbd {
  font-size: 100%;
  font-family: monospace;
  font-weight: bold;
}

pre.ebnf {
  background-color: #ffffe9;
}

pre.grammar {
  background-color: #ffffe9;
}

p.rule {
  font-style: italic;
}

span.event {
  font-style: italic;
}

span.alert {
  color: #ff0000;
}

body {
  font: 13px Helvetica, Arial, sans-serif;
}

h1 {
  margin-top: 0;
  padding-top: 0.75em;
  margin-bottom: 0.75em;
}

h2, h3, h4, h5, h6 {
  font-family: Helvetica, Arial, sans-serif;
  margin-bottom: 0.25em;
}

h2 {
  background-color: #e5ecf9;
  margin-top: 2em;
  border-top:1px solid #36C;
  padding-left: 0.2em;
}

pre {
  font-size: 9pt;
  background-color: #f8f8ff;
  margin: 1em 0 0 0;
  padding: .99em;
  line-height: 125%;
  overflow: auto;
  word-wrap: break-word;
}

li {
  padding-bottom: 0.5em;
}

li pre {
  margin: 0.5em 0px 1em 0px;
}

a:link {
  color: #0f398d
}

a:visited {
  color: #0b2455
}

a:hover {
  color: #0000ff
}

/* ------------------------------------------------------------------------- */
/* Styles used in the boilerplate-ish parts of pages. */

div#content {
  margin-left: 20%;
  padding: 0 1em 2em 1em;
  margin-top: 0px;
/*
  border-left: 2px solid #e5ecf9;
  border-right: 2px solid #e5ecf9;
  border-bottom: 2px solid #e5ecf9;
*/
}

#topnav {
  margin: 0px;
  padding-top: 0.2em;
  width: 100%;
  white-space: nowrap;
  background-color: #ffffff;
  border-bottom: 2px solid #36C;
  font: bold 150% Helvetica, Arial, sans-serif;
}

div#linkList {
  margin-top: 1.5em;
  padding-left: 0.5em;
  font: 13px Helvetica, Arial, sans-serif;
  float: left;
  width: 18%;
  background-color: #fffff0;
  border: 2px solid #ba9836;
}

div#linkList ul {
  padding: 1px;
  list-style-type: none;
}

div#linkList li {
  margin-left: 1em;
  padding-bottom: 0.2em;
}

div#linkList li.navhead {
  font-weight: bold;
  margin-left: 0px;
  padding-bottom: 0.25em;
}

#nav dl {
  margin: 0 0.5em 0 0.5em;
  padding: 0px;
}

.navtop {
  font-size: xx-small;
  float: right;
}

#footer {
  margin: 2em;
  text-align: center;
  color: #555;
  font-size: small;
}

#footer a {
  color: #555;
}

@media print {
  div#linkList {
    display: none;
  }
  .navtop {
    display: none;
  }
  div#content {
    margin-left: 0px;
    border: none;
  }
}


/* ------------------------------------------------------------------------- */
/* Styles used by godoc */

table.layout {
  border-width: 0px;
  border-spacing: 0px;
  padding: 0px;
}

span.comment {
  color: #0000a0;
}

span.highlight {
  font-weight: bold;
  background-color: #ffffa0;
}

/* same style as for gettingStarted */
#menu {
  margin-top: 1.5em;
  margin-left: 1.75em;
  margin-right: 0em;
  float: right;
  background-color: #fffff0;
  padding-left: 1em;
  padding-right: 1em;
  padding-bottom: 0.75em;
  border: 2px solid #ba9836;
}

/* same color scheme as for gettingStarted */
#content .popup {
  position: absolute;
  border: 1px solid #ba9836;
  background-color: #fffff0;
  margin-top: 3em;
  padding: 3px;
}

#content .identifier,
#content .type {
  color: #008;
}

/* ------------------------------------------------------------------------- */
/* Styles for the frontpage */

#gettingStarted, #blog {
  margin-top: 1.5em;
  margin-left: 1.75em;
  margin-right: 0em;
  float: right;
  clear: right;
  background-color: #fffff0;
  padding-left: 1em;
  padding-right: 1em;
  padding-bottom: 0.75em;
  border: 2px solid #ba9836;
  width: 180px;
}

#blog { margin-bottom: 1.5em; }
#blog h1 { font-size: 1.2em; }
#blog .gfg-title, #blog .gf-author, #blog .gf-spacer { display: none; }
#blog .gfg-list { margin-top: 1em; }
#blog .gf-title { font-size: 1.1em; }
#blog .gfg-listentry-highlight { font-weight: bold; }

#gettingStarted h1 {
  padding-top: 0.3em;
  margin-bottom: 0.2em;
  font-size: 1.5em;
}

#gettingStarted ol {
}

#gettingStarted a img {
  border: 1px solid blue;
}

#frontpage {
  width: 100%;
}

#frontpage h3 {
  margin-left: 3em;
  font-size: 1.5em;
  font-weight: normal;
}
