html, body { padding:0; margin:0; font-size:100%; line-height:1.4em; color:#222; font-family:"open-sans",sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
*, *:after, *:before { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }
article { overflow:hidden; margin:0; }
article aside { border-bottom:0; }
section { padding:40px 0 20px; overflow:hidden; }
aside { border-bottom:1px solid #ddd; margin:0 0 15px; overflow:hidden; }

.page-width { max-width:50em; margin:0 auto; padding:0 1.25em; }
header#global-bar { display:block; background:#b9002d; padding:12px 0; margin:0 0 20px; }
header#global-bar .logo { display:block; width:156px; height:28px; }

footer { padding:20px 0; background-color:#000; }
footer p { margin:0; font-size:.8em; line-height:1.4em; color:#fff; }

a { color:#207cc1; text-decoration:none; }
a:hover { text-decoration:underline; }

h1, h2, h3, h4, h5 { font-weight:normal; margin:0 0 20px; line-height:1.1em; 
	
	/* Kerning concerns */
	text-rendering: optimizeLegibility;
  font-feature-settings: "kern";
  -webkit-font-feature-settings: "kern";
  -moz-font-feature-settings: "kern";
  -moz-font-feature-settings: "kern=1";
	font-kerning: normal;
	
}

h2 { font-size:2.5em; }
h3 { font-size:1.5em; font-weight:bold; }
h4 { font-size:1em; font-weight:bold; }

p { margin:0 0 20px; padding:0; }

ol { font-size:1.2em; line-height:1.1em; margin:0 0 20px; padding:0 0 0 1.5em; }
ol li { margin:0 0 20px 0; position:relative; }

ul { list-style-type:none; margin:0 0 20px 0; padding:0; }
ul li { margin:0 0 5px 0; padding:0 0 0 10px; position:relative; }
ul li:before { content:"\2022"; display:inline-block; position:absolute; left:0; font-size:1em; vertical-align:middle; }

hr { height:0; width:100%; margin:30px 0; border:0; border-top:1px dashed rgb(221,221,221); }

.intro { font-size:1.5em; line-height:1.4em; }
.page-description { font-size:1.25em; line-height:1.4em; text-align:left; }
.quote { font-size:1.5em; line-height:1.4em; color:rgb(102,102,102); }
.note { font-size:.5em; }
.buttons { text-align:center; }
.btn { text-align:center; display:inline-block; padding:5px 10px 5px 10px; margin:0 5px 10px; font-size:1em; line-height:1em; white-space:nowrap; color:#222; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; border:1px solid #f2ba12; background:rgb(247,209,69); background:-moz-linear-gradient(top, rgba(247,209,69,1) 50%, rgba(245,197,23,1) 50%); background:-webkit-gradient(linear, left top, left bottom, color-stop(50%,rgba(247,209,69,1)), color-stop(50%,rgba(245,197,23,1))); background:-webkit-linear-gradient(top, rgba(247,209,69,1) 50%,rgba(245,197,23,1) 50%); background:-o-linear-gradient(top, rgba(247,209,69,1) 50%,rgba(245,197,23,1) 50%); background:-ms-linear-gradient(top, rgba(247,209,69,1) 50%,rgba(245,197,23,1) 50%); background:linear-gradient(to bottom, rgba(247,209,69,1) 50%,rgba(245,197,23,1) 50%); }
.btn.cta { width:50%; padding:10px 20px; margin:0 auto; font-size:20px; line-height:24px; width:auto; display:block; }

.submit-btn { display:inline-block; width:auto; float:left; padding:5px 10px 5px 10px; margin:0; cursor:pointer; font-size:24px; line-height:1em; letter-spacing:-1px; color:#222; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; border:1px solid #f2ba12; background:rgb(247,209,69); background:-moz-linear-gradient(top, rgba(247,209,69,1) 50%, rgba(245,197,23,1) 50%); background:-webkit-gradient(linear, left top, left bottom, color-stop(50%,rgba(247,209,69,1)), color-stop(50%,rgba(245,197,23,1))); background:-webkit-linear-gradient(top, rgba(247,209,69,1) 50%,rgba(245,197,23,1) 50%); background:-o-linear-gradient(top, rgba(247,209,69,1) 50%,rgba(245,197,23,1) 50%); background:-ms-linear-gradient(top, rgba(247,209,69,1) 50%,rgba(245,197,23,1) 50%); background:linear-gradient(to bottom, rgba(247,209,69,1) 50%,rgba(245,197,23,1) 50%); }
.submit-btn:before { content:""; display:inline-block; height:18px; width:25px; margin:-5px 0 0 -10px; vertical-align:middle; background:transparent url('http://cdn.oreillystatic.com/oreilly/images/btn-green-arrow-overlay.png') left 0 no-repeat; }
.cover h2 { padding:2px 4px 3px; background-color:rgb(221,221,221); text-align:center; color:rgb(34,34,34); font-size:1.5em; line-height:1.2em; margin:0; }
.cover h2.latest { background-color:rgb(247,209,69); }
.cover img { width:100%; }
.cover .frame { height:0; padding-bottom:150%; margin-bottom:10px; overflow:hidden;  border:1px solid rgb(221,221,221); }
.cover .frame.crop { padding-bottom:80%; border-bottom:1px dashed rgb(221,221,221); }
.nm { margin:0; }



article header { text-align:center; max-width:800px; margin:0 auto; padding:40px 0 0; letter-spacing: -.05em;}
.download article header { padding:40px 0; }
article header h1 { font-size:5em; line-height:1em; font-family:"oreilly-urw-typewriter-narro",Georgia,serif; font-weight:100; color:#b9002d; }
article header h2 { font-size:2.5em; line-height:1.1em; margin-bottom:0; }
article header h2.subtitle { margin-top:-12px; }

.flex-video { position:relative; padding-bottom:56.25%; width:100%; }
.flex-video iframe { position:absolute; top:0; height:100%; width:100%; }

.stacked-video { margin-bottom:20px; }
.stacked-video .attribution { font-weight:normal; font-size:.8em; line-height:1em; white-space:nowrap; text-align:center; margin:5px 0 10px; }

.callout-row { background-color:#f4f4f4; }
.callout-row:nth-of-type(odd) { background-color:#e4e4e4; }
.list-header { margin-bottom:5px; }
.mobile-show { display:none; }


.product-row { overflow:hidden; }
.product-row .col-cover { position:relative; width:220px; max-width:100%; float:left; padding:0 40px 20px 0; }
.product-row .download-show .col-cover { width:130px; }
.product-row .col-cover img { display:block; }
.product-row .col-cover .cover-violator {}
.product-row .col-cover .cover-violator .excerpt1 {}
.product-row .col-description { overflow:hidden; padding:0 0 20px; max-width:440px; }
.product-row .col-description h3 { font-size:1.25em; line-height:1.4em; margin:-5px 0 5px; }
.product-row ul { margin-bottom:10px; }
.product-row ul li { padding:0; margin:0 0 5px; }
.product-row ul li:before { content:""; }
.product-row .btn { font-size:1.25em; padding:8px 20px 8px 20px; font-weight:bold; margin:0; opacity:.95; }
.product-row .btn:hover { text-decoration:none; opacity:1; }
.product-row .btn .btn-note { font-size:.7em; line-height:1.2em; font-weight:normal; }
.cover-violator { position:absolute; z-index:2; top:0; left:96px; height:84px; width:84px; }
.cover-violator.excerpt1 { background:transparent url('http://cdn.oreillystatic.com/oreilly/images/cover-violator-excerpt-1.png') top right no-repeat; }
.cover-violator.excerpt2 { background:transparent url('http://cdn.oreillystatic.com/oreilly/images/cover-violator-excerpt-2.png') top right no-repeat; }
.cover-violator.excerpt3 { background:transparent url('http://cdn.oreillystatic.com/oreilly/images/cover-violator-excerpt-3.png') top right no-repeat; }
.cover-violator.excerpt4 { background:transparent url('http://cdn.oreillystatic.com/oreilly/images/cover-violator-excerpt-4.png') top right no-repeat; }


.quote-row { padding:40px 0 25px; text-align:center; }
.quote-row .quote { display:block; border-radius:8px; background:#f4f4f4; padding:15px 20px; text-align:left; font-size:1em; line-height:1.4em; color:#222; margin:0 0 20px; }
.quote-row .attribution { display:block; text-align:right; margin:-15px 0 20px; }

.about-row h3 { display:inline-block; font-size:1.25em; line-height:1.4em; margin:-5px 0 5px; overflow:hidden; }
.about-row p { line-height:1.4em; overflow:hidden; }
.about-row .photo { float:left; padding:0 40px 20px 0; }

.buy-row { text-align:center; }
.buy-row .btn { font-size:40px; line-height:1.3em; padding:5px 30px; margin:0 0 20px; opacity:.95; }
.buy-row .btn:hover { text-decoration:none; opacity:1; }

.cta-link { display:inline-block; margin:10px auto; font-size:1.25em; line-height:1.4em; font-weight:bold; }


#rating { line-height: 28px; text-align:center; margin:0 0 40px; }
#rating .stars { display:inline-block; vertical-align:middle; }
#rating .stars .star { display:inline-block; position:relative; width:30px; height:28px; margin-right:1px; }
#rating .stars .star .mask { display:block; position:absolute; z-index:3; width:30px; height:28px; background:transparent url('//cdn.oreillystatic.com/oreilly/promos/star-30x28-20141216.png') 0 0 no-repeat; }
#rating .stars .star:before { content:""; display:block; position:absolute; z-index:1; top:0; width:100%; height:28px; background-color:#999; }
#rating .stars .star:after { content:""; display:block; position:absolute; z-index:2; top:0; width:100%; height:28px; background-color:#ffaa00; }
#rating .stars .star.fill-0:after { width:0; }
#rating .stars .star.fill-25:after { width:25%; }
#rating .stars .star.fill-50:after { width:50%; }
#rating .stars .star.fill-75:after { width:75%; }

#overlay { display:none; position: absolute; top:0; bottom:0; z-index:200; width:100%; min-height:100%; padding:0 3.8641%; background:rgba(0,0,0,.4); -webkit-box-sizing:border-box; -moz-box-sizing:border-box; -o-box-sizing:border-box; -ms-box-sizing:border-box; box-sizing:border-box; }
#overlay .inner { position:relative; overflow:hidden; padding:0 30px 30px; max-width:600px; background:rgb(255,255,255); -webkit-box-shadow:0 0 20px rgba(0,0,0,.5); -moz-box-shadow:0 0 20px rgba(0,0,0,.5); -o-box-shadow:0 0 20px rgba(0,0,0,.5); -ms-box-shadow:0 0 20px rgba(0,0,0,.5); box-shadow:0 0 20px rgba(0,0,0,.5); -webkit-border-radius:10px; -moz-border-radius:10px; -o-border-radius:10px; -ms-border-radius:10px; border-radius:10px; }
#overlay .close { display:block; float:right; height:30px; width:19px; margin-right:-22px; color:#999; background:transparent url('http://cdn.oreillystatic.com/oreilly/images/close-icon-19x19.png') right 8px no-repeat; }
#overlay h3 { font-size: 1.25em; margin:30px 0 0; }
#overlay p { margin:0 0 10px; }
#overlay .btn { font-size:1.25em; padding: 8px 20px 8px 20px; margin:0; font-weight: bold; opacity:.95; }
#overlay .btn:hover { opacity:1; text-decoration:none; }

.grid {
  margin-right:-20px;
}
.grid:after {
  content: "";
  display: table;
  clear: both;
}

[class*='col-'] {
  float: left;
  padding-right: 20px;
}
[class*='col-']:last-of-type {
  float: left;
}


.col-4-5 { width: 80%; }
.col-3-4 { width: 75%; }
.col-2-3 { width: 66.66%; }
.col-3-5 { width: 60%; }
.col-1-2 { width: 50%; }
.col-2-5 { width: 40%; }
.col-1-3 { width: 33.33%; }
.col-1-4 { width: 25%; }
.col-1-5 { width: 20%; }
.col-1-6 { width: 16.66%; }


form {
  width: 100%;
  margin: 30px auto 0;
  text-align: left;
  font-size:14px;
  line-height:1.4em;
}

label {
  font-weight: bold;
  display: block;
  margin-bottom: 5px;
}
label.required {
  color: #c71741;
}

select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {
  width: 100%;
  height: 35px;
  margin-left:0
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  background-color: #fff;
  border: 1px solid #e0e0e0;
  display: inline-block;
  padding: 4px 6px;
  margin-bottom: 10px;
  font-size: 14px;
  line-height: 20px;
  color: #333;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
  vertical-align: middle;
}

#error-message {
  text-align: center;
  color: #c71741;
  font-style: italic;
}

#newsletter { overflow:hidden; position:relative; margin-bottom:20px; padding-bottom:100%; -webkit-box-shadow: 0px 0px 4px 0px rgba(0,0,0,0.33); -moz-box-shadow: 0px 0px 4px 0px rgba(0,0,0,0.33); box-shadow: 0px 0px 4px 0px rgba(0,0,0,0.33); }
#newsletter-sample { position:absolute; width:100%; height:100%; text-decoration:none; }
#newsletter-sample:hover .text { background-color:rgb(30,30,30); background-color:rgba(0,0,0,.88); }
#newsletter-sample .text { height:40px; top:50%; background-color:rgb(50,50,50); background-color:rgba(0,0,0,.8); color:#fff; position:absolute; z-index:2; width:100%; line-height:40px; text-align:center; font-weight:bold; }

.download-show, .download .download-hide {
  display: none;
}
.download .download-show {
  display: block;
}


@media screen and (max-width: 40em) {
  .mobile-stack [class*='col-'] { width: 100% !important; }
  article header h1 { font-size:4em; line-height:1em; }
  article header h2 { font-size:2em; line-height:1em; }
  .mobile-show { display:block; }
  .mobile-hide { display:none; }
}
@media screen and (max-width: 20em) {
  .col-right, .col-left { float:none; width:100%; }
}