body {
    font-size:16px;
    font-family: Open Sans, sans-serif;
    padding-top: 50px; /* Required padding for .navbar-fixed-top. Remove if using .navbar-static-top. Change if height of navigation changes. */
}

/*
h1,h2 {
    font-weight: lighter;
} */
.navbar-ditto-home {
   white-space: nowrap;
}

a.navbar-ditto-home:hover {
    color: transparent;
    text-decoration: none;
}
.navbar-ditto-home .ditto-navbar-symbol {
    padding: 5px;
    max-height: 3em;
}
.navbar-ditto-home .ditto-navbar-symbol-text {
    max-height: 2em;
}

.ditto-logo {
    min-width: 13em;
    padding-top: 3em;
    padding-bottom: 2em;
}

.startpage h1 {
    color: #3a8c9a;
    font-size: 2em;
    padding-bottom: 1em;
}

.startpage h1 a, .startpage h2 a, .startpage h3 a, .startpage h4 a {
    /* don't display anchor links at heading on startpage */
    display: none;
}

.tagline {
    text-shadow: 0 0 10px #000;
    color: #fff;
}

.img-center {
    margin: 0 auto;
}

.text-primary {
    color: #3a8c9a;
    /* affects color around images in startpage */
}

.equal {
    display: -webkit-flex;
    display: flex;
}
.equal .panel {
    width: 100%;
    height: 100%;
}

.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: #3a8c9a;
}
.bs-callout-primary h4 {
    color: #3a8c9a;
}
.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: #3a8c9a;
}
.bs-callout-info h4 {
color: #3a8c9a;
}


.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
}

.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:not(.parameters):not(.responses-table):not(.headers):not(.model) {
    background-color: transparent;
}
caption {
    padding-top: 8px;
    padding-bottom: 8px;
    color: #777;
    text-align: left;
}
th {
    text-align: left;
}
table:not(.parameters):not(.responses-table):not(.headers):not(.model) {
    max-width: 90%;
    margin-bottom: 20px;
    border: 1px solid #dedede;
    font-size: smaller;
}

table:not(.parameters):not(.responses-table):not(.headers):not(.model) > thead > tr > th,
table:not(.parameters):not(.responses-table):not(.headers):not(.model) > tbody > tr > th,
table:not(.parameters):not(.responses-table):not(.headers):not(.model) > tfoot > tr > th,
table:not(.parameters):not(.responses-table):not(.headers):not(.model) > thead > tr > td,
table:not(.parameters):not(.responses-table):not(.headers):not(.model) > tbody > tr > td,
table:not(.parameters):not(.responses-table):not(.headers):not(.model) > tfoot > tr > td {
    padding: 8px;
    line-height: 1.42857143;
    vertical-align: top;
    border-top: 1px solid #ddd;
}
table:not(.parameters):not(.responses-table):not(.headers):not(.model) > thead > tr > th {
    vertical-align: bottom;
    border-bottom: 1px solid #ddd;
    text-transform: none;
    /*background-color: #8D8D8D;
    color: white;
    text-align: left;*/
}
table:not(.parameters):not(.responses-table):not(.headers):not(.model) > caption + thead > tr:first-child > th,
table:not(.parameters):not(.responses-table):not(.headers):not(.model) > colgroup + thead > tr:first-child > th,
table:not(.parameters):not(.responses-table):not(.headers):not(.model) > thead:first-child > tr:first-child > th,
table:not(.parameters):not(.responses-table):not(.headers):not(.model) > caption + thead > tr:first-child > td,
table:not(.parameters):not(.responses-table):not(.headers):not(.model) > colgroup + thead > tr:first-child > td,
table:not(.parameters):not(.responses-table):not(.headers):not(.model) > thead:first-child > tr:first-child > td {
    border-top: 0;
}

table:not(.parameters):not(.responses-table):not(.headers):not(.model) > 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:not(.parameters):not(.responses-table):not(.headers):not(.model) tr td {
    hyphens: auto;
}


p.external a {
    text-align:right;
    font-size:12px;
    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; 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;
}


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;
    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: 300px;
    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;
}

.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.active > a > span:after {
    content: '\25b4';
}

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

.nav > li.active > a  {
background-color: #3a8c9a;
}

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

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

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

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

.nav li.thirdlevel > a {
    color: #248EC2;
    font-weight:bold;
    padding-left:20px;
    background-color: whitesmoke !important;
}


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

.nav li a {
    padding-right:10px;
}

.nav li a:hover {
    background-color: #8D8D8D;
}

.nav ul li a {
    border-top:1px solid whitesmoke;
    padding-left:20px;
}
/* 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: Open Sans, sans-serif;
    font-weight: bold;
}

.footer {
}

.footer .quickLinks, .footer .notice {
    float: left;
}

.footer .quickLinks {
    clear: left;
}

.footer .quickLinks a {
    float: left;
    padding-right: 2em;
}
.footer .quickLinks a::after {
    content: none;
}

.footer .logo img {
    float: right;
    max-width: 150px;
}
.footer .logo a::after {
    content: none;
}

.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: #696969;
}

.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: 1px;
    border: 0;
    margin-top: 70px;
    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 #696969;
    padding-left: 10px;

}

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


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

h3 {color: #696969; 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: none;
    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 {
    background: #3a8c9a;
    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"] {
    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: 200%;
    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;
    color: silver;
    color: #444;
    display:block;
}

.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form {
    border-color: #248ec2 !important;
}

/* important for navigation expanding/collapsing */
#mysidebar.nav ul {
    background-color: #FAFAFA;
}
#mysidebar.nav ul {
    display: none;
}
#mysidebar.nav li.active > ul {
    display: block;
}
#mysidebar.nav li.open > ul {
    display: block;
}
#mysidebar.nav ul.series li {
    list-style: decimal;
    font-size:12px;
}

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

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

