/* Reset */

html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, code, pre,
del, dfn, em, img, q, dl, dt, dd, ol, ul, li,
fieldset, form, label, legend, input,
table, caption, tbody, tfoot, thead, tr, th, td {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

table { border-collapse: separate; border-spacing: 0; }
caption, th, td { text-align: left; font-weight: normal; }
table, td, th { vertical-align: middle; }

blockquote:before, blockquote:after, q:before, q:after { content: ""; }
blockquote, q { quotes: none; }

a img { border: none; }

input { border-width: 0px; }

/* Page */

body {
  font-family: Arial, sans-serif;
  font-size: 10pt;
}

#footer {
  font-size: 9pt;
  text-align: center;
  color: #858484;
  bottom: 0;
  width: 100%;
  height: 20px;
}

a[href] {
  text-decoration: underline;
  color: #315479;
}

a[href]:hover {
  text-decoration: none;
}

#types ol li > p {
  margin-top: 5px;
}

#types ol li:last-child {
  margin-bottom: 5px;
}

/*
#definition {
  padding: 6px 0 6px 6px;
  min-height: 59px;
  color: white;
}
*/

#definition {
  display: block-inline;
  padding: 5px 0px;
  height: 61px;
}

#definition > img {
  float: left;
  padding-right: 6px;
  padding-left: 5px;
}

#definition > a > img {
  float: left;
  padding-right: 6px;
  padding-left: 5px;
}

#definition p + h1 {
  margin-top: 3px;
}

#definition > h1 {
/*  padding: 12px 0 12px 6px;*/
  color: white;
  text-shadow: 3px black;
  text-shadow: black 0px 2px 0px;
  font-size: 24pt;
  display: inline-block;
  overflow: hidden;
  margin-top: 10px;
}

#definition h1 > a {
  color: #ffffff;
  font-size: 24pt;
  text-shadow: black 0px 2px 0px;
/*  text-shadow: black 0px 0px 0px;*/
text-decoration: none;
}

#definition #owner {
  color: #ffffff;
  margin-top: 4px;
  font-size: 10pt;
  overflow: hidden;
}

#definition #owner > a {
  color: #ffffff;
}

#definition #owner > a:hover {
  text-decoration: none;
}

#signature {
  background-image:url('signaturebg2.gif');
  background-color: #d7d7d7;
  min-height: 18px;
  background-repeat:repeat-x;
  font-size: 11.5pt;
/*  margin-bottom: 10px;*/
  padding: 8px;
}

#signature > span.modifier_kind {
  display: inline;
  float: left;
  text-align: left;
  width: auto;
  position: static;
  text-shadow: 2px white;
  text-shadow: white 0px 1px 0px;
}

#signature > span.symbol {
  text-align: left;
  display: inline;
  padding-left: 0.7em;
  text-shadow: 2px white;
  text-shadow: white 0px 1px 0px;
}

/* Linear super types and known subclasses */
.hiddenContent {
  display: none;
}

.toggleContainer .toggle {
  cursor: pointer;
  padding-left: 15px;
  background: url("arrow-right.png") no-repeat 0 3px transparent;
}

.toggleContainer .toggle.open {
  background: url("arrow-down.png") no-repeat 0 3px transparent;
}

.toggleContainer .hiddenContent {
  margin-top: 5px;
}

.value #definition {
  background-color: #2C475C; /* blue */
  background-image:url('defbg-blue.gif');
  background-repeat:repeat-x;
}

.type #definition {
  background-color: #316555; /* green */
  background-image:url('defbg-green.gif');
  background-repeat:repeat-x;
}

#template {
  margin-bottom: 50px;
}

h3 {
  color: white;
  padding: 5px 10px;
  font-size: 12pt;
  font-weight: bold;
  text-shadow: black 1px 1px 0px;
}

dl.attributes > dt {
  display: block;
  float: left;
  font-style: italic;
}

dl.attributes > dt.implicit {
  font-weight: bold;
  color: darkgreen;
}

dl.attributes > dd {
  display: block;
  padding-left: 10em;
  margin-bottom: 5px;
  min-height: 15px;
}

#template .values > h3 {
  background: #2C475C url("valuemembersbg.gif") repeat-x bottom left;  /* grayish blue */
  height: 18px;
}

#values ol li:last-child {
  margin-bottom: 5px;
}

#template .types > h3 {
  background: #316555 url("typebg.gif") repeat-x bottom left;  /* green */
  height: 18px;
}

