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

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

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

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