/* VARIABLES */


$body-fonts: Arial, Verdana, sans-serif;



/* http://meyerweb.com/eric/tools/css/reset/
   v2.0 | 20110126
   License: none (public domain)
*/

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
	display: block;
}
body {
	line-height: 1;
}
ol, ul {
	list-style: none;
}
blockquote, q {
	quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
	content: '';
	content: none;
}
table {
	border-collapse: collapse;
	border-spacing: 0;
}

/* --- */


a {
  color: rgb(0, 102, 204);
	&.disabled {
		text-decoration: none;
		color: rgba(102,102,102,1);
	}
}

b {
  font-weight: 700;
}

i {
	font-style: italic;
}

code {
	font-family: monospace;
	color: rgba(0,96,0,1);
}

body {
  background-color: rgb(247, 247, 247);
  font-family: $body-fonts;
}

header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: 1 0 1 5;
}

#header-left {
  display: flex;
  justify-content: flex-start;
}

#header-left img#sites-logo {
  padding-top: 7;
}

#header-left h2 {
  margin: 9 0 0 10;
  font-size: 24px;
  font-weight: bold;
  display: inline-block;
}

#header-left a {
  color: black;
  text-decoration: none;
}


#main-wrapper {
  display: flex;
}

#searchbox-form {
  display: flex;
  align-items: flex-start;
  padding: 7px 6px;
}

#searchbox-form input {
  margin-top: 1px;
  margin-right: 6px;
  padding: 0px 6px 0px 10px;
  border: 1px solid rgb(217, 217, 217);
  border-top: 1px solid rgb(192, 192, 192);
  line-height: 25px;
}

#searchbox-search-button {
  background-color: rgb(245, 245, 245);
  border: 1px solid rgb(215, 215, 215);
  color: rgba(68,68,68,1);
  font-size: 11px;
  font-weight: bold;
  padding: 8;
}

#sidebar-left {
  flex: 0 auto;
  font-size: 12px;
  line-height: 1.33em;
  min-width: 160px;
  width: 160px;

	> div {
	  background-color: white;
	  margin: 0 5px 6px 5px;
	  padding: 0 0 0 5px;
		
		h4 {
			font-weight: 700;
			color: rgba(72,72,72,1);
			margin-bottom: 1px;
			padding: 3px 0 2px 0;
			font-size: 13px;
		}
		
		li {
			margin: 1px 0;
			padding: 2px 0 0 0;
			line-height: 1.33em;
			
			&.selected {
				font-weight: bold;
				a {
					color: #000;
				}
			}
		
		}
		
		a {
			color: #06c;
  			text-decoration: none;
		}
	}
	> div:first-of-type {
		> ul > li:first-of-type {
			margin-top: 0;
		}
	}
	
	.license {
		margin: 0 5px 6px 5px;
		padding: 11px 5px 5px 5px;
		background-color: #fff;
		color: rgb(94, 106, 114);
		font-size: 10px;
		line-height: normal;
		
		a {
			text-decoration: underline;
		}
		/* line breaks creating white space between span tags (see space after link before punctuation) */
	}
}


#main-content {
  font-size: 13.333px;
  font-family: $body-fonts;
  flex: 1 100%;
  background-color: white;
  border-style: solid;
  border-width: 1px;
  border-color: rgb(215, 215, 215);
  padding-left: 10px;
	margin-right: 5px;
	
	a:visited {
	  color: rgb(71, 18, 100);
	}
	

	p, blockquote {
	  margin-bottom: 13.33px;
	}

	blockquote {
	  margin-top: -12px;
	}

	.sites-codeblock, .sites-codesnippet-block {
	  background-color: rgb(239, 239, 239);
	  border: 1px solid #d3d3d3;
	  color: rgb(0, 96, 0);
	  font-family: monospace;
	  padding: 8px 0 8px 16px;
		line-height: 1;
	}

	table.sites-layout-name-one-column {
	  width: 100%;
	}

	td.sites-tile-name-content-1 {
	  padding-right: 5px;
	}
	
	.sites-tile-name-header {
		padding: 10px 10px 0 10px;
		
		// Original has div instead of p
		> p { 
			margin-bottom: 0;
		}
	}
	
	#title-crumbs {
		padding: 6px 0 0 10px;
		
		+ h3 {
			margin-top: 6px;
		}
	}
	
	div.sites-layout-tile {
		padding-top: 10px;
	}
	
	.sites-layout-vbox {
		padding-top: 15px;
	}
	
	td.sites-layout-tile {
		vertical-align: top;
		line-height: normal;
		padding: 24px 10px 0;
		width: 50%;
		
		&.sites-tile-name-content-2 {
			padding-left: 0;
		}				
	}
		
	h2 {
		font-size: 20px;
		font-weight: 700;
		margin: .83em 0;
		
	}
			
	h3 {
		margin: 10px 0 1.4em;
		font-size: 22px;
		font-weight: 700;
			
		a {
			color: #000;
			// fix for in-page anchor, may not be universally correct
		}
	}

	h4 {
		font-weight: 700;
		margin: 1.77em 0; // correct for Home
		margin: 1.33em 0; // correct for eg https://www.chromium.org/developers

		a {
			color: #000;
			// fix for in-page anchor, may not be universally correct
		}
			
		i a {
			font-weight: 400;
			color: rgba(0,102,204,1);
		}
		// universal?? see http://localhost:8080/developers
			
	}

  p {
    margin-top: 1.4em;
  }

	ul {
		display: block;
		list-style-type: disc;
		margin-top: 1em;
		margin-bottom: 1em;
		padding-left: 40px;
		
    li {
      margin-top: 5px;
      margin-bottom: 5px;
    }
			
		ul {
			list-style-type: circle;
			margin-top: 0;
			margin-bottom: 0;

			ul {
				list-style-type: square;
			}
		}
	}
		
	ol {
		list-style-type: decimal;
		padding-left: 40px;
		margin: 1em 0;
		
		ul {
			list-style-type: circle;
			margin-top: 0;
			margin-bottom: 0;
		}
	}
		
  // duplicate <a name="TOC-Life-Of-A-Chromium-Developer"> on the paragraph under the heading
		
	.sites-embed {
		margin-top: 5px;
		margin-bottom: 5px;
			
		h4 {
			color: #000;
			font-size: 12px;
			background-color: rgba(241,241,241,1);
			border-bottom: solid 2px rgba(103, 167, 227, 1);
			padding: 3px 5px;
			margin: 0;
				
		}
		&.sites-embed-border-on {
			border: solid 1px rgba(215,215,215,1);
		}
		p {
			margin-bottom: 0;
		}
		// there is an extraneous <p></p> above the heading
	}
}