#constructors > h3 {
  background: #4f504f url("constructorsbg.gif") repeat-x bottom left; /* gray */
  height: 18px;
}

#inheritedMembers > div.parent > h3 {
  background: #dadada url("constructorsbg.gif") repeat-x bottom left; /* gray */
  height: 17px;
  font-style: italic;
  font-size: 12pt;
}

#inheritedMembers > div.parent > h3 * {
  color: white;
}

#inheritedMembers > div.conversion > h3 {
  background: #dadada url("conversionbg.gif") repeat-x bottom left; /* gray */
  height: 17px;
  font-style: italic;
  font-size: 12pt;
}

#inheritedMembers > div.conversion > h3 * {
  color: white;
}

#groupedMembers > div.group > h3 {
  background: #dadada url("typebg.gif") repeat-x bottom left; /* green */
  height: 17px;
  font-size: 12pt;
}

#groupedMembers > div.group > h3 * {
  color: white;
}


/* Member cells */

div.members > ol {
  background-color: white;
  list-style: none
}

div.members > ol > li {
  display: block;
  border-bottom: 1px solid gray;
  padding: 5px 0 6px;
  margin: 0 10px;
  position: relative;
}

div.members > ol > li:last-child {
  border: 0;
  padding: 5px 0 5px;
}

/* Member signatures */

#tooltip {
  background: #EFD5B5;
  border: 1px solid gray;
  color: black;
  display: none;
  padding: 5px;
  position: absolute;
}

.signature {
  font-family: monospace;
  font-size: 10pt;
  line-height: 18px;
  clear: both;
  display: block;
  text-shadow: 2px white;
  text-shadow: white 0px 1px 0px;
}

.signature .modifier_kind {
  position: absolute;
  text-align: right;
  width: 14em;
}

.signature > a > .symbol > .name {
  text-decoration: underline;
}

.signature > a:hover > .symbol > .name {
  text-decoration: none;
}

.signature > a {
  text-decoration: none;
}

.signature > .symbol {
  display: block;
  padding-left: 14.7em;
}

.signature .name {
  display: inline-block;
  font-weight: bold;
}

.signature .symbol > .implicit {
  display: inline-block;
  font-weight: bold;
  text-decoration: underline;
  color: darkgreen;
}

.signature .symbol .shadowed {
  color: darkseagreen;
}

.signature .symbol .params > .implicit {
  font-style: italic;
}

.signature .symbol .deprecated {
  text-decoration: line-through;
}

.signature .symbol .params .default {
  font-style: italic;
}

#template .signature.closed {
  background: url("arrow-right.png") no-repeat 0 5px transparent;
  cursor: pointer;
}

#template .signature.opened {
  background: url("arrow-down.png") no-repeat 0 5px transparent;
  cursor: pointer;
}

#template .values .signature .name {
  color: darkblue;
}

#template .types .signature .name {
  color: darkgreen;
}

.full-signature-usecase h4 span {
  font-size: 10pt;
}

.full-signature-usecase > #signature {
  padding-top: 0px;
}

#template .full-signature-usecase > .signature.closed {
  background: none;
}

#template .full-signature-usecase > .signature.opened {
  background: none;
}

.full-signature-block {
  padding: 5px 0 0;
  border-top: 1px solid #EBEBEB;
  margin-top: 5px;
  margin-bottom: 5px;
}

#definition .morelinks {
  text-align: right;
  position: absolute;
  top: 40px;
  right: 10px;
  width: 450px;
}

#definition .morelinks a {
  color: #EBEBEB;
}

#template .members li .permalink {
  position: absolute;
  top: 5px;
  right: 5px;
}

#definition .permalink {
  position: absolute;
  top: 10px;
  right: 15px;
}

#definition .permalink a {
  color: #EBEBEB;
}

#template .members li .permalink,
#definition .permalink a {
  display: none;
}

#template .members li:hover .permalink,
#definition:hover .permalink a {
  display: block;
}

#template .members li .permalink a,
#definition .permalink a {
  text-decoration: none;
  font-weight: bold;
}

/* Comments text formating */

.cmt {}

.cmt p {
  margin: 0.7em 0;
}

.cmt p:first-child {
  margin-top: 0;
}

.cmt p:last-child {
  margin-bottom: 0;
}

