body {
    font-size:15px;
}

.bs-callout {
    padding: 20px;
    margin: 20px 0;
    border: 1px solid #eee;
    border-left-width: 5px;
    border-radius: 3px;
}
.bs-callout h4 {
    margin-top: 0;
    margin-bottom: 5px;
}
.bs-callout p:last-child {
    margin-bottom: 0;
}
.bs-callout code {
    border-radius: 3px;
}
.bs-callout+.bs-callout {
    margin-top: -5px;
}
.bs-callout-default {
    border-left-color: #777;
}
.bs-callout-default h4 {
    color: #777;
}
.bs-callout-primary {
    border-left-color: #428bca;
}
.bs-callout-primary h4 {
    color: #428bca;
}
.bs-callout-success {
    border-left-color: #5cb85c;
}
.bs-callout-success h4 {
    color: #5cb85c;
}
.bs-callout-danger {
    border-left-color: #d9534f;
}
.bs-callout-danger h4 {
    color: #d9534f;
}
.bs-callout-warning {
    border-left-color: #f0ad4e;
}
.bs-callout-warning h4 {
    color: #f0ad4e;
}
.bs-callout-info {
    border-left-color: #5bc0de;
}
.bs-callout-info h4 {
    color: #5bc0de;
}


.gi-2x{font-size: 2em;}
.gi-3x{font-size: 3em;}
.gi-4x{font-size: 4em;}
.gi-5x{font-size: 5em;}





.breadcrumb > .active {color: #777 !important;}

/* make room for the nav bar */
h1[id],
h2[id],
h3[id],
h4[id],
h5[id],
h6[id],
dt[id]{
    padding-top: 60px; 
    margin-top: -40px
}

body h1 {margin-top:40px;}

.post-content img {
    margin: 12px 0px 3px 0px;
    width: auto;
    height: auto;
    max-width: 100%;
    max-height: 100%;
}

.post-content ol li, .post-content ul li {
margin: 10px 0px;
}

.pageSummary {
  font-size:13px;
  display:block;
  margin-bottom:15px;
  padding-left:20px;
}

.post-summary {
margin-bottom:12px;
}

.bs-example{
      margin: 20px;
    }

.breadcrumb li {
color: gray;
}

table {
  background-color: transparent;
}
caption {
  padding-top: 8px;
  padding-bottom: 8px;
  color: #777;
  text-align: left;
}
th {
  text-align: left;
}
table {
  max-width: 90%;
  margin-bottom: 20px;
  border: 1px solid #dedede;
}

table > thead > tr > th,
table > tbody > tr > th,
table > tfoot > tr > th,
table > thead > tr > td,
table > tbody > tr > td,
table > tfoot > tr > td {
  padding: 8px;
  line-height: 1.42857143;
  vertical-align: top;
  border-top: 1px solid #ddd;
}
table > thead > tr > th {
  vertical-align: bottom;
  border-bottom: 2px solid #ddd;
  text-transform: uppercase;
  background-color: #444;
  color: white;
  text-align: center;
}
table > caption + thead > tr:first-child > th,
table > colgroup + thead > tr:first-child > th,
table > thead:first-child > tr:first-child > th,
table > caption + thead > tr:first-child > td,
table > colgroup + thead > tr:first-child > td,
table > thead:first-child > tr:first-child > td {
  border-top: 0;
}
table > tbody + tbody {
  b
}
table > tbody > tr:nth-of-type(odd) {
  background-color: #f9f9f9;
}

table col[class*="col-"] {
  position: static;
  display: table-column;
  float: none;
}
table td[class*="col-"],
table th[class*="col-"] {
  position: static;
  display: table-cell;
  float: none;
}


table td:first-child {
  width: 150px;
  /*font-weight:bold;*/
}

table.boldFirstColumn td:first-child {
    font-weight: bold;
}

table tr td {
  hyphens: auto;
}


p.external a {
  text-align:right;
  font-size:12px;
  font-color: #0088cc;
  display:inline;
}

#definition-box-container div a.active {
  font-weight: bold;
}
p.post-meta {font-size: 80%; color: #777;}

.entry-date{font-size:14px;font-size:0.875rem;line-height:1.71429;margin-bottom:0;text-transform:uppercase;}

/* search area */
#search-demo-container ul#results-container {
list-style: none;
font-size: 12px;
background-color: white;
position: absolute;
top: 40px; /* if you change anything about the nav, you'll prob. need to reset the top and left values here.*/
left: 20px;
z-index: -1;
width:223px;
border-left: 1px solid #dedede;
box-shadow: 2px 3px 2px #dedede;
}