.topnavlinks .cc-top {
    font-size: 15px;
    font-family: Open Sans, sans-serif;
}

.cc-color-override-1434350510 {
    background-color: #f5f5f5 !important;
    color: #5c7291 !important;
}
.cc-color-override-1434350510 .cc-link {
    color: black !important;
}
.cc-color-override-1434350510 .cc-btn.cc-allow {
    background-color: #3a8c9a !important;
}

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


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


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

.videoThumbs img {
    float: left;
    margin:15px 15px 15px 0px;
    border: 1px solid #dedede;
}


@media only screen and (min-width: 900px), 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: "\f08e";
    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].noCrossRef::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%;
}

.post-meta {
    font-size: 14px;
    color: #828282;
}

.post-link {
    font-size: 30px;
    color: #3a8c9a;
}

.post-list p {
    margin: 10px 0px;
}

time {
    margin-right: 10px;
}

p.post-meta time {
    margin-right: 0px;
}

span.label.label-default {
    background-color: gray;
}

span.label.label-primary {
    background-color: #f0ad4e;
}
.col-lg-12 .nav li a {background-color: white}


.nav li.active > a.subfoldersTitle {
    background-color: whitesmoke;
    font-weight: bold;
    color: black;
    }

a code {
    color: #248EC2;
}

code + a > code {
    margin-left: -7px;
}

table th code {
    color: white;
}

ol li ul li ol li {
    list-style: decimal;
}

ol li ul li ol li ul li{
    list-style: disc;
}

.post-content table th {
    vertical-align: top;
}

table thead th code.highlighter-rouge {
    background-color: transparent;
}


.box {
    padding: 10px;
    border: 1px solid #888;
    width: 100px;
    height: 80px;
    background-color: #f5f5f5;
    font-family: Open Sans, sans-serif;
    font-size: 12px;
    hyphens: auto;
    float: left;
    font-size: 12px;
}

.box:hover {
    background-color: #f0f0f0;
}

#userMap {
    overflow-x: auto;
    overflow-y: auto;
    padding: 20px;
    min-width: 770px;
}

#userMap .active {
    background-color: #d6f5d6;
    border:1px solid #555;
    font-weight: bold;
}

h2.userMapTitle {
    font-family: Open Sans, sans-serif;
}

#userMap a:hover {
    text-decoration: none;
  }

div.arrow {
    max-width: 50px;
    margin-left: 15px;
    margin-right: 15px;
    font-size: 20px;
}

div.content {
    max-width: 110px
}

#userMap div.arrow, #userMap div.content {
    float: left;
}

.clearfix {
    clear: both;
}


#userMap div.arrow {
    position: relative;
    top: 30px;
}

.box1 {
    margin-left:0px;
}

button.btn.btn-default.btn-lg.modalButton1 {
    margin-left: -20px;
}

div.box.box1 {
    margin-left: -20px;
}

#userMap .btn-lg {
    width: 100px;
    height: 80px;

}

#userMap .complexArrow {
    font-size: 22px;
    margin: 0px 10px;
}


#userMap .btn-lg .active {
    background-color: #d6f5d6;
}

#userMap .btn-lg  {
        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+ */
        font-size: 14px;
    }

/*
 * Let's target IE to respect aspect ratios and sizes for img tags containing SVG files
 *
 * [1] IE9
 * [2] IE10+
 */
/* 1 */
.ie9 img[src$=".svg"] {
    width: 100%;
}
/* 2 */
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
    img[src$=".svg"] {
        width: 100%;
    }
}

h4.panel-title {
    padding-top: 0px;
    margin-top: 0px;
}

/*set navbar breakpoint so that it converts to hamburger earlier */

@media (max-width: 1200px) {
    .navbar-header {
        float: none;
    }
    .navbar-left,.navbar-right {
        float: none !important;
    }
    .navbar-toggle {
        display: block;
    }
    .navbar-collapse {
        border-top: 1px solid transparent;
    }
    .navbar-fixed-top {
        top: 0;
        border-width: 0 0 1px;
    }
    .navbar-collapse.collapse {
        display: none!important;
        max-height: inherit;
    }
    .navbar-collapse.collapse .navbar-nav {
        /*margin-top: 0;*/
    }
    .navbar-collapse.collapse .navbar-nav > li > a{
        line-height: inherit;
    }
    .navbar-nav {
        float: none!important;
        margin-top: 7.5px;
    }
    .navbar-nav>li {
        float: none;
    }
    .navbar-nav>li>a {
        padding-top: 10px;
        padding-bottom: 10px;
    }
    .navbar-collapse.collapse.in {
        display:block !important;
        overflow: hidden;
    }
}

@media print {
    footer, #tg-sb-sidebar, .incubation-logo {
        display: none !important;
    }
}

.highlight.who {
    margin-left: 0;
    margin-right: 0;
    text-align: center;
    background-color: #3a8c9a;
    color: #fff;
    padding-bottom: 60px;
}
.highlight.who h2 {
    font-size: 2.5em;
    line-height: 1.5em;
    color: #fff;
    margin-top: 0.5em;
    margin-bottom: 1em;
}
.highlight.who a {
    color: #fff;
}
.highlight.who img {
    width: 60%;
    max-width: 250px;
    height: 100%;
}

.highlight.who a::after {
    content: none;
}

.highlight.who ul.user-logos {
    display: flex ;
    flex-flow: row wrap;
    padding: 0;
}

.highlight.who ul.user-logos > li {
    flex: 1 1 33%; /* 3 logos per line */
    padding-bottom: 2em;
    list-style: none;
}

.highlight.who p {
    padding-top: 2em;
    font-size: 1.2em;
}
.highlight.who p a {
    text-decoration: underline;
}
