/**
	doc.css
	=======

	Requires `docbody.css`, which is split with the intention of using
	documentation in a jo app without messing with the `body` definition
	in the app.

	Support for printed media is included for generating nice PDF files.
*/
p {
	text-align: left;
}

.crunch p, .crunch ul, .crunch blockquote,
.crunch h3, .crunch h2, .crunch hr, .crunch pre {
	display: none;
}

.crunch h1 {
	font-size: 20px;
}

/* using `<cite>` for pretty titles */
cite {
	position: relative;
	line-height: .9;
	background: #07c7c3;
	display: block;
	text-align: right;
	font-size: 120px;
	color: #fff;
	font-style: normal;
	margin: 0;
	padding: 20px 30px 20px 20px;
	letter-spacing: -10px;
	overflow: hidden;
}

cite>cite {
	letter-spacing: 0;
	margin: 0;
	padding: 0;
	font-size: 25%;
	margin-right: -10px;
	font-style: italic;
	background: transparent;
	overflow: visible;
}

cite a[href] {
	background: inherit;
	padding: 0;
}

em {
	font-weight: normal;
	font-style: italic;
}

blockquote em {
	font-weight: bold;
}

ul > li {
	list-style: disc;
}

ul {
	margin-right: 50px;
}

img {
	display: block;
	margin: 2em auto;
	max-width: 100%;
}

blockquote {
	font-style: italic;
	color: #9e9fa3;
	position: relative;
	margin: 1.5em 30px;
	padding: 10px 10px 0 10px;
}
blockquote:before {
	font-style: normal;
	content: '\201C';
	font-size: 60px;
	position: absolute;
	top: -15px;
	left: -35px;
	color: #e5e6e7;
}
blockquote:after {
	font-style: normal;
	content: '\201E';
	font-size: 60px;
	position: absolute;
	bottom: -20px;
	right: -35px;
	color: #e5e6e7;
}

blockquote p {
	margin: 0 0 10px 0;
}

blockquote code {
	font-style: normal;
}

h1 {
	margin-top: 0;
	color: #07c7c3;
	font-size: 38px;
	font-weight: normal;
	margin-bottom: 0;
	margin-left: -1px;
	letter-spacing: -1px;
}

h2 {
	margin-left: -1px;
	margin-top: 1em;
	color: #0d0d0d;
	font-size: 18px;
	font-weight: normal;
}
h2:after, h3:after {
	content: ":";
}

h3 {
	font-size: 16px;
	font-weight: normal;
}

code {
	color: #3b5998;
	color: #314484;
	font: normal 86% "Monaco", "Courier New", "Courier";
}

pre {
	display: block;
	background: #f5f6f7;
	margin: 1.5em 20px;
	padding: 10px 1.5em;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
	white-space: pre-wrap;
}

pre code {
	color: #3b5998;
	color: #314484;
	font: normal 70% "Monaco", "Courier New", "Courier";
}

a[href] {
	white-space: nowrap;
	text-decoration: none;
	color: inherit;
	padding: 1px .6em;
	background: #f5f6f7;
	background: rgba(0, 0, 0, .05);
	-webkit-border-radius: .6em;
	-moz-border-radius: .6em;
	border-radius: .6em;
	-webkit-transition: background .2s ease-out, -webkit-box-shadow .1s ease-out, color .15s ease-out;
	-moz-transition: background .2s ease-out, -webkit-box-shadow .1s ease-out, color .15s ease-out;
	-o-transition: background .2s ease-out, -webkit-box-shadow .1s ease-out, color .15s ease-out;
}

pre code a[href] {
  background: none;
  border-bottom:1px dotted;
}

/* puts an * after external links, jodoc designates with .external */
a[href].external:after {
	content: "*";
	font-style: super;
	opacity: .5;
}

a[href]:hover {
	background: rgba(0, 0, 0, .6);
	color: #fff;
}

pre code a[href], code a[href] {
	padding: 1px 0;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}

/*
	vanilla markdown doesn't support tables, but since you can
	pass HTML through it, may as well put some nice styling for
	them in the CSS.
*/
table {
	width: 100%;
	margin: 1em auto;
	border-top: 1px solid #0d0d0d;
	border-left: 1px solid #0d0d0d;
	padding: 0;
	border-spacing: 0;
	text-align: center;
}
th {
	background: #36D2CF;
	background: #00a9a7;
	background: #07c7c3;
	padding: 5px;
	color: #fff;
	text-align: center;
	border-right: 1px solid #0d0d0d;
	border-bottom: 1px solid #0d0d0d;
	font-weight: bold;
}

th:first {
	border-left: 1px solid #0d0d0d;	
}

td {
	padding: 5px;
	border-right: 1px solid #0d0d0d;
	border-bottom: 1px solid #0d0d0d;
}

td:first {
	border-left: 1px solid #0d0d0d;
}

/* <hr> is used as a page separator in markdown */
hr {
	border: none;
	height: 70px;
}
hr:before {
	content: "\2026";
	font-size: 50px;
	color: #e5e6e7;
	text-align: center;
	display: block;
}

#index {
	-webkit-column-width: 170px;
	-webkit-column-rule-width: 10px;
	-moz-column-width: 170px;
	-moz-column-rule-width: 10px;
	column-width: 170px;
	column-rule-width: 10px;
	column-width: 170px;
	column-rule-width: 10px;
}
#index h2:after, #index h3:after { content:""; }
#index h2 { margin-left: 0; }
#index>h2 {
	margin-top: 0;
}
#index { padding: 10px 1px; }
#index ul {
	padding: 0;
}
#index ul li {
	list-style: none;
}

/* pretty printing */
@media print {
	body {
		max-width: none;
		margin: 0;
		font-size: 89%;
	}
	
	h1, h2 {
		page-break-after: avoid;
	}
	
	h1>p, h2>p{
		page-break-before: avoid;
	}
	
	pre {
		page-break-before: auto;
		page-break-inside: avoid;
	}
	
	blockquote {
		page-break-inside: avoid;
	}
	
	hr {
		page-break-before: always;
		font-size: inherit;
		height: auto;
	}
	hr:before {
		height: auto;
		content: "";
		font-size: inherit;
	}
	
	a[href] {
		background: none;
		padding: 0;
		-webkit-border-radius: none;
		-moz-border-radius: none;
		border-radius: none;
	}
	
	#index {
		display: none;
	}
}