ul#results-container a {
background-color: transparent;
}

ul#results-container a: hover {
  color: black;
}


#search-demo-container a:hover {
   color: black;
}
#search-input {
  padding: .5em;
  margin-left:20px;
  width:20em;
  font-size: 0.8em;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  float: right;
  margin-top:10px;
  }
/* end search */

.filter-options {
margin-bottom: 20px;
}
.filter-options button {
margin: 3px;
}

div#toc ul li {
margin: 8px 0px 8px 22px;
font-size: 90%;
list-style: square;
}
div#toc ul {
background-color: whitesmoke;
padding: 5px;
border-radius: 5px;
max-width: 225px;
color: gray;
}

div#toc ul li ul {
  padding-left:8px;

}

div#toc ul li ul li::before {
  content: "";
}

div#toc >ul::before {
  content: "Table of Contents";
  font-weight: 500;
  color: #555;
  text-align:center;
  margin-left:auto;
  margin-right:auto;
  width:70px;
  padding-top:20px;
  padding-bottom:20px;
  padding-left:10px;
}

li.dropdownActive a {
  font-weight: bold;
}


.post-content a.fa-rss {
color: orange;
}


.navbar-inverse .navbar-nav > li > a {
background-color: transparent;
margin-top:10px;
}

.post-content .rssfeedLink {
color: #248EC2;
}

footer {
font-size: smaller;
}

/* FAQ page */
#accordion .panel-heading {
font-size: 12px;
}

a.accordion-toggle, a.accordion-collapsed {
font-size: 14px;
text-decoration: none;
}

/* navgoco sidebar styles (customized) */
.nav, .nav ul, .nav li {
    list-style: none;
}

.nav ul {
    padding: 0;
    /*margin: 0 0 0 18px;*/
    margin:0px;
}

.nav {
    /* padding: 4px;*/
    padding:0px;
    margin: 0px;
}

.nav > li {
    margin: 1px 0;
}

.nav > li li {
    margin: 2px 0;
}

.nav a {
    color: #333;
    display: block;
    outline: none;
    /*-webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;*/
    text-decoration: none;
}

.nav li > a > span {
    float: right;
    font-size: 19px;
    font-weight: bolder;
}


.nav li > a > span:after {
    content: '\25be';
}
.nav li.open > a > span:after {
    content: '\25b4';
}

.nav a:hover, .nav li.active > a {
    background-color: #8D8D8D;
    color: #f5f5f5;
}

.nav > li.active > a  {
    background-color: #347DBE;
}

.nav li a {
    font-size: 12px;
    line-height: 18px;
    padding: 2px 10px;
}

.nav > li > a {
    font-size: 14px;
    line-height: 20px;
    padding: 4px 10px;
}

ul#mysidebar {
  margin-top:40px;
  
  border-radius:0px;
}

.nav ul li ul li a {
  padding-left:20px;
}


.nav li.thirdlevel > a {
background-color: #FAFAFA !important;
color: #248EC2;
font-weight:bold;
}


.nav ul li a {
background-color: #FAFAFA;
}

.nav li a {
  background-color: #EDEDED;
  padding-right:10px;
}


.nav ul li a {
border-top:1px solid whitesmoke;
padding-left:10px;
}
/* end sidebar */

.navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus {
  border-radius:5px;
}

.navbar-inverse .navbar-nav>.open>a, .navbar-inverse .navbar-nav>.open>a:focus, .navbar-inverse .navbar-nav>.open>a:hover {
border-radius: 5px;
}

span.projectTitle {
    font-family: Helvetica;
    font-weight: bold;
}

.footer {
text-align: right;
}

.footerMeta {
background-color: whitesmoke;
padding: 10px;
max-width: 250px;
border-radius: 5px;
margin-top: 50px;
font-style:italic;
font-size:12px;
}

img.screenshotSmall {
max-width: 300px;
}


dl dt p {
    margin-left:20px;
}


dl dd {
    margin-top:10px;
    margin-bottom:10px;
}

dl.dl-horizontal dd {
    padding-top: 20px;
}

figcaption {

    padding-bottom:12px;
    padding-top:6px;
  max-width: 90%;
  margin-bottom:20px;
    font-style: italic;
    color: gray;

}

.testing {
  color: orange;
}

.preference {
  color: red;
}


