#body-row {
    margin-left: 0;
    margin-right: 0;
    padding-top: 100px
}

#content-container img {
    max-width: 100%;
    padding: 1px 1px 1px 1px;
}

h1, h2 {
	padding-bottom: .3em;
    border-bottom: 1px solid #eaecef;
}

b, strong {
    font-weight: 600;
}

h1, h2, h3, h4, h5, h6 {
	margin-bottom: 1em;
    margin-top: 1em;
}

code {
	font-size: 14px !important;
}

:not(pre)>code[class*=language-], pre[class*=language-] {
	background: #eff0f1 !important;
}

.language-css .token.string, .style .token.string, .token.entity, .token.operator, .token.url {
    background: unset !important;
}

:target:before {
    content: "";
    display: block;
    margin-top: -115px;
    height: 115px;
    width: 1px;
}


.anchorjs-link {
  text-decoration: none;
}
*:hover > .anchorjs-link {
	text-decoration: none;
}

.collapsing {
    transition: none !important;
  }

#sidebar {
    border-right: 2px solid #d8d8d8;
}

#sidebar-container {
    min-height: 100vh;
    padding: 0;
    width: 345px;
    padding-top: 15px;
}

#sidebar-container .list-group a {
    color: #333;
}

#sidebar-container .list-group .cw-sidebar-submenu a {
    padding-left: 30px;
    padding-right: 30px;
}

#sidebar-container .list-group .cw-sidebar-submenu .cw-sidebar-submenu-submenu a {
    padding-left: 40px;
}

#sidebar-container .list-group .cw-sidebar-submenu .cw-sidebar-submenu-submenu .cw-sidebar-submenu-submenu-submenu a {
    padding-left: 50px;
}

.submenu-icon {
	position: absolute;
    right: 20px;
}
.cw-sidebar-submenu {
    font-size: 0.95rem;
}

/* Separators */
.cw-sidebar-separator-title {
    height: 35px;
}

.cw-sidebar-separator {
    height: 25px;
}

.cw-current-page {
    background-color: #BEE5F6 !important;
    border-radius: 0 !important;
    /*border-bottom: 5px #0073ba !important;
    border-style: solid !important;
    border-right: 0px !important;
    border-left: 0px !important;
    border-top: 0px !important;*/
}
.cw-current-page:hover {
    color: #333 !important;
}

/* Closed submenu icon */
#sidebar-container .list-group .list-group-item[aria-expanded="false"] .submenu-icon::after {
    content: " \f105";
    font-family: FontAwesome;
    display: inline;
    text-align: right;
    font-size: 20px;
    font-weight: 300;
    padding-left: 10px;
}

/* Opened submenu icon */
#sidebar-container .list-group .list-group-item[aria-expanded="true"] .submenu-icon::after {
    content: " \f107";
    font-family: FontAwesome;
    display: inline;
    text-align: right;
    font-weight: 300;
    font-size: 20px;
    padding-left: 10px;
}

#content-container {
    width: calc(100% - 350px);
}

.cw-text-gray {
    color: #222 !important;
}

.cw-margin-auto {
    margin: auto !important;
}

.cw-bg-sidebar-menu-item {
    background-color: #f8f9fa;
}

.list-group-item {
    border: none;
}
.list-group > .list-group-item {
    border-bottom: 1px solid #d8d8d8;
    border: 1px solid #d8d8d8;
    font-size: 18px;
    font-weight: 400;
}

.cw-extlink:after {
	content: " \f08E";
    font-family: FontAwesome;
    display: inline;
    font-weight: 300;
    font-size: 14px;
    padding-left: 10px;
}

.cs-gettingstarted-mobile-title {
		display: none;
}

/* Extra large devices (large laptops and desktops, 1200px and up) */
@media only screen and (max-width: 1320px) {
    #cs-gettingstarted-block {
    		width: 700px;
    }
    #cs-gettingstarted-block-2 {
    		width: 700px;
    }
    .cw-gettingstarted-card {
	    width: 200px;
	    height: 270px;
	    background-color: #3d7594;
	}
}

@media only screen and (max-width: 1160px) {
    #cs-gettingstarted-block {
    		width: 550px;
    }
    #cs-gettingstarted-block-2 {
    		width: 550px;
    }
    .cw-gettingstarted-card {
	    width: 150px;
	    height: 250px;
	    background-color: #3d7594;
	}
	.cw-gettingstarted-card-link {
		font-size: 14px;
    }
    #sidebar-container {
        padding-top: 0;
    }
}

@media only screen and (max-width: 992px) {
	.cw-ggettingstarted-mobile-card-container {
		padding-bottom: 50px;
	}
	.cw-gettingstarted-mobile-title-container {
		height: 50px;
	}
	.cs-gettingstarted-mobile-title {
		display: block;
	}
	.cw-gettingstarted-card img {
		top: 20px;
		width: 62px;
    		left: -8px;
	}
	.cw-gettingstarted-card-link-container {
    		top: 90px;
	}
    #cs-gettingstarted-block {
    		display: none;
    }
    #cs-gettingstarted-block-2 {
    		width: 80%;
    }
    .cw-gettingstarted-card {
	    width: 100%;
	    height: 200px;
	    background-color: #3d7594;
	}
	.cw-gettingstarted-card-link {
		font-size: 20px;
	}
	.cw-getting-started-text {
	    position: absolute;
	    top: -15px;
    }

}

.callout {
    padding: 20px;
    margin: 20px 0;
    border: 1px solid #eee;
    border-radius: 3px;

    border-left: 4px solid #0073ba;
    background-color: #EDF4FF;
}

.callout h4 {
    margin-top: 0;
    margin-bottom: 5px;
}

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

.callout code {
    border-radius: 3px;
}

.callout+.callout {
    margin-top: -5px;
}

.dropdown-toggle[aria-expanded="true"]:after {
    transform: rotate(180deg);
}

@media only screen and (max-width: 767px) {
	.cw-docs-spacer {
        height: 0px;
    }

    #content-container {
        width: 100vw;
    }

    #content-container > div {
        padding-top: 0px;
    }

    #sidebar-container {
        width: 100vw;
        min-height: 0;
    }

    #sidebar {
        width: 100vw;
    }
}

@media only screen and (max-width: 410px) {
    #body-row {
        padding-top: 80px;
    }
}

/* code formatter overrides for accessibility */
.token.punctuation {
    color: #4c0054 !important;
}

.token.attr-name, .token.builtin, .token.char, .token.inserted, .token.selector, .token.string {
    color: #517706 !important;
}

.token.atrule, .token.attr-value, .token.keyword {
    color: #196282 !important;
}

.token.cdata, .token.comment, .token.doctype, .token.prolog {
    color: #5a5f65 !important;
}
.language-css .token.string, .style .token.string, .token.entity, .token.operator, .token.url {
    color: #775936 !important;
}

.highlighter-rouge {
	color: #123456;
}

.imageborder {
    border: 1px solid #000;
}