.cmt h3,
.cmt h4,
.cmt h5,
.cmt h6 {
  margin-bottom: 0.7em;
  margin-top: 1.4em;
  display: block;
  text-align: left;
  font-weight: bold;
}

.cmt h3 {
  font-size: 14pt;
}

.cmt h4 {
  font-size: 13pt;
}

.cmt h5 {
  font-size: 12pt;
}

.cmt h6 {
  font-size: 11pt;
}

.cmt pre {
  padding: 5px;
  border: 1px solid #ddd;
  background-color: #eee;
  margin: 5px 0;
  display: block;
  font-family: monospace;
}

.cmt pre span.ano {
  color: blue;
}

.cmt pre span.cmt {
  color: green;
}

.cmt pre span.kw {
  font-weight: bold;
}

.cmt pre span.lit {
  color: #c71585;
}

.cmt pre span.num {
  color: #1e90ff; /* dodgerblue */
}

.cmt pre span.std {
  color: #008080; /* teal */
}

.cmt ul {
  display: block;
  list-style: circle;
  padding-left: 20px;
}

.cmt ol {
  display: block;
  padding-left:20px;
}

.cmt ol.decimal {
  list-style: decimal;
}

.cmt ol.lowerAlpha {
  list-style: lower-alpha;
}

.cmt ol.upperAlpha {
  list-style: upper-alpha;
}

.cmt ol.lowerRoman {
  list-style: lower-roman;
}

.cmt ol.upperRoman {
  list-style: upper-roman;
}

.cmt li {
  display: list-item;
}

.cmt code {
  font-family: monospace;
}

.cmt a {
  font-style: bold;
}

.cmt em, .cmt i {
  font-style: italic;
}

.cmt strong, .cmt b {
  font-weight: bold;
}

/* Comments structured layout */

.group > div.comment {
  padding-top: 5px;
  padding-bottom: 5px;
  padding-right: 5px;
  padding-left: 5px;
  border: 1px solid #ddd;
  background-color: #eeeee;
  margin-top:5px;
  margin-bottom:5px;
  margin-right:5px;
  margin-left:5px;
  display: block;
}

p.comment {
  display: block;
  margin-left: 14.7em;
  margin-top: 5px;
}

.shortcomment {
  display: block;
  margin: 5px 10px;
}

div.fullcommenttop {
  padding: 10px 10px;
  background-image:url('fullcommenttopbg.gif');
  background-repeat:repeat-x;
}

div.fullcomment {
  margin: 5px 10px;
}

#template div.fullcommenttop,
#template div.fullcomment {
  display:none;
  margin: 5px 0 0 14.7em;
}

#template .shortcomment {
  margin: 5px 0 0 14.7em;
  padding: 0;
}

div.fullcomment .block {
  padding: 5px 0 0;
  border-top: 1px solid #EBEBEB;
  margin-top: 5px;
  overflow: hidden;
}

div.fullcommenttop .block {
  padding: 5px 0 0;
  border-top: 1px solid #EBEBEB;
  margin-top: 5px;
  margin-bottom: 5px
}

div.fullcomment div.block ol li p,
div.fullcomment div.block ol li {
  display:inline
}

div.fullcomment .block > h5 {
  font-style: italic;
  font-weight: normal;
  display: inline-block;
}

div.fullcomment .comment {
  margin: 5px 0 10px;
}

div.fullcommenttop .comment:last-child,
div.fullcomment .comment:last-child {
  margin-bottom: 0;
}

div.fullcommenttop dl.paramcmts {
  margin-bottom: 0.8em;
  padding-bottom: 0.8em;
}

div.fullcommenttop dl.paramcmts > dt,
div.fullcomment dl.paramcmts > dt {
  display: block;
  float: left;
  font-weight: bold;
  min-width: 70px;
}

div.fullcommenttop dl.paramcmts > dd,
div.fullcomment dl.paramcmts > dd {
  display: block;
  padding-left: 10px;
  margin-bottom: 5px;
  margin-left: 70px;
  min-height: 15px;
}

/* Members filter tool */

#textfilter {
  position: relative;
  display: block;
    height: 20px;
  margin-bottom: 5px;
}

#textfilter > .pre {
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    height: 23px;
    width: 21px;
    background: url("filter_box_left.png");
}

#textfilter > .input {
  display: block;
    position: absolute;
    top: 0;
    right: 20px;
    left: 20px;
}