table.dataTable thead {
  background-color: #444;
}
table td {
  hyphens: auto;
}

section table tr.success {
  background-color: #dff0d8 !important;
}

table tr.info {
  background-color: #d9edf7 !important;
}

section table tr.warning, table tr.testing, table tr.testing > td.sorting_1  {
  background-color: #fcf8e3 !important;
}
section table tr.danger, table tr.preference, table tr.preference > td.sorting_1  {
  background-color: #f2dede !important;
}

.orange {
  color: orange;
}

table.profile thead tr th {
background-color: #248ec2;
}

table.request thead tr th {
background-color: #ED1951;
}

.audienceLabel {
  margin: 10px;
  float: right;
  border:1px solid #dedede;
  padding:7px;
}

.prefaceAudienceLabel {
  color: gray;
  text-align: center;
  margin:5px;
}
span.myLabel {
  padding-left:10px;
  padding-right:10px;
}

button.cursorNorm {
cursor: default;
}

a.dropdown-toggle, .navbar-inverse .navbar-nav > li > a  {
  margin-left: 10px;
}

hr.faded {
    border: 0;
    height: 1px;
    background-image: -webkit-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,0.75), rgba(0,0,0,0));
    background-image:    -moz-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,0.75), rgba(0,0,0,0));
    background-image:     -ms-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,0.75), rgba(0,0,0,0));
    background-image:      -o-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,0.75), rgba(0,0,0,0));
}

hr.shaded {
    height: 12px;
    border: 0;
    box-shadow: inset 0 6px 6px -6px rgba(0,0,0,0.5);
    margin-top: 70px;
    background: white;
    width: 100%;
    margin-bottom: 10px;
}

.fa-6x{font-size:900%;}
.fa-7x{font-size:1100%;}
.fa-8x{font-size:1300%;}
.fa-9x{font-size:1500%;}
.fa-10x{font-size:1700%;}

i.border {
    padding: 10px 20px;
    background-color: whitesmoke;
}

a[data-toggle] {
  color: #248EC2;
}

.summary {
  font-size:120%;
    color: #808080;
  margin:20px 0px 20px 0px;
    border-left: 5px solid #ED1951;
    padding-left: 10px;

}

.summary:before {
  content: "Summary: ";
  font-weight: bold;
}


a.fa.fa-envelope-o.mailto {
  font-weight: 600;
}

h3 {color: #ED1951; font-weight:normal; font-size:130%;}
h4 {color: #808080; font-weight:normal; font-size:120%; font-style:italic;}

.alert, .callout {
    overflow: hidden;
}

.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
    background-color: #248ec2;
    color: white;
}

ol li ol li {list-style-type: lower-alpha;}
ol li ul li {list-style-type: disc;}

li img {clear:both; }

div#toc ul li ul li {
    list-style-type: disc;
    margin: 5px 0px 0px 0px;
}

.tab-content {
  padding: 15px;
  background-color: #FAFAFA;
}

span.tagTitle {font-weight: 500;}

li.activeSeries {
    font-weight: bold;
}

.seriesContext .dropdown-menu li.active {
    font-weight: bold;
    margin-left: 43px;
    font-size:18px;
}

.alert-warning {
    color: #444;
}

div.alert code, h2 code {
    background-color: transparent !important;
}
    /* without this, the links in these notes aren't visible.*/
.alert a {
    text-decoration: underline;
}

div.tags {padding: 10px 5px;}

.tabLabel {
    font-weight: normal;
}

hr {
    border: 0;
    border-bottom: 1px dashed #ccc;
    background: #999;
    margin: 30px 0px;
    width: 90%;
    margin-left: auto;
    margin-right: auto;
}

button.cursorNorm {
    cursor: pointer;
}

h2  {
    font-size:24px;
    line-height:29px;
}
span.otherProgrammingLanguages {
font-style: normal;
}

a[data-toggle="tooltip"] {
    color: #649345;
    font-style: italic;
    cursor: default;
}

.seriesNext, .seriesContext {
    margin-top: 15px;
    margin-bottom: 15px;
}

.seriescontext ol li {
    list-style-type: upper-roman;
}

ol.series li {
    list-style-type: decimal;
    margin-left: 40px;
    padding-left: 0px;
}

.siteTagline {
    font-size: 300%;
    font-weight: bold;
    color: silver;
    font-family: monospace;
    text-align: center;
    line-height: 10px;
    margin: 20px 0px;
    display: block;
}

