/* 
 * Data layout, including tables and grids.
 * 
 */

/* 
 * Easy flex layout
 * 
 */

.flex {
	display:flex;
	align-items:stretch;
	white-space:normal;
}

.flex.wrap {
	flex-wrap:wrap;
}

.flex div:first-of-type {
	flex-grow:1;
}

.flex > table {
	flex-grow:1;
	margin-bottom:3em;
}

div.p > div.flex > section {
	flex:1 1;
	padding:2em;
	min-width:15em;
	white-space:pre-line;
}

div.p > section.flex {
	padding:1em;
}

div.p > section.flex > div {
	white-space:pre-line;
	padding:1em 2em;
}

div.p > section.flex > div.center {
	align-self:center;
}

div.p > section.flex > div.third, div.p > section.flex > figure.third {
	max-width:300px;
}

div.p > section.flex > div.fourth, div.p > section.flex > figure.fourth {
	max-width:250px;
}

div.p > section.flex > div, div.p > section.flex > figure {
	flex:1 1 350px;
	flex-basis:350px;
}

div.p > section.flex > figure img.diagram {
	max-width:350px;
}

div.p > section.clear {
	padding-left:0;
	padding-right:0;
}

/* 
 * Pricing tables
 * 
 */

div.p div.pricing {
	display:flex;
	align-items:stretch;
	flex-wrap:wrap;
	justify-content:space-evenly;
	white-space:normal !important;
	vertical-align:top;
	width:100%;
}

div.p div.pricing > div {
	display:inline-block;
	padding:15px;
	max-width:15em;
	min-width:15em;
	padding-bottom:3em;
}

div.p div.pricing h3 {
	font-family:'Montserrat',Verdana,Arial,sans-serif;
	font-size:1.1em;
}

div.p div.pricing h3 + div.note {
	font-size:0.8em;
	line-height:1.5em;
	padding-top:10px;
	padding-bottom:10px;
}

div.p div.pricing > div > sup {
	display:block;
	margin-top:-10px;
	margin-bottom:15px;
}

div.p div.pricing p.standout {
	padding:7px 15px;
}

div.p div.pricing p:not(.standout) {
	font-size:0.9em;
	padding:0;
}

div.p > div.pricing .standout > span {
	float:right;
}

/* 
 * Table rows
 * Handled by table.js
 * 
 */

div.table {
	
}

div.table a.row {
	display:flex;
	flex-wrap:nowrap;
	align-items:center;
	padding:20px;
	cursor:pointer;
	min-height:1.5em;
	text-decoration:none;
	line-height:30px;
	border:none;
}

div.table a.row > div {
	vertical-align:middle;
	display:block;
	margin:0 10px;
	height:100%;
	min-width:1.5em;
	flex-grow:0;
}

div.table a.row > div.right {
	text-align:right;
	white-space:nowrap;
}

div.table a.row > div.grow {
	flex-grow:1;
	flex-shrink:100;
}

div.table a.row h3, div.table a.row p {
	white-space:nowrap;
}

div.table a.row > div.grow h3, div.table a.row > div.grow p {
	overflow:hidden;
	text-overflow:ellipsis;
}

div.table a.row h3 {
	font-size:16px;
	padding:0;
	margin:0;
	font-weight:normal;
	letter-spacing:0.5px;
}

div.table a.row p {
	padding:0;
}

div.table a.row div.selector {
	display:inline-block;
	margin-left:5px;
}

div.table a.row div.selector input {
	margin:0;
}

div.table a.row .tag {
	margin-bottom:5px;
	margin-top:5px;
}

/*
 * Converting table to a flex side-by-side layout
 * 
 */

div.table.flex {
	display:flex;
	flex-wrap:wrap;
}

div.table.flex a.row {
	width:calc(50% - 40px);
}

/* 
 * Grid layout for data
 * Handled by grid.js
 * 
 */

div.grid {
	display:table;
	width:100%;
}

div.grid > div {
	display:table-row-group;
}

div.grid > div > div {
	display:table-row;
}

/* hide values after a certain amount */
div.grid > div.cut > div:nth-of-type(n + 7):not(:last-of-type) {
	display:none;
}

div.grid > div > div > div {
	position:relative;
	display:table-cell;
	vertical-align:top;
	white-space:normal;
	overflow-wrap:anywhere;
	-ms-word-break:break-all;
	min-width:8em;
	border-spacing:10px;
	padding:5px 40px 10px 40px;
}

div.grid > div > div:first-child > div {
	padding-top:10px;
}

div.grid > div > div:first-child > div:first-child {
	width:8em;
}

div.grid > div > div > div > * {
	margin:0;
}

div.grid > div h3 {
	font-weight:normal;
	font-size:16px;
	padding:0;
}

div.grid > div > div > div p {
	padding:0;
}

/* hover actions */
div.grid > div > div > div > div.action {
	display:none;
	position:absolute;
	text-align:right;
	width:4em;
	left:0;
	top:5px;
}