#textfilter > .input > input {
  height: 20px;
  padding: 1px;
  font-weight: bold;
  color: #000000;
        background: #ffffff url("filterboxbarbg.png") repeat-x top left;
        width: 100%;
}

#textfilter > .post {
    display: block;
    position: absolute;
    top: 0;
    right: 0;
    height: 23px;
    width: 21px;
    background: url("filter_box_right.png");
}

#mbrsel {
  padding: 5px 10px;
  background-color: #ededee; /* light gray */
  background-image:url('filterboxbg.gif');
  background-repeat:repeat-x;
  font-size: 9.5pt;
  display: block;
  margin-top: 1em;
/*  margin-bottom: 1em; */
}

#mbrsel > div {
  margin-bottom: 5px;
}

#mbrsel > div:last-child {
  margin-bottom: 0;
}

#mbrsel > div > span.filtertype {
  padding: 4px;
  margin-right: 5px;
  float: left;
  display: inline-block;
  color: #000000;
  font-weight: bold;
  text-shadow: white 0px 1px 0px;
  width: 4.5em;
}

#mbrsel > div > ol {
  display: inline-block;
}

#mbrsel > div > a {
  position:relative;
  top: -8px;
  font-size: 11px;
  text-shadow: #ffffff 0 1px 0;
}

#mbrsel > div > ol#linearization {
  display: table;
  margin-left: 70px;
}

#mbrsel > div > ol#linearization > li.in {
  text-decoration: none;
  float: left;
  padding-right: 10px;
  margin-right: 5px;
  background: url(selected-right.png) no-repeat;
  background-position: right 0px;
}

#mbrsel > div > ol#linearization > li.in > span{
  color: #404040;
  float: left;
  padding: 1px 0 1px 10px;
  background: url(selected.png) no-repeat;
  background-position: 0px 0px;
  text-shadow: #ffffff 0 1px 0;
}

#mbrsel > div > ol#implicits {
  display: table;
  margin-left: 70px;
}

#mbrsel > div > ol#implicits > li.in {
  text-decoration: none;
  float: left;
  padding-right: 10px;
  margin-right: 5px;
  background: url(selected-right-implicits.png) no-repeat;
  background-position: right 0px;
}

#mbrsel > div > ol#implicits > li.in > span{
  color: #404040;
  float: left;
  padding: 1px 0 1px 10px;
  background: url(selected-implicits.png) no-repeat;
  background-position: 0px 0px;
  text-shadow: #ffffff 0 1px 0;
}

#mbrsel > div > ol > li {
/*  padding: 3px 10px;*/
  line-height: 16pt;
  display: inline-block;
  cursor: pointer;
}

#mbrsel > div > ol > li.in {
  text-decoration: none;
  float: left;
  padding-right: 10px;
  margin-right: 5px;
  background: url(selected-right.png) no-repeat;
  background-position: right 0px;
}

#mbrsel > div > ol > li.in > span{
  color: #404040;
  float: left;
  padding: 1px 0 1px 10px;
  background: url(selected.png) no-repeat;
  background-position: 0px 0px;
  text-shadow: #ffffff 0 1px 0;
}

#mbrsel > div > ol > li.out {
  text-decoration: none;
  float: left;
  padding-right: 10px;
  margin-right: 5px;
}

#mbrsel > div > ol > li.out > span{
  color: #747474;
/*  background-color: #999; */
  float: left;
  padding: 1px 0 1px 10px;
/*  background: url(unselected.png) no-repeat;*/
  background-position: 0px -1px;
  text-shadow: #ffffff 0 1px 0;
}
/*
#mbrsel .hideall {
  color: #4C4C4C;
  line-height: 16px;
  font-weight: bold;
}

#mbrsel .hideall span {
  color: #4C4C4C;
  font-weight: bold;
}

#mbrsel .showall {
  color: #4C4C4C;
  line-height: 16px;
  font-weight: bold;
}

#mbrsel .showall span {
  color: #4C4C4C;
  font-weight: bold;
}*/

.badge {
  display: inline-block;
  padding: 2px 4px;
  font-size: 11.844px;
  font-weight: bold;
  line-height: 14px;
  color: #ffffff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  white-space: nowrap;
  vertical-align: baseline;
  background-color: #999999;
  padding-right: 9px;
  padding-left: 9px;
  -webkit-border-radius: 9px;
     -moz-border-radius: 9px;
          border-radius: 9px;
}

.badge-red {
  background-color: #b94a48;
}