.versionTagline {
    text-align: center;
    margin-bottom: 20px;
    font-family: courier;
    font-color: silver;
    color: #444;
    display:block;
}

/* not sure if using this ...*/
.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form {
    border-color: #248ec2 !important;
}

#mysidebar .nav ul {
    background-color: #FAFAFA;
}
.nav ul.series li {
    list-style: decimal;
    font-size:12px;
}

.nav ul.series li a:hover {
    background-color: gray;
}
.nav ul.series {
    padding-left: 30px;
}

.nav ul.series {
    background-color: #FAFAFA;
}

/*
a.dropdown-toggle.otherProgLangs {
    color: #f7e68f !important;
}
*/

span.muted {color: #666;}

table code {background-color: transparent;}

.highlight .err {
    color: #a61717;
    background-color: transparent !important;
}

table p {
    margin-top: 12px;
    margin-bottom: 12px;
}

pre, table code {
    white-space: pre-wrap;       /* css-3 */
    white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
    white-space: -pre-wrap;      /* Opera 4-6 */
    white-space: -o-pre-wrap;    /* Opera 7 */
    word-wrap: break-word;       /* Internet Explorer 5.5+ */
}

pre {
    margin: 25px 0px;
}

#json-box-container pre {
    margin: 0px;
}

.video-js {
    margin: 30px 0px;
}

video {
    display: block;
    margin: 30px 0px;
    border: 1px solid #c0c0c0;
}


p.required, p.dataType {display: block; color: #c0c0c0; font-size: 80%; margin-left:4px;}

dd {margin-left:20px;}

.post-content img.inline {
    margin:0px;
    margin-bottom:6px;
}
.panel-heading {
    font-weight: bold;
}

.note code, .alert code, .warning code, div#toc code, h2 code, h3 code, h4 code {
    color: inherit;
    padding: 0px;
}

.alert {
    margin-bottom:10px;
    margin-top:10px;
}

a.accordion-toggle {
    font-style: normal;
}

span.red {
    color: red;
    font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
}

h3.codeExplanation {
    font-size:18px;
    font-style:normal;
    color: black;
    line-height: 24px;
}

span.soft {
    color: #c0c0c0;
}

.githubEditButton {
    margin-bottom:7px;
}

.endpoint {
    padding: 15px;
    background-color: #f0f0f0;
    font-family: courier;
    font-size: 110%;
    margin: 20px 0px;
    color: #444;
}

.parameter {
    font-family: courier;
    color: red !important;
}

.formBoundary {
    border: 1px solid gray;
    padding: 15px;
    margin: 15px 0px;
    background-color: whitesmoke;
}

@media (max-width: 767px) {
    .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
        color: #444;
    }
}

@media (max-width: 990px) {
    #mysidebar {
        position: relative;
    }
}

@media (min-width: 1000px) {

    ul#mysidebar {
        width: 225px;
    }
}

@media (max-width: 900px) {

    ul#mysidebar {
        max-width: 100%;
    }
}

.col-md-9 img {
    max-width: 100%;
    max-height: 100%;
}

.videoThumbs img {
    float: left;
    margin:15px 15px 15px 0px;
    box-shadow: 2px 2px 1px #f0f0f0;
    border: 1px solid #dedede;
}


@media only screen and (min-width: 900px), @media only screen and (min-device-width: 900px) {
    .col-md-9 img {
        max-width: 700px;
        max-height: 700px;
    }
}

*:hover > .anchorjs-link {
    transition: color .25s linear;
    text-decoration: none;
}

.kbCaption {
    color: white;
    background-color: #444;
    padding:10px;
}

/* this part adds an icon after external links, using FontAwesome*/
a[href^="http://"]:after, a[href^="https://"]:after {
    content: "";
    font-family: FontAwesome;
    font-weight: normal;
    font-style: normal;
    display: inline-block;
    text-decoration: none;
    padding-left: 3px;
}

/* Strip the outbound icon when this class is present */
a[href^="http://own-domain.com"]:after,
a.no_icon:after {
    content:"" !important;
    padding-left: 0;
}

.btn-default {
    margin-bottom: 10px;
}

/* algolia search */

.search {
    text-align: left;
}
.search input {
    font-size: 20px;
    width: 300px;
}
.results {
    margin: auto;
    text-align: left;
}
.results ul {
    list-style-type: none;
    padding: 0;
}

/* algolia */

div.results {
    position: absolute;
    background-color: white;
    width: 100%;
}

.algolia__result-highlight {
    background-color: yellow;
    font-weight: bold;
}