/*
   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;
}


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

#gettingStarted {
  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;
}

#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;
}
