#cms-content .cms-image{border:0}#cms-content .cms-image-right{border:0;float:right;padding-left:2em}#cms-content .cms-centered-image{margin:0 auto;display:block;border:0}#cms-content .cms-image .caption{margin-top:0;padding-top:0;font-size:0.9em;font-style:italic;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif}.cms-legal{font-size:smaller;color:#999;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif}#cms-content dl.steppable dt{color:#375;font-weight:bold;font-size:120%;margin-top:1.2em;margin-bottom:0.2em}#cms-content dl.steppable dd{margin:0}#cms-content dl.steppable dd a.lightview{font-size:75%;padding:0 0.5em;background:#bec}#author-sales-chart #dates{float:left;margin-right:2em}#author-sales-chart #dates label,#author-sales-chart #dates input{display:block}#author-sales-chart #dates input{margin-bottom:1.5em}#author-sales-chart table.products td,#author-sales-chart table.products th{padding:0.2em 0.5em}#author-sales-chart table.products tr.header{background:#d2c2a6}#author-sales-chart table.products tr.header td{border-top:#000}#author-sales-chart table.products tr td{border-bottom:#000}#author-sales-chart table.products th.product-title{text-align:left}#author-sales-chart table.products td.product-code{font-weight:bold;background:#d2c2a6;border-left:#000;border-right:#000}#author-sales-chart table.products td.checkbox{text-align:center}#author-sales-chart #chart-holder{margin-top:2em}#author-sales-chart #chart-holder #no-chart{margin:0em 30%;color:#888;text-align:center}#author-sales-chart #chart-holder h1{font-size:140%;color:#552}#content table.book-list{width:100%}#content table.book-list td{border-bottom:3px solid #ebebeb;padding:20px}#content table.book-list td.description{padding-right:25px;padding-left:0}#content table.book-list td.description .ship-status{color:#666;margin-top:.25em}#content table.book-list td.thumbnail img{background-color:transparent;box-shadow:1px 1px 4px #aaa;-moz-box-shadow:1px 1px 4px #aaa;-webkit-box-shadow:1px 1px 4px #aaa;border:0;margin:4px;padding:0}#content table.book-list th{background:#c3c3c3 url(//pragprog.com/assets/table-header-background-c8eccc2d2a77b6bb3856fefb9d13a5db.png) repeat-x top;color:#333;padding:4px 0;border-bottom:0}#content table#bookshelf td.thumbnail{padding-left:25px;width:95px;padding-right:0}#content table#bookshelf td.thumbnail img.bought_elsewhere{filter:alpha(opacity=50);-moz-opacity:0.5;-khtml-opacity:0.5;opacity:0.5}#content #bookshelf td.selected{width:15px;padding-left:25px}#content #bookshelf td.actions{width:10em;padding-right:25px}#content #bookshelf td.actions ul{visibility:hidden}#content #bookshelf tr.highlight td.actions ul{visibility:visible}#content #bookshelf .extras{margin-top:.2em;margin-bottom:0}#content #bookshelf ul.skus{padding-left:1.5em;margin-top:1em;margin-bottom:0}#content #bookshelf ul.downloads{font-size:100%;margin-top:1em;margin-bottom:1em}#content ul.bookshelf,#content ul.bookshelf li{margin:0;padding:0;list-style:none;list-style-image:none}#content ul.bookshelf{width:100%;float:left;margin-right:-1em;margin-bottom:-1em}#content ul.bookshelf li{float:left;margin-right:.5em;margin-bottom:.5em}#content ul.bookshelf img{background-color:transparent;background:none;border:0;padding:0;margin:4px;box-shadow:1px 1px 4px #aaa;-moz-box-shadow:1px 1px 4px #aaa;-webkit-box-shadow:1px 1px 4px #aaa}.book-page #content{position:relative}.book-page #head{padding-right:225px}.book-page #content #intro{padding-right:15px}.book-list-page #content{padding-bottom:0px;margin-bottom:-25px}div#category-view tr{vertical-align:top}div#category-view td.category-index-image{width:105px;padding:3em 0 0 10px}div#category-view td.category-index-description{padding-top:3em}#content #title-view{display:block;min-height:520px;padding:25px;padding-right:265px;background:url(//pragprog.com/assets/titles-sidebar-background-296d8c4f5b8e69d125c3cac103b07e10.gif) repeat-y right;box-shadow:inset 0px 30px 30px #faf4e0;-moz-box-shadow:inset 0px 30px 30px #faf4e0;-webkit-box-shadow:inset 0px 30px 30px #faf4e0;margin:-10px 0 -10px -25px}#content #title-view .order{color:#746F62;margin-top:-5px}#content #title-view .book{display:inline}#content #title-view .book .thumbnail{display:block;float:left;margin:0 20px 20px 0;text-align:center;width:138px}#content #title-view .book .thumbnail img{background-color:transparent;margin:9px;padding:0px;box-shadow:2px 3px 2px #aaa;-moz-box-shadow:2px 3px 2px #aaa;-webkit-box-shadow:2px 3px 2px #aaa;-webkit-box-shadow:2px 3px 2px #aaa;-moz-box-shadow:2px 3px 2px #aaa;border:none}#content #title-view .book.selected .thumbnail img{margin:0px;border:9px solid #cb8a81;box-shadow:none;-webkit-box-shadow:none;-moz-box-shadow:none}#content #title-view .book .details{display:none;position:absolute;padding-top:1px;right:25px;width:230px}#content #title-view .book .details.fixed{position:fixed;top:30px;overflow:auto}.buy-now-format{padding:1px 0 5px 0}.buy-now-buttons{padding:1em 0}form#buy-now .formats{padding-left:1em}form#buy-now .formats ul{margin-top:6px;padding-left:0;margin-left:2em;text-indent:-2em;list-style-position:inside}#content div.book-format-option{margin:0.3em 0 0.5em 0}#content div.book-format-option label{display:inline}#content #book-detail{position:absolute;top:-65px;right:15px;width:204px;z-index:10}#content #book-detail .thumbnail img{background:none;border:0;padding:0px;margin:7px;box-shadow:2px 2px 4px #888;-moz-box-shadow:2px 2px 4px #888;-webkit-box-shadow:2px 2px 4px #888;border:1px solid #ccc}#content #book-detail .extras{font-size:90%;padding:2px 0 14px 0;line-height:140%}#content .stats-for-title{border-left:2px solid #ceccc4;border-bottom:2px solid #ceccc4;color:#999;padding:4px 0;margin:0 0 1em 1em}#content .stats-for-title ul{margin-before:0px;margin-after:0px;-webkit-margin-before:0px;-webkit-margin-after:0px;padding-top:0px;padding-left:1.5em}.track-our-progress{margin-top:3px;font-weight:bold}div.progress div.explanation{margin:0.2em 20% 0.5em 20%;padding:0px;color:#666;font-size:9pt;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif}div.progress div#progress-chart{position:relative;top:6px;overflow-x:auto;overflow-y:auto;width:700;background:#000}div.progress div#progress-chart svg{background:#000}div.progress div#progress-chart .prg-lab{font-size:30pt}#MB_frame{background-color:#aaa !important}div#release-info-popup{background:#eee;padding:1em}div#release-info-popup h3{margin-top:1.5em;margin-bottom:0em;color:#242;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:140%}div#release-info-popup .notes{font-size:12px;color:#000}.book-page .ui-dialog{padding:0}.book-page .ui-dialog .ui-dialog-titlebar{background:#DDD;border:0;border-bottom:1px solid #ccc;border-radius:0}.book-page .ui-dialog .ui-dialog-titlebar .ui-dialog-title{text-shadow:0px 1px 0px #fff}.book-page .ui-dialog .ui-dialog-content{background:#999}#content img.watch-me-icon{width:112px;height:76px;border:none;float:left;margin-right:2em;margin-bottom:0.2em}#pub-schedule{color:black;font-size:100%}#pub-schedule .stripe1{background:#ffd}#pub-schedule .stripe2{background:#fdf}#pub-schedule a,#pub-schedule h3{color:white}#content table#cart .remove-from-cart-form,#content table#discounts .remove-from-cart-form{display:inline;margin:0;padding:0}#content table#cart .remove-from-cart-form .remove-from-cart-button span,#content table#discounts .remove-from-cart-form .remove-from-cart-button span{display:none}#content table#cart .cart-right,#content #discounts .cart-right{padding-right:25px;width:5em;text-align:right}#content table#cart td.quantity{width:110px;padding:20px 0}#content table#cart td.quantity input.textbox{width:55px}#content table#cart td.thumbnail{padding-left:25px;width:95px;padding-right:0}#content #discounts-bar{background:#a69f8c url(//pragprog.com/assets/bar-background-bd9b2cf8be1878b5a2a123eccfff64a7.png) repeat-x 0 0;margin:-25px;margin-bottom:-22px;padding:12px 0 12px 25px}#content #discounts{float:right;margin:5px 0px 5px 10em}#content #discounts td{padding:3px 0}#content #discounts .description small{font-weight:normal}#content table#cart ul.discounts,#content table#cart ul.discounts li{margin:0;padding:0;list-style:none;list-style-image:none}#content table#cart ul.discounts{margin-top:.25em;font-size:90%}#content table#cart ul.discounts li{background:url(//pragprog.com/assets/add-to-cart-glyph-57844789a59f00d1455736ad8056591e.gif) no-repeat left 0.1em;padding-left:20px}#content table#cart ul.discounts li a{color:#b95e56}#content table#cart ul.discounts li a:visited{color:#9456d1}#content table#cart ul.discounts li a:hover,#content table#cart ul.discounts li a:visited:hover{color:#d65554}#content table#order-totals{font-family:"Bookman Old Style","Book Antiqua",Georgia,"Times New Roman",Times,serif;font-size:110%;width:100%;margin-bottom:0}#content table#order-totals td.amount{padding-right:10px;width:5em;text-align:right;font-size:100%}#content table#order-totals th{padding-right:10px}#content table#order-totals .total{background:white;border:2px solid #ccc}#content table#order-totals tbody th{font-weight:normal;text-align:right}#content table#order-totals tbody th,#content table#order-totals tbody td{padding-top:.35em;padding-bottom:.35em}#content table#order-totals tbody .total th,#content table#order-totals tbody .total td{background-color:#f0f0ed;color:#333;font-size:110%}#content table#order-totals tbody .total td.amount{font-size:115%;background:#fff}#cart-tab{background:#CB8A81;position:absolute;top:96px;right:25px;cursor:pointer;border-radius:0 0 3px 3px;box-shadow:inset 0px 1px 1px #666}#sidebar #cart-tab a,#sidebar #cart-tab a:visited,#sidebar #cart-tab a:hover,#sidebar #cart-tab a:visited:hover,#cart-tab a,#cart-tab a:visited,#cart-tab a:hover,#cart-tab a:visited:hover{background:url(//pragprog.com/assets/cart-icon-cart-tab-da186e46944c21dafcd58b28b6e96310.gif) no-repeat 8px center;color:white;display:block;padding-left:32px;padding-right:12px;padding-top:6px;padding-bottom:8px;cursor:pointer}#sidebar #cart-tab+#in-the-forums{margin-top:45px}.cart-page #foot{text-align:right}#content #mini-cart{border-left:3px solid #fff;font-size:85%;float:right;margin:-20px 0px 20px 20px;padding:20px 0px 20px 20px;width:180px}#content #mini-cart p.cart-icon{font-weight:bold;background:url(/assets/cart-icon.gif) no-repeat left center;margin:0 0 10px 0px;padding:5px 0px 5px 25px;font-size:14px}#content #mini-cart .cart-icon a{color:#333;text-decoration:none}#content #mini-cart p a:hover,#content #mini-cart p a:visited:hover{text-decoration:underline}#content #mini-cart ul,#content #mini-cart li{list-style:none;list-style-image:none;margin:0;padding:0}#content #mini-cart li{text-indent:-1.6em;padding-left:1.6em;padding-bottom:7px}#content #mini-cart .more{margin:10px 0 0 0}#content #mini-cart .more a:visited{color:#B95E56}#single-column-layout #sidebar-wrapper,#centered-layout #sidebar-wrapper,#slate-single-column-layout #sidebar-wrapper,#slate-centered-layout #sidebar-wrapper{display:none}#two-column-layout #main{background:#fff url(//pragprog.com/assets/sidebar-background-234d740489c0e63717c867917afc961b.png) repeat-y right}#two-column-layout #content-wrapper{float:left;width:100%;margin-right:-600px}#two-column-layout #content{margin-right:300px}#content .two-column{float:left;padding-bottom:1em;width:100%}#content .two-column .column-wrapper{float:left;width:50%}#content .two-column .lefty.column{margin-right:12px}#content .two-column .righty.column{margin-left:13px}#centered-layout #head-wrapper{text-align:center}#slate-single-column-layout #head-wrapper{margin:0}#slate-single-column-layout #content{background-color:#eaddb8;padding:0}#slate-single-column-layout #content .panel{background:#f5ebcb url(//pragprog.com/assets/titles-top-background-9d6363a9fa6c473cc26a4fe3ec5dd8a4.gif) repeat-x;padding:10px 0 10px 25px;width:auto}#slate-centered-layout #content-wrapper{text-align:center}#slate-centered-layout #content{margin-left:auto;margin-right:auto;text-align:left}#slate-layout #content-wrapper,#slate-centered-layout #content-wrapper{border-top:1px solid #9c978a;background:#eaddb8 url(//pragprog.com/assets/head-background-d37898a6f34fbf7324b7d19c83bcdb5b.png) repeat-x 0 0}#slate-layout #content,#slate-centered-layout #content{padding:50px;padding-top:25px}#slate-layout #content .buttons,#slate-centered-layout #content .buttons{border-top-color:#B3AA90}.send-to-readmill{vertical-align:text-top}.home-page #head{margin:0 auto;padding-bottom:30px}#head .cover-image img{box-shadow:2px 2px 4px #bfb59c;-webkit-box-shadow:2px 2px 4px #bfb59c;-moz-box-shadow:2px 2px 4px #bfb59c}#home-single-book{width:540px;margin:50px auto}#home-single-book .cover-image{float:left;width:200px}#home-single-book .copy{width:300px;float:right;line-height:150%}#home-single-book .more{margin:1em 0}#home-multi-book{margin:50px auto 0 auto}#home-multi-book .cover-image{display:inline;padding:0 3%}#home-multi-book .copy{width:50%;margin:0 auto;padding-top:1.5em;line-height:150%}#home-multi-book .copy .more{margin-top:1.5em}#home-image-and-text{margin:50px auto 0 auto}#home-image-and-text .general-image{display:inline-block;padding:0 3%}#home-image-and-text .general-image img{background:none;border:none}#home-image-and-text .copy{display:inline-block;width:50%;line-height:150%;vertical-align:top;padding-top:2em}#home-image-and-text .copy .more{margin-top:1.5em}#home-image{margin:50px auto 0 auto}#home-image img{background:none;border:none}.home-page #head ul.no-bullet li{list-style:none;list-style-image:none}.home-page #head ul.no-bullet li img{background:none;border:0}.home-page #push{background:#eaddb8 url(//pragprog.com/assets/push-background-61598df2388ce7b43ab38f1d7f858537.png) repeat-x 0 0;margin:-25px -25px 0px -25px;min-width:62em;padding:25px;text-align:center}.home-page #push a{color:#b95e56}.home-page #push a:visited{color:#9f79ac}.home-page #push a:hover,.home-page #push a:visited:hover{color:#d65554}.home-page #push table{margin:0 auto;text-align:left}.home-page #push table .thumbnail{padding-right:15px;width:85px}.home-page #push table .thumbnail img{box-shadow:1px 1px 3px #bfb59c;-moz-box-shadow:1px 1px 3px #bfb59c;-webkit-box-shadow:1px 1px 3px #bfb59c;padding:0px;margin:5px}.home-page #push table .description{padding-right:20px;min-width:11em}.home-page #front-page-news{background:#141;color:#ffa;margin:-22px -25px 22px -25px;padding:8px 25px;text-align:center;position:relative}.home-page #front-page-news .date{color:#ee9}.home-page #front-page-news a{color:#ffa;font-weight:bold}.home-page #search-bar{background:#a69f8c url(//pragprog.com/assets/bar-background-bd9b2cf8be1878b5a2a123eccfff64a7.png) repeat-x 0 0;margin:0px -25px 25px -25px;padding:8px 25px;text-align:center;position:relative}.home-page #search-bar table{margin-left:auto;margin-right:auto;text-align:left}.home-page #search-bar table td{vertical-align:top}.home-page #search-bar input.textbox{border:2px solid #fff;width:16em;margin:12px 0 3px 0}.home-page #search-bar button.go{background:url(//pragprog.com/assets/go-button-bar-592bb9fc695b27cdac911ad6e26ad7da.gif) no-repeat center center;width:39px;height:39px;margin:0;margin-top:5px;padding:0;position:static;cursor:pointer}.home-page #search-bar button.go span{display:none}.home-page #three-column{margin:0px -25px;position:relative;width:100%;display:inline-block}.home-page #three-column .column-wrapper{float:left;width:33%;padding-bottom:35px}.home-page #three-column .column{padding:0 25px;position:relative}.home-page #three-column .more{margin-bottom:0}.home-page #three-column .more a,.home-page #three-column .more a:visited{color:#B95E56}.home-page #three-column ul,.home-page #three-column li{list-style:none;list-style-image:none;margin-left:0;padding-left:0}.home-page #three-column li{background:url(//pragprog.com/assets/bullet-217bd22de2d43c49fd3f64f552933afb.gif) no-repeat 2px 0.4em;padding-left:18px}.home-page #three-column dl.events{padding-left:48px}.home-page #three-column dl.events dt{position:relative;font-weight:normal;margin-bottom:0;margin-top:.5em}.home-page #three-column dl.events dt img{background:none;border:0;padding:0;position:absolute;top:-3px;left:-48px}.home-page #three-column dl.events dd{margin:0.25em 0 1em 0}.home-page #three-column dl.events dd ul{margin:0}.home-page #three-column dl.events dd ul li{background:none;padding-left:0;margin-top:.15em;margin-bottom:.15em}.home-page #three-column #pragprogs{position:absolute;width:50px;line-height:32px;top:3.5em}.home-page #three-column #pragprogs img{padding:0}.home-page #three-column ul.faqs{padding-left:65px;min-height:132px}.login-page #content table.two-options{margin:25px auto}.login-page #content table.two-options td{width:26em;vertical-align:top}.login-page #content table.two-options td.or{background:url(//pragprog.com/assets/vertical-divider-5d124804ce4d9577f93a521329cefb2f.gif) repeat-y center center;color:#333;font-family:Garamond,"Times New Roman",Times,serif;font-size:260%;width:3em;text-align:center;vertical-align:middle}.login-page #content table.two-options td.or em{display:block;background-color:#eaddb8;padding-bottom:.15em}.login-page #content table.two-options input.wide{width:360px}.login-page #content table.two-options #password{width:10em}.login-page #content div.openid-login img{vertical-align:top;padding:0px;border:none}.login-page #content div.openid-login div.openid-text{display:inline-block;width:85%;padding-left:0.5em}.login-page #content div.openid-login div.openid-text span.hint{display:inline-block}#__idselector_button{display:none}input#identity_url,input#openid_identifier{background-image:url(//pragprog.com/assets/openid-14x14-c8f2959f67f9ce016d8d59cb53eebecd.png);background-repeat:no-repeat;background-position:2% center;padding-left:30px}input.openid{background:transparent url(//pragprog.com/assets/openid-14x14-c8f2959f67f9ce016d8d59cb53eebecd.png) no-repeat scroll 0pt 50%;padding-left:16px}#magazine-cover{position:absolute;top:65px;right:285px;width:204px;z-index:10}#magazine-cover{position:absolute;top:65px;right:285px;width:204px;z-index:10}#magazine-article-image{position:absolute;top:75px;right:305px;max-width:190px;z-index:10}img.magazine-cover{border:0;padding:0px;height:100%;max-width:190px;max-height:190px;box-shadow:6px 6px 6px #444;-moz-box-shadow:6px 6px 6px #444;-webkit-box-shadow:6px 6px 6px #444}.magazine-title h1,.magazine-title h2,.magazine-title h3{font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;color:#469}.magazine-summary li{margin-top:12pt}.magazine-summary .authors{font-style:italic;font-size:94%}.copyright-stuff{color:gray;text-align:right;font-size:60%;margin-top:3em;padding-top:0.2em;border-top:1px solid #ddd;width:70%;margin-right:1em;margin-left:auto}#sidebar .magazine-related{border:3px solid #c86}#sidebar .magazine-related h3{font-size:130%;margin-top:0;padding:0.3em 1em;background:#C86;color:#ffffff;margin-bottom:0.3em}#sidebar .magazine-related .magazine-related-content{padding:0 1em}#sidebar .toc .header{margin-top:1em;padding:0.7em 0;border-top:1px solid #c86;border-bottom:1px solid #c86}#sidebar .toc .header .cover-image img{border:none;background:none}#sidebar .toc .authors,#sidebar .toc .summary,#sidebar .toc .copyright-stuff,#sidebar .toc .table-of-contents{display:none}#sidebar .toc h1.title-and-date{font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:110%;font-weight:bold;margin:0.5em 0}#sidebar .toc h3{font-size:110%;font-weight:bold}#sidebar .toc .title{font-size:100%;font-weight:normal}#article{margin-top:3em}#article h1,#article h3{font-size:170%;color:#446699;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif}#article .articleinfo h1{margin:0 0 0.5em 0;font-size:220%}#article .articleinfo h3{margin:0;font-size:150%;border-bottom:solid 3px #ccc}#article p{line-height:1.7em}#article .authors{margin-top:0.3em;color:#446699}#article blockquote.editor-says{margin:1em 0 !important;font-size:90%;color:#446699;padding-left:1em;padding-right:1em;border-left:0.75em solid #d0d0e8}#article blockquote.about{margin:2em 10% 0 10%;border-top:1px solid #c86;border-bottom:1px solid #c86;font-size:85%;color:#446699}#article blockquote.about p{line-height:1.3em}#article .articleimage{clear:both;vertical-align:top;float:right;margin:0 0 1em 2em}#article .articleimage img{width:190px}#article .interview .question{margin-top:2em;clear:both;font-style:italic;color:#7a9}#article .interview .answer{margin-top:2em;clear:both}#article .interview .asker,#article .interview .responder{float:left;font-size:170%;margin:0 0.5em 0.5em 0}.related-products{display:none}span.comment{color:#115511;font-style:italic}span.kw{color:#111199;font-weight:bold}span.string{color:#555511;font-style:italic}span.ic{font-family:Lucidatypewriter,"Andale Mono","Courier New",monospace;font-size:larger;color:#488}span.emph{font-style:italic}ul.magazine-article-links{max-width:400px;list-style:none;list-style-image:none;margin:2em auto 0 auto;padding:0}ul.magazine-article-links li{display:inline;padding:5px 15px 5px 18px}ul.previous-next-links{padding:4px 0;background:#fdd;display:block;width:80%;list-style-type:none;margin-top:2em;margin-left:10%;border-top:1px solid #c86;border-bottom:1px solid #c86;font-size:80%;font-weight:bold}ul.previous-next-links li{display:inline}ul.previous-next-links li.previous:before{font-size:150%;content:"&#8656;";color:#a00;padding-left:0.5em}ul.previous-next-links li.next{float:right}ul.previous-next-links li.next:after{font-size:150%;content:" &#8658;";color:#a00;padding-right:0.5em}ul.previous-next-links a{text-decoration:none}#content ul.movie-list li{list-style-image:url(//pragprog.com/assets/movie_icon-f2cebd1b3f207bdd99caaadeca8659e3.gif);vertical-align:middle}#content div.checkbox-list{line-height:2em}#content div.checkbox-list .disabled{color:#999}#content table.podcasts.records td{vertical-align:top}#content table.podcasts.records td .date{margin:5pt 0 0.5em 0}#content table.podcasts.records td .link{margin-top:1em}#content table.podcasts.records td .link a{text-decoration:none}#content table.podcasts.records td .link a:hover{text-decoration:underline}#content .podcast-cover img{box-shadow:1px 1px 4px #999;-moz-box-shadow:1px 1px 4px #999;-webkit-box-shadow:1px 1px 4px #999;margin:4px;border:none;vertical-align:middle;background:none}.podcast-info div.stats{clear:both}.podcast-info .stats span{padding-left:15px;margin-right:20px;background:url(//pragprog.com/assets/bullet-217bd22de2d43c49fd3f64f552933afb.gif) no-repeat 0 center}.press-release-header{background:url(//pragprog.com/assets/press_release_plus_signs-7da1e5a681141ffd29a598ad616b1e89.png) repeat-x 0 center;text-align:center}.press-release-header span{font-family:Lucidatypewriter,"Andale Mono","Courier New",monospace;font-size:140%;font-weight:bold;background:white;padding-left:1em;padding-right:1em}.press-release-bib-block .book-image{float:right;margin-left:2em}.press-release-bib-block .bibinfo{font-size:80%;margin-top:0pt}.praise{font-style:italic;font-size:90%;margin-left:4em;margin-right:4em}.praise .said-by{text-align:right;margin-top:0px;padding:0px;font-style:normal}#search input.textbox{border-top:1px solid #9c9c9c;border-left:1px solid #9c9c9c;font-size:100%;padding-left:2px;margin-right:4px;width:216px}#search button.go{background:url(//pragprog.com/assets/go-button-sidebar-3da403931d9b403c5da62ffbe9626047.gif) no-repeat;border:0;cursor:pointer;position:absolute;width:34px;height:34px;margin:0;margin-top:-5px;padding:0}#search button.go span{display:none}#extras #search{position:absolute;top:86px;right:50px;margin:0;padding:0;padding-top:42px}#extras #search input.textbox{width:190px}#slate-single-column-layout #extras #search{width:204px}#two-column-layout #sidebar-wrapper{border-top:1px solid #847f6d;box-shadow:inset 0px 1px 2px #b6af95;-moz-box-shadow:inset 0px 1px 2px #b6af95;-webkit-box-shadow:inset 0px 1px 2px #b6af95;float:right;width:300px}#sidebar{padding:0 20px 20px 20px}#sidebar a:not(.orange){color:#b95e56}#sidebar a:not(.orange):hover{color:#d65554}#sidebar p{color:#555}#sidebar p strong{color:#444}#sidebar ul.menu,#sidebar ul.menu li{list-style:none;margin:0;padding:0}#sidebar ul.menu{margin:1em 0}#sidebar ul.menu li{display:inline}#sidebar ul.menu li a,#sidebar ul.menu li a:visited{border-top:1px #aca590 dotted;display:block;padding:4px;padding-top:6px;text-decoration:none}#sidebar ul.menu li a:hover,#sidebar ul.menu li a:visited:hover{background:#f2ead0}#sidebar ul.menu li.here a,#sidebar ul.menu li.here a:visited{background:#e8e0c3;font-weight:bold;color:#333}#sidebar ul.menu li.here a:hover,#sidebar ul.menu li.here a:visited:hover{background:#f2ead0}#sidebar ul.submenu li{display:block;text-decoration:none;font-size:90%}#sidebar ul.submenu li a{color:#B95E56}#sidebar table.book-list{width:100%;margin-bottom:10px}#sidebar table.book-list .thumbnail{width:52px}#sidebar table.book-list .thumbnail img{margin:10px 6px;-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.2);box-shadow:1px 1px 1px rgba(0,0,0,0.2);-moz-box-shadow:1px 1px 1px rgba(0,0,0,0.2);vertical-align:middle}#sidebar table.book-list .title,#sidebar table.book-list .authors,#sidebar table.book-list .short{display:block}#sidebar table.book-list .authors,#sidebar table.book-list .short{color:#898575;font-size:75%}#sidebar table.book-list td{border-top:1px #aca590 dotted;height:60px}#sidebar table.book-list td a{text-decoration:none;display:block;padding:4px 0 2px 0}#sidebar table.book-list .highlight td{background:#f2ead0;border-top:1px #aca590 dotted}#sidebar table.book-list .highlight td td a{color:#d65554}#sidebar .quotes,#sidebar .quotes li{margin:0;padding:0;list-style:none}#sidebar .quotes li{color:#666;border-top:1px #aca590 dotted;padding:10px 0;line-height:110%}#sidebar .quotes li div.quote p,#sidebar .quotes li .source,#sidebar .quotes li .title,#sidebar .quotes li .company{display:block;color:#898575}#sidebar .quotes li div.quote p:before{content:'\201C'}#sidebar .quotes li div.quote p:after{content:'\201D'}#sidebar .quotes li div.quote p{line-height:130%}#sidebar .quotes li strong{color:#696555}#sidebar .quotes li .source{color:#797565;margin-top:8px;margin-left:30%}#sidebar .quotes li .title,#sidebar .quotes li .company{font-size:80%;margin-left:34%}#sidebar .box{background-color:#f6edd3;padding:4px 15px;margin:25px 0px 10px 0px;width:auto}#sidebar table.profile-box{width:auto;border:0}#sidebar table.profile-box td{border:0;padding:12px 0}#sidebar table.profile-box td.picture img{background:white;border:1px solid #ccc;padding:2px}#sidebar table.profile-box td.name{padding-left:15px;font-size:130%}#sidebar table.profile-box td.name small{color:#666;font-weight:normal;font-size:70%}#sidebar table.profile-box .short{display:block}.user-profile{padding-top:2em}.user-profile td.picture{padding:2px}.user-profile tr td.profile-name{padding-left:3em}#content .wish-list-move{float:right;margin-top:2em;margin-right:3em;font-size:x-small;width:20em;text-align:right}#sortable_table .handle{font-size:x-small;color:#aaa}.orange,.button{line-height:150%;background-color:#cd7c27;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#dead3a), to(#cd7c27));background-image:-moz-linear-gradient(top, #dead3a, #cd7c27);background-image:-ms-linear-gradient(top, #dead3a, #cd7c27);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #dead3a), color-stop(100%, #cd7c27));background-image:-webkit-linear-gradient(top, #dead3a, #cd7c27);background-image:-o-linear-gradient(top, #dead3a, #cd7c27);background-image:linear-gradient(top, #dead3a, #cd7c27);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dead3a', endColorstr='#cd7c27', GradientType=0);border:2px solid #d48f2e;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;-moz-box-shadow:0px 1px 1px #666;-webkit-box-shadow:0px 1px 1px #666;box-shadow:0px 1px 1px #666;color:#fff;text-shadow:0px 1px 0px #777;font-size:15px;margin:0;padding:2px 12px;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif}.orange:hover,.button:hover{color:#fff;border-color:#daa135;background-color:#d59430;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#f1be48), to(#d59430));background-image:-moz-linear-gradient(top, #f1be48, #d59430);background-image:-ms-linear-gradient(top, #f1be48, #d59430);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f1be48), color-stop(100%, #d59430));background-image:-webkit-linear-gradient(top, #f1be48, #d59430);background-image:-o-linear-gradient(top, #f1be48, #d59430);background-image:linear-gradient(top, #f1be48, #d59430);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f1be48', endColorstr='#d59430', GradientType=0);opacity:1.0;cursor:pointer}.orange:active,.button:active{color:#fff;border-color:#ba791d;background:#cd832d;box-shadow:none}.orange.small,.button.small{font-size:9px;font-weight:normal;padding:3px 7px 2px 7px;margin:-3px 0px 0px 4px}.orange.wide,.button.wide{padding:2px 45px}a.orange,a.orange:visited{color:#fff;text-decoration:none;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif}a.orange:hover,a.orange:visited:hover{color:#fff}.round-rect{line-height:150%;vertical-align:top;margin:0;padding:5px 15px;border-radius:15px;-moz-border-radius:15px;-webkit-border-radius:15px;box-shadow:0px 1px 2px #333;-moz-box-shadow:0px 1px 2px #333;-webkit-box-shadow:0px 1px 2px #333;color:#fff;text-decoration:none;border:0}.round-rect.red{background:#96252C;padding:5px 15px 5px 10px}.round-rect.red:hover{background:#b9565b;cursor:pointer}.round-rect.red:active{background:#78171c;box-shadow:none}.round-rect.purple{background:#777baa url(//pragprog.com/assets/add-to-wishlist-2a0cd3f09e26c1a4ad1393f47d383625.gif) no-repeat;background-position:10px 4px;padding:5px 20px 5px 32px;margin-left:10px}.round-rect.purple:hover{background:#a4a7cb url(//pragprog.com/assets/add-to-wishlist-h-9bb6968c3cce49018d3b1b1b19a737b5.gif) no-repeat;background-position:10px 4px;cursor:pointer}.round-rect.purple:active{background:#656892 url(//pragprog.com/assets/add-to-wishlist-a-265aa50f205e3e03542f0e9cd7d2f706.gif) no-repeat;background-position:10px 4px;box-shadow:none}.round-rect.pale-red{background-color:#ab5d58;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#bb5d55), to(#ab5d58));background-image:-moz-linear-gradient(top, #bb5d55, #ab5d58);background-image:-ms-linear-gradient(top, #bb5d55, #ab5d58);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #bb5d55), color-stop(100%, #ab5d58));background-image:-webkit-linear-gradient(top, #bb5d55, #ab5d58);background-image:-o-linear-gradient(top, #bb5d55, #ab5d58);background-image:linear-gradient(top, #bb5d55, #ab5d58);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#bb5d55', endColorstr='#ab5d58', GradientType=0);color:#fff}.round-rect.pale-red:hover{background-color:#c26159;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#cd726c), to(#c26159));background-image:-moz-linear-gradient(top, #cd726c, #c26159);background-image:-ms-linear-gradient(top, #cd726c, #c26159);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #cd726c), color-stop(100%, #c26159));background-image:-webkit-linear-gradient(top, #cd726c, #c26159);background-image:-o-linear-gradient(top, #cd726c, #c26159);background-image:linear-gradient(top, #cd726c, #c26159);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cd726c', endColorstr='#c26159', GradientType=0);cursor:pointer}.round-rect.pale-red:active{background:#a35752;box-shadow:none}.round-rect.wide{padding:5px 45px}#content #foot .buttons{border-top:none;margin:1.5em 0;padding:0;clear:both}#content .button{display:inline-block}#content .buttons{border-top:3px solid #ccc;margin-top:3em;padding:1.5em 0}a{color:#0050b4}a:visited{color:#9456d1}a:hover,a:visited:hover{color:#d65554;text-decoration:none}body{font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:80%;color:black;background:white}h1,h2,h3,h4,h5,h6{font-family:"Bookman Old Style","Book Antiqua",Georgia,"Times New Roman",Times,serif;font-weight:normal;margin:0;padding:0;line-height:normal;color:#333}h1,h2,h3{letter-spacing:-.05em}li{line-height:1.3em;margin-bottom:.4em}.font-red{color:#BF4A45}.white{color:#ffffff}.black{color:#000000}.mid-grey{color:#444444}.semi-grey{color:#888}.l-grey{color:#aaa}.ital{font-style:italic}.by-line{font-size:70%;margin:0}.font-80{font-size:80%}.font-85{font-size:85%}.font-90{font-size:90%}.font-100{font-size:100%}.font-110{font-size:110%}.font-120{font-size:120%}.font-140{font-size:140%}.font-160{font-size:160%}.font-180{font-size:180%}.font-200{font-size:200%}.space{margin:20px}.space-left{margin-left:20%}.p-left{padding-left:1.5em}.space-top-right{margin:9px 6px 0 0}.space-top{margin-top:30px}.space-small-top{margin-top:10px}.space-bottom{margin-bottom:20px}.underline{border-bottom:solid 3px #ccc;margin-bottom:15px}.no-p-right{padding-right:0}.no-line{border:0;margin:0}span.new-line,block{display:block}.in-line{display:inline-block}.text-center{text-align:center}.text-right{text-align:right}.text-left{text-align:left}.title{margin:0;font-size:110%;font-weight:bold}.title small{color:#666;font-weight:normal}h1{font-size:240%;margin:40px 0 25px 0}.copy h1{margin:0;margin-bottom:12px}h2{font-size:160%}#head h2{margin:-25px 0 25px 0;font-size:125%;color:#746f62}h3{font-size:180%}h3 a{color:#000000;text-decoration:none}#sidebar h3{margin:25px 0 8px 0;font-style:italic}#sidebar h3 a{color:#000000}#cms-content h3,.magazine-summary h3{border-bottom:solid 3px #ccc;margin:30px 0 15px 0;font-size:200%}h4{border-bottom:solid 3px #ccc;margin:30px 0 15px 0;font-size:160%}h4 a{text-decoration:none;border:0;margin:0}div#category-view h4 span.small{font-size:75%;padding-left:0.7em}.wiki-page h1,.wiki-page h2,.wiki-page h3,.wiki-page h4{color:#987;border-bottom:solid 3px #ceccc4;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif}.wiki-page h1 a,.wiki-page h2 a,.wiki-page h3 a,.wiki-page h4 a{text-decoration:none}#content h5{font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:120%;font-weight:bold}p{line-height:1.3em;margin:1em 0}#content .buttons p{margin-top:0}#content .highlight.box p{margin:10px 0px}.category-index-description p{margin-top:0.3em;width:35em}p.hint{color:#666;display:block;font-size:90%;font-style:italic}p.hint.lighter{color:#999}.hint strong{color:black}p.address{white-space:pre;margin-left:2em;background:#f0f0e0;padding:0.5em}#head a,#head a:visited{color:#B85D55}#head .billboard a,#head .billboard a:visited{color:#fff}#head .header a{color:#b85d55}#head .header a:visited{color:#9f79ac}#head .header a:visited:hover{color:#d65554}#head .header a:hover{color:#d65554}.more a,.more a:visited{color:#B95E56}span.link{padding-left:1em}form{padding:0;margin:0}#content form label{display:block;font-size:115%;color:#333}#content form label.required{font-weight:bold}#content form label.inline{display:inline}#content form select{font-size:120%}#content form input.textbox{font-size:100%}#content form input.large.textbox{font-size:120%}#content form textarea.large{font-size:120%;width:auto;background:white}#content form .hint{color:#666;display:block;font-size:90%;font-style:italic}#content form .importantHint{color:#333;display:block;font-size:120%;font-style:bold}#content form dl.options{margin:0}#content form dl.options dt{color:#333;font-weight:bold;margin-top:1em 0 0.1em 0}#content form dl.options dt small{font-weight:normal;color:#444}#content form dl.options dd{color:#777;font-style:italic;margin:0.1em 0 1em 1.5em}#content form dl.options .warning{color:#ff5554}#content form span.error-with-field span.error{display:block;color:#d65554}#content fieldset{border:0;margin:15px 0 3px 0;padding:3px 20px 6px 20px}#content fieldset.buttons{background:none}#content fieldset legend{font-size:1.3em;font-weight:bold;color:#C05B56}#content fieldset.no-heading{margin-top:2em}#content fieldset.hint{margin-top:4em;color:#666;display:block;font-size:90%;font-style:italic}#content fieldset.hint code{color:#333;font-style:normal}#content form .set{float:left;width:100%;padding-bottom:1em}#content form .set p{float:left;margin-right:10px}#content form .group{margin:1em 0 0.5em 0}#content form .group p{margin:0 0 0.5em 0}#content form .group .set{padding-bottom:1px}#content form .fieldset{margin:0.75em 0 0.57em 0}#content form .fieldset td,#content form .fieldset th{padding:0.25em 0}#content form .fieldset th{padding-right:.75em;text-align:right}#flash_notice,#flash_warning,#flash_error{border-top:3px solid silver;border-bottom:3px solid silver;margin:-22px -25px 22px -25px;text-align:center}#flash_captcha_error{border-top:3px solid silver;border-bottom:3px solid silver;text-align:center}body.title-index-page #flash_notice,body.title-index-page #flash_warning,body.title-index-page #flash_error,body.login-page #flash_notice,body.login-page #flash_warning,body.login-page #flash_error{margin:0}#flash_notice p,#flash_warning p,#flash_error p{padding:0 25px}#flash_notice{border-top-color:#5abd7b;border-bottom-color:#5abd7b;background-color:#20a64c;color:white}#flash_warning{border-top-color:#f0d38b;border-bottom-color:#f0d38b;background-color:#e1b445;color:white}#flash_error,#flash_captcha_error{border-top-color:#f1948c;border-bottom-color:#f1948c;background-color:#d9715d;color:white}#newCheckout{max-width:650px;position:relative;text-align:left}#newCheckout .login_box{background:#484848;position:absolute;right:-10px;margin-top:-10px;margin-top:15px\9;padding:10px;border-radius:4px;-moz-box-shadow:0px 2px 5px #000;-webkit-box-shadow:0px 2px 5px #000;box-shadow:0px 2px 5px #000;width:300px}#newCheckout .login_box form input{margin-bottom:10px}#newCheckout .login_box button.login{width:110px}#newCheckout .login_box hr{border-color:#555}#newCheckout p{line-height:normal;margin:0px}#newCheckout .login_box a,#newCheckout .login_box a:visited{color:#ccc}#newCheckout .login_box a.toggle,#newCheckout .login_box a.toggle:visited{color:#ffffff}#braintreePayment h3:first-letter{background:none;font-size:22px;color:#666666;margin:0px;padding:0px;line-height:normal}#braintreePayment .editing h3:first-letter{color:#333}#newCheckout .thanksBox h3:first-letter,#newCheckout .thanksSignUp h3:first-letter{background:none;color:#333;padding:0px;margin:0px}#newCheckout .thanksBox h3,#newCheckout .thanksSignUp h3{color:#333;border-bottom:dotted 1px #aca590}#newCheckout h3:first-letter{color:#666666;background:#cccccc;border-radius:50px;padding:3px 10px;font-size:19px;line-height:19px}#newCheckout .editing h3:first-letter,#newCheckout #orderSummary.displaying h3:first-letter{color:#F1DC9E;background:#333}#newCheckout h3{background:none;font-size:22px;color:#666666;margin:0px;padding:10px}#newCheckout .editing h3,#newCheckout .displaying h3{border-bottom:dotted 1px #aca590}#newCheckout .editing h3,#newCheckout #orderSummary.displaying h3{color:#333}#newCheckout span.lil{font-size:13px;color:#666;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;letter-spacing:0px;line-height:30px;display:inline;position:absolute;text-align:right;width:100%;right:0;margin-right:10px}#newCheckout .displaying span.lil{display:none}#newCheckout span.lil a{color:#DC8F53;font-family:"Bookman Old Style","Book Antiqua",Georgia,"Times New Roman",Times,serif;font-weight:bold;font-size:16px;text-decoration:underline;padding:5px 8px}#newCheckout span.lil a:hover{color:#FFA765;cursor:pointer}#newCheckout span.lil a:active{color:#BC7D4C}#newCheckout span.lil a.active{background:#484848;border-radius:4px 4px 0px 0px;color:#ffffff}#newCheckout span.go_back a.difPay{color:#444;text-decoration:underline}#newCheckout span.go_back a.difPay:hover{text-decoration:none;color:#444}#newCheckout h3 span.go_back{display:inline;text-align:right}#newCheckout span.go_back a,#newCheckout span.go_back a:visited{font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:13px;color:#444;line-height:28px}#newCheckout fieldset{background:none;border:0;margin:0px;padding:0px;margin-bottom:10px;width:100%}#newCheckout fieldset.actions{padding-top:15px;border-top:dotted 1px #aca590;margin:15px 0px 0px 0px}#newCheckout .displaying p{margin:0px;font-size:14px}.checkout-box,.order-summary,.thanksBox,.thanksSignUp{background:#F7F7F6;background:#F0F0ED\9;border-radius:4px;-moz-box-shadow:inset 0px 1px 3px #ccc;-webkit-box-shadow:inset 0px 1px 3px #ccc;box-shadow:inset 0px 1px 3px #ccc;padding-bottom:10px;margin-bottom:20px}#flash_error{background:#D9715D;border-radius:4px;max-width:650px;margin:0px;margin-bottom:20px;border:0px;-moz-box-shadow:inset 0px 1px 3px #900;-webkit-box-shadow:inset 0px 1px 3px #900;box-shadow:inset 0px 1px 3px #900;padding:5px 0px}.thanksBox{background:#F8F0DA}#newCheckout table#orderSummary form.addCoupon .submitCoupon,#newCheckout table#orderSummary form.addID .submitCoupon{float:right}button.yellow-submit,button#submit-button.submit,#newCheckout form input#cart_submit,#newCheckout form input#free_submit,.login_box button.login,#newCheckout table#orderSummary form.addCoupon .submitCoupon,#newCheckout table#orderSummary form.addID .submitCoupon,#newCheckout .thanksSignUp input#user_submit{background:#F0E5C6;border-radius:2px;border:1px solid #d2c2a6;-moz-box-shadow:inset 0px 1px 1px #fff;-webkit-box-shadow:inset 0px 1px 1px #fff;box-shadow:inset 0px 1px 1px #fff;padding:4px 10px;font-size:13px;font-weight:bold;color:#524E48;text-shadow:0px 1px 0px #fff;height:auto;width:auto}button.yellow-submit:hover,button#submit-button.submit:hover,#newCheckout form input#cart_submit:hover,#newCheckout form input#free_submit:hover,.login_box button.login:hover,#newCheckout table#orderSummary form.addCoupon .submitCoupon:hover,#newCheckout table#orderSummary form.addID .submitCoupon:hover,#newCheckout .thanksSignUp input#user_submit:hover{background:#F8F0DD;cursor:pointer}button.yellow-submit:active,button#submit-button.submit:active,#newCheckout form input#cart_submit:active,#newCheckout form input#free_submit:active,.login_box button.login:active,#newCheckout table#orderSummary form.addCoupon .submitCoupon:active,#newCheckout table#orderSummary form.addID .submitCoupon:active,#newCheckout .thanksSignUp input#user_submit:active{background:#E1D6B6;text-shadow:none;-moz-box-shadow:inset 0px 1px 1px #bbb;-webkit-box-shadow:inset 0px 1px 1px #bbb;box-shadow:inset 0px 1px 1px #bbb}#newCheckout .edit,#newCheckout .display,#newCheckout .thanksSignUp form.formtastic{margin-top:10px;padding:0px 15px}#newCheckout .edit,#newCheckout .display{background:#F0F0ED\9;margin:0px;padding:10px 15px}#newCheckout .buttons{border-top:dotted 1px #aca590;margin:0px;padding:4px;padding-top:10px}#newCheckout .buttons p{margin-top:0;font-weight:normal;color:#444;margin-bottom:10px}#newCheckout .login_box form label{display:none}#newCheckout #myDetails form label,#newCheckout #recipientDetails form label,#newCheckout #braintreePayment form label{display:none;float:none;text-align:left}#newCheckout form input:not(.orange){border-radius:2px;border:1px solid #e7e7e7;border:1px solid #ccc \9;height:25px;padding:0px 5px;width:95%;max-width:350px}#newCheckout form input.orange{margin:0;padding:2px 12px}#newCheckout form input.orange:hover{cursor:pointer}#newCheckout form select,button#submit-button.yellow-submit{font-size:100%}#newCheckout #recipientDetails.checkout-box.editing p{font-size:13px;color:#666}#newCheckout #recipientDetails.checkout-box.editing p.inline-errors{color:#C00}#newCheckout form.formtastic fieldset>ol>li#cart_ship_state_input,#newCheckout li#cart_state_input,#newCheckout li#cart_zip_input,#newCheckout form.formtastic fieldset>ol>li#cart_ship_zip_input{display:inline;line-height:34px}#newCheckout form input#cart_ship_state,#newCheckout form input#cart_ship_zip,#newCheckout form input#cart_state,#newCheckout form input#cart_zip{width:44%;max-width:165px}#newCheckout form.formtastic fieldset>ol>li{padding:5px 2px;margin:0px}#newCheckout form legend label,#newCheckout .thanksSignUp form label{display:none;float:none}#newCheckout .thanksSignUp form .boolean label{display:block;padding-left:10px;margin:0px;font-size:14px;color:#333}#newCheckout form.formtastic fieldset>ol>li fieldset ol{width:90%;margin:0px;padding:0px}#newCheckout form input[type="radio"]{width:auto;height:auto;margin:10px 10px 10px 0px;float:left}#newCheckout .thanksSignUp form input[type="checkbox"]{width:auto;height:auto;margin:5px 10px 0px 0px;float:left}#newCheckout .thanksSignUp #flash_error{margin-bottom:0px;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none}#newCheckout form.formtastic fieldset>ol>li#user_notify_using_email_input{margin-top:20px}#newCheckout .choice label{width:90%}#newCheckout .choice span.estimate{font-size:13px;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;color:#999;font-style:italic;display:block}#newCheckout .choice small.disclaimer{font-size:10px;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;color:#999;font-style:italic;display:block}#newCheckout table#orderSummary{width:100%;border-spacing:0px}#newCheckout table#orderSummary tr.itemSummary td{border-bottom:1px solid #ccc;-moz-box-shadow:0px 1px 0px #fff;-webkit-box-shadow:0px 1px 0px #fff;box-shadow:0px 1px 0px #fff;padding:10px 0px}#newCheckout table#orderSummary tr.totals td.totalPrice{font-size:20px;font-weight:bold;border-top:1px solid #fff;-moz-box-shadow:0px -1px 0px #ccc;-webkit-box-shadow:0px -1px 0px #ccc;box-shadow:0px -1px 0px #ccc;line-height:28px}#newCheckout table#orderSummary tr.totals td{float:right;text-align:right;padding-top:7px}#newCheckout table#orderSummary td.priceSummary{text-align:right;float:none !important;width:100px}#newCheckout table#orderSummary tr.itemSummary td p.title{color:#B85E52;font-weight:bold;font-size:15px}#newCheckout table#orderSummary tr.itemSummary td p.title span.quantity{color:#666;font-weight:normal;font-size:14px}#newCheckout table#orderSummary tr.itemSummary td p.title span.author{color:#666;font-weight:normal;font-size:14px}#newCheckout table#orderSummary a,#newCheckout table#orderSummary a:visited{color:#666;font-size:13px;text-decoration:underline;padding:5px 5px 0px 5px;margin-left:5px}#newCheckout table#orderSummary a:hover{color:#999}#newCheckout table#orderSummary a:active{color:#333}#newCheckout table#orderSummary #addCoupon a,#newCheckout table#orderSummary #addCoupon a:visited{color:#3399FF;text-decoration:underline;padding:0px;text-align:right;margin:0px;font-size:14px}#newCheckout table#orderSummary #addCoupon a:hover{text-decoration:none}#newCheckout table#orderSummary #addCoupon a.active,#newCheckout table#orderSummary #addID a.active{color:#666;background:#fff;border-radius:4px 4px 0px 0px;text-decoration:none}#newCheckout table#orderSummary form.addCoupon,#newCheckout table#orderSummary form.addID{background:#fff;position:absolute;border-radius:4px;-moz-box-shadow:0px 2px 3px #333;-webkit-box-shadow:0px 2px 3px #333;box-shadow:0px 2px 3px #333;width:255px;text-align:left;font-size:13px;color:#666;margin-top:-25px;padding:0px 10px 10px 10px}#newCheckout table#orderSummary form.addCoupon{right:-10px}#newCheckout table#orderSummary form.addCoupon #coupon{padding:0px 5px;margin-bottom:5px;font-size:100%}#newCheckout table#orderSummary form.addCoupon h5,#newCheckout table#orderSummary form.addID h5{font-weight:normal;margin:0px -10px 10px -10px;font-size:13px;color:#333;border-bottom:dotted 1px #aca590;height:19px;line-height:35px;padding-bottom:8px;padding-left:10px}#newCheckout table#orderSummary form a.closeImage,#newCheckout table#orderSummary #addCoupon a.closeImage{background:url(//pragprog.com/assets/close-button-113efc15a447ca6c8ee7624434e81923.png) no-repeat 0px 0px;border:0px;width:19px;height:19px;padding:0px;margin:4px 3px;float:right}#newCheckout table#orderSummary form a.closeImage:hover,#newCheckout table#orderSummary #addCoupon a.closeImage:hover{background:url(//pragprog.com/assets/close-button-113efc15a447ca6c8ee7624434e81923.png) no-repeat -19px 0px}#newCheckout table#orderSummary form.addCoupon p,#newCheckout table#orderSummary form.addID p{font-size:13px;margin-top:10px}#newCheckout #orderSummary .paymentOption{float:left;text-align:center;width:33%;border-right:dotted 1px #aca590}#newCheckout #orderSummary .paymentOption:last-of-type{border-right:0px}#newCheckout #orderSummary .paymentOptions{height:80px;margin-top:15px;padding-top:15px;border-top:1px dotted #aca590}#newCheckout #orderSummary .paymentOptions img.paymentImage{background:none;background:#FAF4E2;border-radius:2px;border:1px solid #cdc0a5;border-top:1px solid #e9d8ba;box-shadow:inset 0px 1px 1px #fff,0px 1px 1px #ccc;-moz-box-shadow:inset 0px 1px 1px #fff,0px 1px 1px #ccc;-webkit-box-shadow:inset 0px 1px 1px #fff,0px 1px 1px #ccc;padding:4px 10px 2px 10px;width:70%}#newCheckout #orderSummary .paymentOptions img.paymentImage:hover{background:#FDFBF5}#newCheckout #orderSummary .paymentOptions img.paymentImage:active{background:#F0EAD6;border:1px solid #ccc;box-shadow:inset 0px 1px 2px #333,0px 1px 0px #fff;-moz-box-shadow:inset 0px 1px 2px #333,0px 1px 0px #fff;-webkit-box-shadow:inset 0px 1px 2px #333,0px 1px 0px #fff}#newCheckout #braintreePayment form .fieldset th{padding:0px}#newCheckout #braintreePayment form input.textbox{margin-top:10px}#newCheckout #braintreePayment form input.textbox#ccexp{width:110px}#newCheckout #braintreePayment form input#cvv.textbox{width:105px}#newCheckout #braintreePayment table td{margin:0px;padding:0px}#creditCardForm table.fieldset{width:100%}.goBack{display:none}div.displaying .goBack{display:block}.checkout-buttons a,.checkout-buttons a:visited{color:#666;text-decoration:underline}.checkout-buttons a:hover{text-decoration:none}.checkout-buttons a:active{color:#333}.checkout-buttons span{padding:0px 5px}#newCheckout span.error{color:#C00}#newCheckout .buttons button.orange{font-size:15px}#newCheckout .buttons button.orange:hover{opacity:1.0}#content button#check-out-buttonNew:hover{opacity:1.0}#content .checkout-buttons{padding-top:20px}input.placeholder,textarea.placeholder{color:#999}form.formtastic,form.formtastic ul,form.formtastic ol,form.formtastic li,form.formtastic fieldset,form.formtastic legend,form.formtastic input,form.formtastic textarea,form.formtastic select,form.formtastic p{margin:0;padding:0}form.formtastic fieldset{border:0}form.formtastic em,form.formtastic strong{font-style:normal;font-weight:normal}form.formtastic ol,form.formtastic ul{list-style:none}form.formtastic abbr,form.formtastic acronym{border:0;font-variant:normal}form.formtastic input,form.formtastic textarea,form.formtastic select{font-family:inherit;font-size:inherit;font-weight:inherit}form.formtastic input,form.formtastic textarea,form.formtastic select{font-size:100%}form.formtastic legend{white-space:normal;color:#000}form.formtastic ul.errors{color:#cc0000;margin:0.5em 0 1.5em 25%;list-style:square}form.formtastic ul.errors li{padding:0;border:none;display:list-item}form.formtastic fieldset{overflow:hidden}form.formtastic fieldset.buttons{padding-left:25%}form.formtastic fieldset.buttons li{float:left;padding-right:0.5em}form.formtastic fieldset>ol>li{padding:0.5em 0;margin-top:-0.5em;margin-bottom:1em}form.formtastic fieldset>ol>li{overflow:hidden}form.formtastic fieldset>ol>li label{display:block;width:25%;float:left;padding-top:.2em}form.formtastic fieldset>ol>li>li label{line-height:100%;padding-top:0}form.formtastic fieldset>ol>li>li label input{line-height:100%;vertical-align:middle;margin-top:-0.1em}form.formtastic fieldset>ol>li fieldset{position:relative}form.formtastic fieldset>ol>li fieldset legend{position:absolute;width:95%;left:0px}form.formtastic fieldset>ol>li fieldset legend span{position:absolute}form.formtastic fieldset>ol>li fieldset legend.label label{position:absolute}form.formtastic fieldset>ol>li fieldset ol{float:left;width:74%;margin:0;padding:0 0 0 25%}form.formtastic fieldset>ol>li fieldset ol li{padding:0;border:0}form.formtastic fieldset>ol>li p.inline-hints{color:#666;margin:0.5em 0 0 25%}form.formtastic fieldset>ol>li p.inline-errors{color:#cc0000;margin:0.5em 0 0 25%}form.formtastic fieldset>ol>li ul.errors{color:#cc0000;margin:0.5em 0 0 25%;list-style:square}form.formtastic fieldset>ol>li ul.errors li{padding:0;border:none;display:list-item}form.formtastic fieldset>ol>li.string input,form.formtastic fieldset>ol>li.password input,form.formtastic fieldset>ol>li.numeric input,form.formtastic fieldset>ol>li.email input,form.formtastic fieldset>ol>li.url input,form.formtastic fieldset>ol>li.phone input,form.formtastic fieldset>ol>li.search input{width:72%}form.formtastic fieldset>ol>li.string input[size],form.formtastic fieldset>ol>li.password input[size],form.formtastic fieldset>ol>li.numeric input[size],form.formtastic fieldset>ol>li.email input[size],form.formtastic fieldset>ol>li.url input[size],form.formtastic fieldset>ol>li.phone input[size],form.formtastic fieldset>ol>li.search input[size]{width:auto;max-width:72%}form.formtastic fieldset>ol>li.text textarea{width:72%}form.formtastic fieldset>ol>li.text textarea[cols]{width:auto;max-width:72%}form.formtastic fieldset ol li.hidden{display:none}form.formtastic fieldset>ol>li.boolean label{padding-left:25%;width:auto}form.formtastic fieldset>ol>li.boolean label input{margin:0 0.5em 0 0.2em}form.formtastic fieldset>ol>li.radio fieldset{overflow:visible}form.formtastic fieldset>ol>li.radio fieldset ol{margin-bottom:-0.5em}form.formtastic fieldset>ol>li.radio fieldset ol li{margin:0.1em 0 0.5em 0;overflow:visible}form.formtastic fieldset>ol>li.radio fieldset ol li label{float:none;width:100%}form.formtastic fieldset>ol>li.radio fieldset ol li label input{margin-right:0.2em}form.formtastic fieldset>ol>li.check_boxes fieldset{overflow:visible}form.formtastic fieldset>ol>li.check_boxes fieldset ol{margin-bottom:-0.5em}form.formtastic fieldset>ol>li.check_boxes fieldset ol li{margin:0.1em 0 0.5em 0;overflow:visible}form.formtastic fieldset>ol>li.check_boxes fieldset ol li label{float:none;width:100%}form.formtastic fieldset>ol>li.check_boxes fieldset ol li label input{margin-right:0.2em}form.formtastic fieldset>ol>li.date fieldset ol li,form.formtastic fieldset>ol>li.time fieldset ol li,form.formtastic fieldset>ol>li.datetime fieldset ol li{float:left;width:auto;margin:0 0.3em 0 0}form.formtastic fieldset>ol>li.date fieldset ol li label,form.formtastic fieldset>ol>li.time fieldset ol li label,form.formtastic fieldset>ol>li.datetime fieldset ol li label{display:none}form.formtastic fieldset>ol>li.date fieldset ol li label input,form.formtastic fieldset>ol>li.time fieldset ol li label input,form.formtastic fieldset>ol>li.datetime fieldset ol li label input{display:inline;margin:0;padding:0}form.formtastic fieldset>ol>li p.inline-errors{display:inline;margin:0px}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute !important;clip:rect(1px 1px 1px 1px);clip:rect(1px, 1px, 1px, 1px)}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{zoom:1}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(//pragprog.com/assets/ui-bg_glass_75_ffffff_1x400-54d8896e6ca3084ccc7b4225d5af8d73.png) 50% 50% repeat-x;color:#222222}.ui-widget-content a{color:#222222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(//pragprog.com/assets/ui-bg_highlight-soft_75_cccccc_1x100-cec5c56503b8480f834c3fce35dae8df.png) 50% 50% repeat-x;color:#222222;font-weight:bold}.ui-widget-header a{color:#222222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(//pragprog.com/assets/ui-bg_glass_75_e6e6e6_1x400-48d8d545f708e5870a965ce9df8b0e38.png) 50% 50% repeat-x;font-weight:normal;color:#555555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(//pragprog.com/assets/ui-bg_glass_75_dadada_1x400-d618461418b1ebc6b7996979f4c3dc92.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(//pragprog.com/assets/ui-bg_glass_65_ffffff_1x400-ddb7ee7527bff283054406c50e597e1e.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-widget :active{outline:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(//pragprog.com/assets/ui-bg_glass_55_fbf9ee_1x400-38c2dea4d046fd3f56cc3996e2e6018b.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(//pragprog.com/assets/ui-bg_inset-soft_95_fef1ec_1x100-a4dfa9457f568c5e9bb3a4ed48266d92.png) 50% bottom repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-icon{width:16px;height:16px;background-image:url(//pragprog.com/assets/ui-icons_222222_256x240-66e635a2f90b9f90675d402617630b24.png)}.ui-widget-content .ui-icon{background-image:url(//pragprog.com/assets/ui-icons_222222_256x240-66e635a2f90b9f90675d402617630b24.png)}.ui-widget-header .ui-icon{background-image:url(//pragprog.com/assets/ui-icons_222222_256x240-66e635a2f90b9f90675d402617630b24.png)}.ui-state-default .ui-icon{background-image:url(//pragprog.com/assets/ui-icons_888888_256x240-95fd3047e1f7325d995a21c729b04125.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(//pragprog.com/assets/ui-icons_454545_256x240-5c7f12676bcead9cb2d4cb8f23f16e95.png)}.ui-state-active .ui-icon{background-image:url(//pragprog.com/assets/ui-icons_454545_256x240-5c7f12676bcead9cb2d4cb8f23f16e95.png)}.ui-state-highlight .ui-icon{background-image:url(//pragprog.com/assets/ui-icons_2e83ff_256x240-2ea4c160a75c1992daa2eeac86255b99.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(//pragprog.com/assets/ui-icons_cd0a0a_256x240-c0c1ec6a8bcf48fec40303e975a4dfa6.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-off{background-position:-96px -144px}.ui-icon-radio-on{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(//pragprog.com/assets/ui-bg_flat_0_aaaaaa_40x100-7d1197a52442bc56fcad60d0390f4b32.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(//pragprog.com/assets/ui-bg_flat_0_aaaaaa_40x100-7d1197a52442bc56fcad60d0390f4b32.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;z-index:99999;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-accordion{width:100%}.ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1}.ui-accordion .ui-accordion-li-fix{display:inline}.ui-accordion .ui-accordion-header-active{border-bottom:0 !important}.ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:0.5em 0.5em 0.5em 0.7em}.ui-accordion-icons .ui-accordion-header a{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1}.ui-accordion .ui-accordion-content-active{display:block}.ui-autocomplete{position:absolute;cursor:default}* html .ui-autocomplete{width:1px}.ui-menu{list-style:none;padding:2px;margin:0;display:block;float:left}.ui-menu .ui-menu{margin-top:-3px}.ui-menu .ui-menu-item{margin:0;padding:0;zoom:1;float:left;clear:left;width:100%}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:0.2em 0.4em;line-height:1.5;zoom:1}.ui-menu .ui-menu-item a.ui-state-hover,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-button{display:inline-block;position:relative;padding:0;margin-right:.1em;text-decoration:none !important;cursor:pointer;text-align:center;zoom:1;overflow:visible}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:1.4}.ui-button-text-only .ui-button-text{padding:0.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:0.4em 1em 0.4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:0.4em 2.1em 0.4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:0.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-dialog{position:absolute;padding:.2em;width:300px;overflow:hidden}.ui-dialog .ui-dialog-titlebar{padding:0.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:0.1em 16px 0.1em 0}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:19px;margin:-10px 0 0 0;padding:1px;height:18px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin:1px}.ui-dialog .ui-dialog-titlebar-close:hover,.ui-dialog .ui-dialog-titlebar-close:focus{padding:0}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:0.5em 1em;background:none;overflow:auto;zoom:1}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin:0.5em 0 0 0;padding:0.3em 1em 0.5em 0.4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:0.5em 0.4em 0.5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:14px;height:14px;right:3px;bottom:3px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-tabs{position:relative;padding:.2em;zoom:1}.ui-tabs .ui-tabs-nav{margin:0;padding:0.2em 0.2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:1px;margin:0 0.2em 1px 0;border-bottom:0 !important;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:0.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-selected{margin-bottom:0;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-selected a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-state-processing a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tabs .ui-tabs-hide{display:none !important}.ui-datepicker{width:17em;padding:0.2em 0.2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:0.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 0.4em}.ui-datepicker th{padding:0.7em 0.3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:0.7em 0 0 0;padding:0 0.2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:0.5em 0.2em 0.4em;cursor:pointer;padding:0.2em 0.6em 0.3em 0.6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto 0.4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0em}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker-cover{display:none;display/**/:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.erratahdr td{background:#272;color:#afa}.existing-errata{border:1px solid blue;background:#ccccff;color:#111155;padding:1em}.errata-TYPO{padding:5px;margin-right:5px;background:#ebb}.errata-SUGGEST{padding:5px;margin-right:5px;background:#beb}.errata-ERROR{padding:5px;margin-right:5px;background:#dad}.errata-OK{padding:5px;margin-right:5px;color:#555;background:#ccc}.errata-DEFER{padding:5px;margin-right:5px;background:#acf}.fixed-TYPO{color:#555;background:#fee}.fixed-SUGGEST{color:#555;background:#efe}.fixed-ERROR{color:#555;background:#fdf}.fixed-OK{color:#888;background:#eee}.fixed-DEFER{color:#555;background:#cdf}.erratakeyline{font-size:smaller}.errata-fixed-in{font-size:70%;line-height:120%;text-align:right;color:#555}.errata-table-printable{border:1px solid #000}.errata-table tr{border-bottom:2px solid #fff}.printable-version{text-align:right}.cms-carousel{height:155px;margin:24px auto;overflow:hidden;position:relative;width:140px}.cms-carousel .slide-container{height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.cms-carousel .slide-container img{position:absolute}.cms-carousel .slide-caption{display:none}.cms-carousel .slides{display:none}.cms-carousel-holder h3{text-align:center;font-size:130% !important;margin-top:0em 1em !important;color:#999;border-bottom:none !important;border-top:2px solid #ccc}#method-paypal,#method-dwolla,#method-check{display:none}#author-name-fields li,#author_company_fields li{display:inline-block;margin-right:1em}#author-name-fields li label,#author_company_fields li label{display:none;width:0px}#author-name-fields li input,#author_company_fields li input{width:auto}#author-name-fields li p.inline-hints,#author_company_fields li p.inline-hints{margin:0pt;font-size:60%}#author_rest_of_address_input label,#author_rest_of_address_input textarea{display:block}#author_rest_of_address_input label{float:none;margin-bottom:0.25em}#author_rest_of_address_input textarea{padding:0.25em 0.5em;line-height:150%}#address-example{padding-left:24em;top:-1em}#address-example .address{white-space:pre;width:auto;padding:0.5em 1em;margin-top:0.5em;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;background:#ddd;border:2px solid #aaa}p.horizontal-buttons{margin-top:1em !important}p.horizontal-buttons label{display:inline !important;margin-top:0pt}p.horizontal-buttons input{margin-left:0.5em;margin-right:3em}#tin-entry label,#tin-entry input{float:none;display:block;margin-top:0.5em;width:auto}#tin-entry label{font-size:90%}#tin-entry p{margin-top:1em;font-size:100%}p.warning{font-weight:bold;color:#800;background:white;padding:0.5em 2em;border:solid 2px #800}div.meta-buy-now-widget{border:3px solid #8a8;background:white;padding:0em;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;float:left;text-align:center;margin:0em 0em 2em 2em}div.meta-buy-now-widget .actual-buy-now-widget{margin:0.5em 1em 0.5em 1em}div.meta-buy-now-widget .link{width:186px;padding:0px 0.25em;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;background:#8a8;color:#e0ffe0;margin-left:-2px;margin-right:-2px;margin-bottom:-2px}div.meta-buy-now-widget .link:hover{font-weight:bold;color:white}#buy-now-popup{color:#335;background:#cce;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;display:none;padding:10px 2em;position:absolute;z-index:1000;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;box-shadow:2px 3px 6px #446;-moz-box-shadow:2px 3px 6px #446;-webkit-box-shadow:2px 3px 6px #446}#buy-now-popup #close-buy-now-popup{display:block;float:right;width:1em;height:1em;font-size:smaller;padding:0px;margin:0px;background:#7a7;text-align:center}#buy-now-popup #close-buy-now-popup:hover{color:white}#buy-now-popup #popup-link{display:block;clear:both;padding:0em 1em;color:#113;background:#cce;border:1px solid #eef;width:95%;height:6em;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;box-shadow:2px 3px 6px #446;-moz-box-shadow:2px 3px 6px #446;-webkit-box-shadow:2px 3px 6px #446}#buy-now-popup #explanation{font-size:smaller;margin-top:1em}#author_calendar_item_start_date,.narrow-date-column{width:8em}.aci-in-the-past{color:#88a}.overall-author-calendar dt.month{font-weight:bold;font-size:larger;color:#353}.overall-author-calendar dd dl dt.da .d{width:7em;display:inline-block}.overall-author-calendar dd dl dt.da .a{font-weight:bold}.overall-author-calendar dd dl dd{padding-left:6em;padding-bottom:1em}.author-errata-list h1{font-size:140%;margin-top:1.5em;margin-bottom:0.5em}.author-errata-list label{display:inline-block;width:11em}body{padding:0;margin:0;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:80%;background-color:#858072;color:#ffffff}.clear{clear:both;overflow:hidden;height:0;display:block}.left{float:left}.right{float:right}.highlight{background:#ffc}.hidden{display:none}.no-margin{margin:0}#logo{position:absolute;left:25px;z-index:1}#logo a{background:url(//pragprog.com/assets/logo-screen2-de392acb922495a086d5dcb3dbb76e22.gif) no-repeat 0 0;display:block;width:275px;height:113px;cursor:pointer}#logo a:hover{background:url(//pragprog.com/assets/logo-screen2-de392acb922495a086d5dcb3dbb76e22.gif) no-repeat 0 -114px}#logo img{display:none;border:0}#navigation{background-color:#333;border-bottom:10px solid #d2c2a6;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:100%;height:86px;text-align:right;overflow:hidden}#navigation .drm-free{position:absolute;left:320px;top:2px}#navigation .drm-free img{background:transparent;border:none}#navigation #nav-area{float:right;margin-left:400px}#navigation .login{margin-top:30px;padding-right:25px}.newsletter-popup-div{display:none;width:20em;background:#426746 !important;color:#ccc;text-align:center;padding:1em}.newsletter-popup-div a{color:#aad}#signup-not-logged-in form label{display:block;width:5.5em;float:left;font-weight:bold;font-size:85%;text-align:right;margin-right:0.5em}#signup-not-logged-in form button{margin-left:6em}#top-nav .separator{color:#777}#top-nav{padding:5px 25px 0 0;margin:0;right:25px;line-height:1em}.nav a{color:#ccc;display:inline-block;padding-top:3px;padding-bottom:3px;text-decoration:none}.nav a:hover{color:white;background:url(//pragprog.com/assets/nav-underline-20daa35718b8f94a74d3ad965f177f9f.gif) no-repeat center bottom}.nav a.here{background:url(//pragprog.com/assets/nav-underline-20daa35718b8f94a74d3ad965f177f9f.gif) no-repeat center bottom}#head-wrapper{border-top:1px solid #9c978a;background:#eaddb8 url(//pragprog.com/assets/head-background-d37898a6f34fbf7324b7d19c83bcdb5b.png) repeat-x 0 0;margin:0px -25px 22px -25px;box-shadow:inset 0px -5px 5px #dad1ae}#head{border-bottom:1px solid #ddd1ae;padding:0 25px;position:relative}#head.title-head{min-height:124px}#head h1{font-size:215%}#head ul.tabs,#head ul.tabs li{list-style:none;list-style-image:none;margin:0;padding:0}#head ul.tabs{font-family:"Bookman Old Style","Book Antiqua",Georgia,"Times New Roman",Times,serif;font-size:115%;padding:6px 3px 3px 0;overflow:hidden;margin-bottom:-1px}#head ul.tabs li{display:inline;background:#f7eed4;padding:5px 12px;margin:0px 1px;border-radius:7px 7px 0px 0px;-moz-border-radius:7px 7px 0px 0px;-webkit-border-radius:7px 7px 0px 0px;box-shadow:inset 0px -4px 4px #e6e4c6,2px 1px 1px #cfc3a3}#head ul.tabs li a{color:#6e6b64;display:inline;text-decoration:none}#head ul.tabs li.here{background:#faf4e0;box-shadow:inset 0px 12px 15px #fdfbf4,2px 1px 1px #cfc3a3}#head ul.tabs li.here a{color:#222}#head ul.tabs li a:hover,#head ul.tabs li a:visited:hover{color:#d07056}#head ul.dropdown{font-size:75%;text-align:right;margin-top:-20px !important;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-weight:bold}img,#content a img{background:white;border:1px solid #ccc}a img{border:0;background:none}#head img,img.plain{background:none;border:none;padding:0}#head img.picture{float:right;margin-top:-10px}#content img.no-border,#content img.glyph,#content img.feed-icon,#content img.button{background:none;border:none;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;padding:0}#content img.glyph,img.cent{vertical-align:middle}#content a img.glyph{filter:Alpha(opacity=100);opacity:1.0}#content a:hover img.glyph{filter:Alpha(opacity=75);opacity:.75}.i-border a img{border:1px solid #ccc}#main{background:white;color:#333;float:left;width:100%}#content{padding:0 25px 25px 25px;color:#444;font-size:110%}#content .outset{margin:-22px -25px 22px -25px}#content ul li{list-style-image:url(//pragprog.com/assets/bullet-217bd22de2d43c49fd3f64f552933afb.gif)}#content ul.inline{padding-left:0;margin-left:0;list-style:none}#content ul.inline li{display:inline;background:url(//pragprog.com/assets/bullet-217bd22de2d43c49fd3f64f552933afb.gif) no-repeat left center;padding-left:15px;margin-right:1.5em}#content .important{font-size:120%;text-align:center}ul.plain{list-style-type:none}ul.plain li{list-style-image:none !important}div#head .ui-tabs{padding-bottom:0px !important}div#tabbed-interface{border:none !important;display:none}div#head .ui-widget-header{border:none !important;background:#eaddb8 !important;color:#222222;font-weight:bold}div#head .ui-widget-header .hidden-modern{display:none}div#link-menu{clear:both;text-align:right}div#link-menu ul{margin:-22px 200px 0px 0px;font-size:75%;list-style:none}div#link-menu ul li{display:inline;background:url(//pragprog.com/assets/bullet-217bd22de2d43c49fd3f64f552933afb.gif) no-repeat left center;padding-left:13px;margin-right:1em}div#link-menu ul li a{text-decoration:none}div#link-menu ul li a:hover{text-decoration:underline}.box{background-color:#f0f0ed;margin:10px 0 20px 0;padding:15px 20px 20px 20px}.box.no-margin{margin:0}.box.tight{margin:1em 0 2em 0;padding:10px}.box select{margin:0;padding:0}.box .message{font-size:90%;color:#2d9841;margin-top:0.4em}fieldset{background-color:#f0f0ed}.rounded{border-radius:15px;-moz-border-radius:15px;-webkit-border-radius:15px}#content .highlight{background:#ffffd5}#content .highlight .box{margin:25px 0px;padding:1px 20px}#content .highlight>box.no-top-margin{margin-top:-22px}#content .bio{margin:2em 0;position:relative;padding-left:118px}#content .bio img{position:absolute;left:0;top:0}#content .bio big{font-size:130%}#content div#regen_status div.status{width:240px;padding:0 10px;border:1px solid #999}#content div#regen_status div.status div.timer{background-image:url(//pragprog.com/assets/spinner-bar-6d3d45a2803d5f5e918d2d00883020ed.gif);height:19px;width:10px}#content table.auto-width{width:auto !important}#content table.records{width:100%}#content table.records td{border-bottom:3px solid #ebebeb;padding:12px 8px}#content table.records th{background:#c3c3c3 url(//pragprog.com/assets/table-header-background-c8eccc2d2a77b6bb3856fefb9d13a5db.png) repeat-x top;color:#333;padding:4px 8px;border-bottom:0}#content table.records.no-heading{margin-top:2em}#content table.records .alt td{background:#ececec url(//pragprog.com/assets/table-row-alt-background-d4372383bda51993b6b1218217a5a452.png) repeat-x top}#content table.order.records td{vertical-align:top}#content table.order.records .number{text-align:center;width:4em}#content table.order.records .items ul{list-style:none;list-style-image:none;padding:0;margin:0}#content table.order.records .items ul li{list-style:none;list-style-image:none;padding:0;margin:0;text-indent:-1.6em;padding-left:1.6em;margin-bottom:.25em}#content table#order-summary th.item{text-align:left;padding-left:6px}#content table#order-summary td.thumbnail{padding:0 10px;width:46px}#content table#order-summary td.amount,#content table#order-summary td.quantity{font-family:"Bookman Old Style","Book Antiqua",Georgia,"Times New Roman",Times,serif}#content table#order-summary td.amount{width:5em;padding-right:10px;text-align:right}#content .box table#order-summary td{background:white;border-bottom:3px solid #f0f0ed}#content table.coupon.records td{vertical-align:top}#content table.coupon.records th{text-align:left}th.ra,td.ra{text-align:right}#content dl{margin:0;margin-top:1em;margin-bottom:1em;padding:0}#content dl dt{margin-top:.75em;margin-bottom:.25em;margin-left:0}#content dl dd{margin-top:.25em;margin-bottom:.75em;margin-left:1.5em}#content dl.menu dt{font-size:130%;background:url(//pragprog.com/assets/bullet-217bd22de2d43c49fd3f64f552933afb.gif) no-repeat 8px center;padding-left:24px}#content dl.menu dd{margin-left:24px}#content .user-detail{float:left;font-size:75%;padding-right:2em;text-align:center;margin-top:2em;width:120px;height:150px}#content .user-detail a img{border:none}#content .user-detail .name{font-weight:bold}#content .user-detail ul.sites{list-style:none;list-style-image:none;margin:0;padding:0;text-align:center}#content .user-detail ul.sites li{display:inline;padding:0px;margin-left:5px;margin-right:5px}#content .user-detail a{color:#777}#foot{background:#eaddb8 url(//pragprog.com/assets/foot-background-88f4b8587da8b0b3bbae08836aa3b71f.png) repeat-x top left;margin:22px -25px -25px -25px;padding:25px}#foot.flush{margin-top:-25px}#footer-wrapper{background:url(//pragprog.com/assets/footer-background-19856e9cd9a039ea40b6c37f06abea15.png) repeat-x top;float:left;width:100%}#footer{padding:0 25px;color:#ffffff}#footer a{color:#ffffff}#footer a:visited{color:#ddd}#footer a:hover,#footer a:visited:hover{color:#ffffff}#site-links{font-family:"Bookman Old Style","Book Antiqua",Georgia,"Times New Roman",Times,serif;font-size:120%}#site-links .separator{margin-left:.25em;margin-right:.25em}#copyright{color:#ccc;font-size:90%}.pagination{margin:1.5em 0;text-align:center}.pagination-container{margin:1.5em 0;text-align:center}.pagination-container .pagination{margin:0}.pagination a{padding:2px 5px;margin:2px;border:1px solid #ccc;border-radius:7px;-moz-border-radius:7px;-webkit-border-radius:7px;text-decoration:none}.pagination a:hover,.pagination a:active{background:#68aCeA;border:1px solid #387cba;border-radius:7px;-moz-border-radius:7px;-webkit-border-radius:7px;color:#fff}.pagination span.current{padding:2px 5px;margin:2px;background:#387cba;border:1px solid #387cba;border-radius:7px;-moz-border-radius:7px;-webkit-border-radius:7px;color:#fff;font-weight:bold}.pagination span.disabled{padding:2px 5px;margin:2px;border:1px solid #eee;color:#ddd}.pagination-summary{font-size:70%;color:#888;margin-top:0.7em}div.cover-list .thumbnail{display:inline;width:100px;height:100px}#sidebar #studio img{float:left;margin-right:10px}#dropbox_flash{border-top:3px solid #5abd7b;border-bottom:3px solid #5abd7b;text-align:center;background-color:#20a64c;color:white}.dropbox-logo{float:right;border:none !important;padding-top:0px}table.rights td.border-right{border-right:1px solid #ccc}#content-wrapper ul.ui-tabs-nav li a{font-size:75%;color:#464 !important}#content-wrapper .ui-widget-content a{color:#00c !important}#content-wrapper .ui-widget-content a.orange{color:#300 !important}#content-wrapper .ui-widget-content a:hover{color:#33f !important}.title-head .ui-widget-header .ui-state-default{background:#cbc8c1}.title-head .ui-widget-header .ui-state-default.ui-tabs-selected{background:white}.ui-tabs .ui-tabs-panel{padding:0em !important}.skill-level{display:table-cell;height:80px;width:171px;float:left;margin-right:1em}.skill-level img{position:absolute;border:none;clip:rect(40px, 171px, 120px, 0px);margin-top:-45px}.web-highlight{font-size:90%;padding:1em;border-radius:1em;-moz-border-radius:1em;-webkit-border-radius:1em;border:1px solid #ddd;background:#f5f0e1;color:#7c6528}.web-highlight p:first-child{margin-top:0px}