div.grid:not(.single-cell) > div > div:first-child > div > div.action {
	top:10px;
}

div.grid > div > div:hover div.action {
	display:inline-block;
}

div.grid > div > div > div:last-child {
	padding-left:4em;
}

/* adjust tooltips in last row or single-cell grids so they don't get cut off */
div.grid > div:last-child > div > div:hover [alt]:hover::after, div.grid.single-cell > div > div > div:hover [alt]:hover::after {
	left:0;
	top:0;
	margin-left:5em;
	margin-top:0;
	white-space:nowrap;
}

/* single-cell grids group together the label and the value */
div.grid.single-cell > div > div > div {
	display:block;
	padding-left:4em;
}

div.grid.single-cell > div > div > div:first-child {
	padding-bottom:0;
}

div.grid.single-cell > div > div > div:last-child {
	padding-top:0;
}

div.grid.single-cell > div > div > div > div.action {
	top:0;
}

/* 
 * Tree layout for data
 * Handled by tree.js
 * 
 */

div.tree {
	padding:15px;
}

div.tree div.branch {
	padding:5px 15px;
}

div.tree div.branch, div.tree div.leaf {
	border-left:1px solid;
}

div.tree div.branch > h3 {
	font-family:'Varela Round',Verdana,Arial,sans-serif;
	font-size:16px;
	padding:0;
	cursor:pointer;
}

div.tree div.leaf {
	padding-left:15px;
}

div.leaf label, div.leaf samp {
	display:inline-block;
}

div.leaf label {
	width:10em;
	margin-right:3em;
	font-weight:bold;
	vertical-align:top;
	overflow-wrap:anywhere;
	-ms-word-break:break-all;
}

div.leaf samp {
	max-width:600px;
	overflow-wrap:anywhere;
	-ms-word-break:break-all;
}

/* 
 * Preview pane
 * 
 */

div[name=preview] {
	position:fixed;
	display:block;
	top:75px;
	bottom:0;
	right:0;
	margin-top:50px;
	width:375px;
	line-height:30px;
	overflow-y:auto;
	scrollbar-width:thin;
}

div[name=preview] > div.card {
	display:inline-block;
	overflow-y:auto;
	overflow-x:hidden;
	white-space:normal;
	margin-bottom:0;
	width:100%;
	animation:fadein 0.3s;
}

div[name=preview] div.info {
	padding:0 5px 10px 5px;
}

div[name=preview] > div.card > h3 label {
	display:none;
}

div[name=preview] div.table a.row {
	padding:10px;
	line-height:25px;
}

div[name=preview] nav {
	position:fixed;
	display:block;
	z-index:1000;
	margin-top:-50px;
	background-color:inherit;
	width:inherit;
	border-bottom:solid 1px;
	white-space:nowrap;
	text-align:right;
}

div[name=preview] nav a {
	display:inline-block;
	padding:10px 25px;
}

div[name=preview] nav:only-child::after {
	content:"Indicator previews will show here.";
	display:block;
	position:absolute;
	padding:40px 0;
	opacity:0.5;
	width:100%;
	text-align:center;
}

/*
 * Adjust on medium/smaller screens
 *
 */

@media only screen and (max-width:1320px) {
	
	div[name=preview] {
		display:none;
	}
	
	main {
		margin-right:0 !important;
	}
	
	.flex {
		flex-wrap:wrap;
	}
	
	div.p > section.flex > figure img.diagram {
		max-width:100%;
	}
	
}

@media only screen and (max-width:900px) {
	
	div[name=preview] {
		display:none;
	}
	
	main {
		margin-right:0 !important;
	}
	
	.flex {
		display:block;
	}
	
	.flex > table {
		width:100%;
	}
	div.p > div.flex > section {
		min-width:10em;
	}
	
	div.p > section.flex > div {
		padding:0 1em;
	}
	
	div.p > section.flex > figure {
		padding:0;
		margin:2em 0 0 0;
	}
	
	div.p > section.flex > div.third, div.p > section.flex > figure.third {
		max-width:100%;
	}
	
	div.p > section.flex > div.fourth, div.p > section.flex > figure.fourth {
		max-width:250px;
	}
	
	div.table a.row div.right {
		display:none;
	}
	
	div.table a.row > div.grow {
		max-width:100%;
	}
	
	div.table.flex a.row {
		width:100%;
	}

	/* convert grids into single-cell */
	div.grid > div > div > div {
		display:block;
		padding:5px 20px 5px 20px;
	}
	
	div.grid > div {
		display:block;
		padding-top:10px;
		padding-bottom:20px;
	}
	
	div.grid > div > div > div:first-child {
		font-size:18px;
	}
	
	/* show actions */
	div.grid > div > div > div > div.action {
		display:inline-block;
		text-align:right;
		width:4em;
		position:absolute;
		left:0;
	}
	
	div.leaf label, div.leaf samp {
		display:block;
	}
	
}