@charset "UTF-8";
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, img, ins, kbd, q, s, samp,
tt, var,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
  border: 0;
  font-size: 100%;
  font: inherit;
  margin: 0;
  padding: 0;
  vertical-align: baseline;
}

body {
  line-height: 1;
}

ol, ul {
  list-style: none;
}

blockquote, q {
  quotes: none;
}

blockquote:before, blockquote:after,
q:before, q:after {
  content: '';
  content: none;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

html {
  overflow-y: scroll;
  -webkit-text-size-adjust: 100%;
  -ms-text-size-adjust: 100%;
}

button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}

button {
  overflow: visible;
}

button,
select {
  text-transform: none;
}

button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer;
}

button[disabled],
html input[disabled] {
  cursor: default;
}

button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}

input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  padding: 0;
}

input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}

input[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  box-sizing: content-box;
  /* 2 */
}

input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}

legend {
  border: 0;
  padding: 0;
}

textarea {
  overflow: auto;
}

*,
*:before,
*:after {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}

header .search__term, header .search__submit {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
}

.product-share .cms-social .cms-social-buttons a::after {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: color;
  -o-transition-property: color;
  -webkit-transition-property: color;
  transition-property: color;
}

.animation--border-color, .edition-page .product-about .product-tabs li a {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: border-color;
  -o-transition-property: border-color;
  -webkit-transition-property: border-color;
  transition-property: border-color;
}

.animation--color-with-border, .footer__meta__social li.footer-icon a {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: color, border-color;
  -o-transition-property: color, border-color;
  -webkit-transition-property: color, border-color;
  transition-property: color, border-color;
}

.animation--background-color {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: background-color;
  -o-transition-property: background-color;
  -webkit-transition-property: background-color;
  transition-property: background-color;
}

.animation--max-height, .flap--mobile + *, .edition-page .product-about .cms-tab-panel .cms-tab-content .springer-html {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: max-height;
  -o-transition-property: max-height;
  -webkit-transition-property: max-height;
  transition-property: max-height;
}

.animation--opacity {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: opacity;
  -o-transition-property: opacity;
  -webkit-transition-property: opacity;
  transition-property: opacity;
}

.animation--width {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: width;
  -o-transition-property: width;
  -webkit-transition-property: width;
  transition-property: width;
}

.blink {
  animation: blinker 2s linear infinite;
}

@keyframes blinker {
  50% {
    opacity: 0.0;
  }
}
@-ms-keyframes spin {
  from {
    -ms-transform: rotate(0deg);
  }
  to {
    -ms-transform: rotate(360deg);
  }
}
@-moz-keyframes spin {
  from {
    -moz-transform: rotate(0deg);
  }
  to {
    -moz-transform: rotate(360deg);
  }
}
@-webkit-keyframes spin {
  from {
    -webkit-transform: rotate(0deg);
  }
  to {
    -webkit-transform: rotate(360deg);
  }
}
@keyframes spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
.btn-loading::before, .product-buy .download-section .btn.loading::before, .product-buy .download-section .edition-page .product-title .product-cover .loading.look-inside-badge::before, .edition-page .product-title .product-cover .product-buy .download-section .loading.look-inside-badge::before, .product-buy .download-section .edition-page .extra-materials a.loading::before, .edition-page .extra-materials .product-buy .download-section a.loading::before {
  -webkit-animation-name: spin;
  -webkit-animation-duration: 2000ms;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
  -moz-animation-name: spin;
  -moz-animation-duration: 2000ms;
  -moz-animation-iteration-count: infinite;
  -moz-animation-timing-function: linear;
  -ms-animation-name: spin;
  -ms-animation-duration: 2000ms;
  -ms-animation-iteration-count: infinite;
  -ms-animation-timing-function: linear;
  animation-name: spin;
  animation-duration: 2000ms;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
}

@font-face {
  font-family: "Encode Sans Regular";
  src: url(/app-pp/assets-v/fonts/encodesans-regular-webfont.woff2) format('woff2'), url(/app-pp/assets-v/fonts/encodesans-regular-webfont.woff) format('woff');
}
@font-face {
  font-family: "Encode Sans Medium";
  src: url(/app-pp/assets-v/fonts/encodesans-medium-webfont.woff2) format('woff2'), url(/app-pp/assets-v/fonts/encodesans-medium-webfont.woff) format('woff');
}
@font-face {
  font-family: "Encode Sans Semi Bold";
  src: url(/app-pp/assets-v/fonts/encodesans-semibold-webfont.woff2) format('woff2'), url(/app-pp/assets-v/fonts/encodesans-semibold-webfont.woff) format('woff');
}
@font-face {
  font-family: "Encode Sans Condensed Light";
  src: url(/app-pp/assets-v/fonts/encodesanscondensed-light-webfont.woff2) format('woff2'), url(/app-pp/assets-v/fonts/encodesanscondensed-light-webfont.woff) format('woff');
}
@font-face {
  font-family: "Encode Sans Condensed Semi Bold";
  src: url(/app-pp/assets-v/fonts/encodesanscondensed-semibold-webfont.woff2) format('woff2'), url(/app-pp/assets-v/fonts/encodesanscondensed-semibold-webfont.woff) format('woff');
}
body, .typeface-regular {
  font-weight: normal;
  font-family: "Encode Sans Regular", sans-serif;
}

.typeface-medium {
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
}

.typeface-semibold {
  font-weight: normal;
  font-family: "Encode Sans Semi Bold", sans-serif;
}

.typeface--condensed-light {
  font-weight: normal;
  font-family: "Encode Sans Condensed Light", sans-serif;
}

.typeface--condensed-semibold {
  font-weight: normal;
  font-family: "Encode Sans Condensed Semi Bold", sans-serif;
}

header .search__term, header .search__submit {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
}

.product-share .cms-social .cms-social-buttons a::after {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: color;
  -o-transition-property: color;
  -webkit-transition-property: color;
  transition-property: color;
}

.animation--border-color, .edition-page .product-about .product-tabs li a {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: border-color;
  -o-transition-property: border-color;
  -webkit-transition-property: border-color;
  transition-property: border-color;
}

.animation--color-with-border, .footer__meta__social li.footer-icon a {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: color, border-color;
  -o-transition-property: color, border-color;
  -webkit-transition-property: color, border-color;
  transition-property: color, border-color;
}

.animation--background-color {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: background-color;
  -o-transition-property: background-color;
  -webkit-transition-property: background-color;
  transition-property: background-color;
}

.animation--max-height, .flap--mobile + *, .edition-page .product-about .cms-tab-panel .cms-tab-content .springer-html {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: max-height;
  -o-transition-property: max-height;
  -webkit-transition-property: max-height;
  transition-property: max-height;
}

.animation--opacity {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: opacity;
  -o-transition-property: opacity;
  -webkit-transition-property: opacity;
  transition-property: opacity;
}

.animation--width {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: width;
  -o-transition-property: width;
  -webkit-transition-property: width;
  transition-property: width;
}

.blink {
  animation: blinker 2s linear infinite;
}

@keyframes blinker {
  50% {
    opacity: 0.0;
  }
}
@-ms-keyframes spin {
  from {
    -ms-transform: rotate(0deg);
  }
  to {
    -ms-transform: rotate(360deg);
  }
}
@-moz-keyframes spin {
  from {
    -moz-transform: rotate(0deg);
  }
  to {
    -moz-transform: rotate(360deg);
  }
}
@-webkit-keyframes spin {
  from {
    -webkit-transform: rotate(0deg);
  }
  to {
    -webkit-transform: rotate(360deg);
  }
}
@keyframes spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
.btn-loading::before, .product-buy .download-section .btn.loading::before, .product-buy .download-section .edition-page .product-title .product-cover .loading.look-inside-badge::before, .edition-page .product-title .product-cover .product-buy .download-section .loading.look-inside-badge::before, .product-buy .download-section .edition-page .extra-materials a.loading::before, .edition-page .extra-materials .product-buy .download-section a.loading::before {
  -webkit-animation-name: spin;
  -webkit-animation-duration: 2000ms;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
  -moz-animation-name: spin;
  -moz-animation-duration: 2000ms;
  -moz-animation-iteration-count: infinite;
  -moz-animation-timing-function: linear;
  -ms-animation-name: spin;
  -ms-animation-duration: 2000ms;
  -ms-animation-iteration-count: infinite;
  -ms-animation-timing-function: linear;
  animation-name: spin;
  animation-duration: 2000ms;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
}

a {
  color: #0468a8;
  line-height: inherit;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: color;
  -o-transition-property: color;
  -webkit-transition-property: color;
  transition-property: color;
}

a, a.link-primary-inactive, a.link-secondary-inactive, a.link-tertiary-inactive, a.link-primary, .link--primary {
  color: #0468a8;
  line-height: inherit;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: color;
  -o-transition-property: color;
  -webkit-transition-property: color;
  transition-property: color;
  text-decoration: none;
}
a:hover, .link--primary:hover, a:focus, .link--primary:focus, a:active, .link--primary:active {
  color: #31acfa;
  text-decoration: none;
}

a.link-secondary, .link--secondary {
  color: #0468a8;
  line-height: inherit;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: color;
  -o-transition-property: color;
  -webkit-transition-property: color;
  transition-property: color;
  color: #1a1a1a;
  text-decoration: none;
}
a.link-secondary:hover, .link--secondary:hover, a.link-secondary:focus, .link--secondary:focus, a.link-secondary:active, .link--secondary:active {
  color: #5a5a5a;
  text-decoration: none;
}

a.link-tertiary, #colorbox .lb .mod-bd .actions-footer a.continue-action, .link--tertiary {
  color: #0468a8;
  line-height: inherit;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: color;
  -o-transition-property: color;
  -webkit-transition-property: color;
  transition-property: color;
  color: #1a1a1a;
  text-decoration: underline;
}
a.link-tertiary:hover, #colorbox .lb .mod-bd .actions-footer a.continue-action:hover, .link--tertiary:hover, a.link-tertiary:focus, #colorbox .lb .mod-bd .actions-footer a.continue-action:focus, .link--tertiary:focus, a.link-tertiary:active, #colorbox .lb .mod-bd .actions-footer a.continue-action:active, .link--tertiary:active {
  color: #5a5a5a;
  text-decoration: none;
}

a.link-inactive, .link--inactive {
  color: #0468a8;
  line-height: inherit;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: color;
  -o-transition-property: color;
  -webkit-transition-property: color;
  transition-property: color;
  color: #999999;
  cursor: default;
  text-decoration: none;
}
a.link-inactive:hover, .link--inactive:hover, a.link-inactive:focus, .link--inactive:focus, a.link-inactive:active, .link--inactive:active {
  color: #999999;
}

h1, .text--accentuated-alpha {
  color: #1a1a1a;
  font-size: 2.42857rem;
  line-height: 1.23529;
  font-weight: normal;
  font-family: "Encode Sans Condensed Semi Bold", sans-serif;
  margin-bottom: 2.14286rem;
}

.text--accentuated-beta {
  color: #1a1a1a;
  font-size: 2.42857rem;
  line-height: 1.23529;
  font-weight: normal;
  font-family: "Encode Sans Condensed Light", sans-serif;
}

h2, .text--accentuated-gamma, #colorbox .lb .mod-bd .content-prices, .book-metrics h2, .product-buy .price, .edition-page .product-title .bibliographic-information h1, .edition-page .product-toc h2, .edition-page .product-recommendation h2, .edition-page .product-bibliographic h2 {
  color: #1a1a1a;
  font-size: 1.71429rem;
  line-height: 1.25;
  font-weight: normal;
  font-family: "Encode Sans Condensed Semi Bold", sans-serif;
}

.text--accentuated-delta, .edition-page .product-title .bibliographic-information h2 {
  color: #1a1a1a;
  font-size: 1.71429rem;
  line-height: 1.25;
  font-weight: normal;
  font-family: "Encode Sans Condensed Light", sans-serif;
}

h3, .text--accentuated-epsilon {
  color: #1a1a1a;
  font-size: 1.28571rem;
  line-height: 1.27778;
  font-weight: normal;
  font-family: "Encode Sans Condensed Semi Bold", sans-serif;
}

h4, .text--accentuated-zeta {
  color: #1a1a1a;
  font-size: 1.14286rem;
  line-height: 1.5;
  font-weight: normal;
  font-family: "Encode Sans Semi Bold", sans-serif;
}

h5, h6, .text--accentuated-eta, #colorbox .lb .mod-hd .btn, #colorbox .lb .mod-hd .edition-page .product-title .product-cover .look-inside-badge, .edition-page .product-title .product-cover #colorbox .lb .mod-hd .look-inside-badge, #colorbox .lb .mod-hd .edition-page .extra-materials a, .edition-page .extra-materials #colorbox .lb .mod-hd a, #colorbox .lb .mod-bd h2, .footer__links h6, .footer__links__headline {
  color: #1a1a1a;
  font-size: 1rem;
  line-height: 1.57143;
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
}

.text--accentuated-theta, .product-buy .cover-type {
  color: #1a1a1a;
  font-size: 1.14286rem;
  line-height: 1.375;
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
}

.text--accentuated-iota, .edition-page .product-title .bibliographic-information p, .edition-page .product-title .usps .action-show-all, .edition-page .product-about .cms-tab-panel .cms-tab-content .action-show-all, .edition-page .product-toc .toc .toc-item p.title, .edition-page .product-toc .toc .toc-item .detail .price, .edition-page .product-toc .action-show-all, .edition-page .product-bibliographic .cms-tab-content dl dt {
  color: #1a1a1a;
  font-size: 1rem;
  line-height: 1.57143;
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
}

.text--accentuated-kappa, .edition-page .product-about .product-tabs li a {
  font-size: 1.14286rem;
  line-height: 1.5;
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
}

.text--accentuated-lambda {
  color: #1a1a1a;
  font-size: 1.28571rem;
  line-height: 1.27778;
  font-weight: normal;
  font-family: "Encode Sans Condensed Light", sans-serif;
}

.text--running-alpha, .edition-page .product-toc h2 .chapter-count {
  color: #555555;
  font-size: 1rem;
  line-height: 1.57143;
  font-weight: normal;
  font-family: "Encode Sans Regular", sans-serif;
}

.text--running-beta, .edition-page .product-title .usps li, .entitlement {
  color: #1a1a1a;
  font-size: 1.14286rem;
  line-height: 1.5;
  font-weight: normal;
  font-family: "Encode Sans Regular", sans-serif;
}

.text--running-gamma, label.additional-information, #reader-overlay #reader #viewer .page-number, .footer span, footer span,
.footer a,
footer a, .product-buy .box-primary .price-note,
.product-buy .box-primary .list-price, .product-buy .box-primary ul li, .edition-page .product-toc .toc .toc-item p.page-range {
  color: #999999;
  font-size: 0.92857rem;
  line-height: 1.53846;
  font-weight: normal;
  font-family: "Encode Sans Regular", sans-serif;
}

@font-face {
  font-family: "apress_icons";
  src: url(/app-pp/assets-v/fonts/apress_icons.eot?1476108706);
  src: url(/app-pp/assets-v/fonts/apress_icons.eot?1476108706?#iefix) format('embedded-opentype'), url(/app-pp/assets-v/fonts/apress_icons.woff?1476108706) format('woff'), url(/app-pp/assets-v/fonts/apress_icons.svg?1476108706) format('svg'), url(/app-pp/assets-v/fonts/apress_icons.ttf?1476108706) format('truetype');
  font-weight: 400;
}
html {
  font-size: 87.5%;
}

body {
  color: #555555;
  font-size: 100%;
  line-height: 1.57143;
  text-rendering: optimizeLegibility;
}

a img {
  border: none;
}

p {
  font-weight: normal;
}

strong,
b {
  font-family: "Encode Sans Semi Bold";
  font-weight: normal;
}

hr {
  clear: both;
  height: 0;
}

em,
i {
  font-style: italic;
  line-height: inherit;
}

small {
  line-height: inherit;
}

.font-icon, .cms-font-icon, .footer__links__payment i, .footer__meta__social li.footer-icon a {
  font-family: "apress_icons";
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  background-color: #f7f7f7;
}

.hidden {
  display: none !important;
  visibility: hidden;
}

input[type="text"],
input[type="password"],
input[type="email"],
input[type="url"],
input[type="date"],
input[type="month"],
input[type="time"],
input[type="datetime"],
input[type="datetime-local"],
input[type="week"],
input[type="number"],
input[type="search"],
input[type="tel"],
input[type="color"],
select,
textarea {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  background-color: white;
  border: 0.07143rem solid #d9d9d9;
  border-spacing: 0;
  color: #555555;
  display: inline-block;
  height: 3.21429rem;
  line-height: 1.57143;
  padding: 0.71429rem 0.78571rem 0.78571rem;
  vertical-align: middle;
  width: 100%;
  -moz-transition: border-color 0.3s, color 0.3s;
  -o-transition: border-color 0.3s, color 0.3s;
  -webkit-transition: border-color 0.3s, color 0.3s;
  transition: border-color 0.3s, color 0.3s;
}
input[type="text"]:focus,
input[type="password"]:focus,
input[type="email"]:focus,
input[type="url"]:focus,
input[type="date"]:focus,
input[type="month"]:focus,
input[type="time"]:focus,
input[type="datetime"]:focus,
input[type="datetime-local"]:focus,
input[type="week"]:focus,
input[type="number"]:focus,
input[type="search"]:focus,
input[type="tel"]:focus,
input[type="color"]:focus,
select:focus,
textarea:focus {
  outline: 0;
  color: #555555;
  border-color: #4d4d4d;
}
input[type="text"].formelement--invalid,
input[type="password"].formelement--invalid,
input[type="email"].formelement--invalid,
input[type="url"].formelement--invalid,
input[type="date"].formelement--invalid,
input[type="month"].formelement--invalid,
input[type="time"].formelement--invalid,
input[type="datetime"].formelement--invalid,
input[type="datetime-local"].formelement--invalid,
input[type="week"].formelement--invalid,
input[type="number"].formelement--invalid,
input[type="search"].formelement--invalid,
input[type="tel"].formelement--invalid,
input[type="color"].formelement--invalid,
select.formelement--invalid,
textarea.formelement--invalid {
  background: white;
  color: #b30000;
  border-color: #b30000;
}
input[type="text"].formelement--invalid:focus,
input[type="password"].formelement--invalid:focus,
input[type="email"].formelement--invalid:focus,
input[type="url"].formelement--invalid:focus,
input[type="date"].formelement--invalid:focus,
input[type="month"].formelement--invalid:focus,
input[type="time"].formelement--invalid:focus,
input[type="datetime"].formelement--invalid:focus,
input[type="datetime-local"].formelement--invalid:focus,
input[type="week"].formelement--invalid:focus,
input[type="number"].formelement--invalid:focus,
input[type="search"].formelement--invalid:focus,
input[type="tel"].formelement--invalid:focus,
input[type="color"].formelement--invalid:focus,
select.formelement--invalid:focus,
textarea.formelement--invalid:focus {
  color: #b30000;
  border-color: #b30000;
}
input[type="text"][disabled], input[type="text"].formelement--disabled,
input[type="password"][disabled],
input[type="password"].formelement--disabled,
input[type="email"][disabled],
input[type="email"].formelement--disabled,
input[type="url"][disabled],
input[type="url"].formelement--disabled,
input[type="date"][disabled],
input[type="date"].formelement--disabled,
input[type="month"][disabled],
input[type="month"].formelement--disabled,
input[type="time"][disabled],
input[type="time"].formelement--disabled,
input[type="datetime"][disabled],
input[type="datetime"].formelement--disabled,
input[type="datetime-local"][disabled],
input[type="datetime-local"].formelement--disabled,
input[type="week"][disabled],
input[type="week"].formelement--disabled,
input[type="number"][disabled],
input[type="number"].formelement--disabled,
input[type="search"][disabled],
input[type="search"].formelement--disabled,
input[type="tel"][disabled],
input[type="tel"].formelement--disabled,
input[type="color"][disabled],
input[type="color"].formelement--disabled,
select[disabled],
select.formelement--disabled,
textarea[disabled],
textarea.formelement--disabled {
  background-color: white;
  color: #888888;
  border-color: #d9d9d9;
}
input[type="text"][readonly],
input[type="password"][readonly],
input[type="email"][readonly],
input[type="url"][readonly],
input[type="date"][readonly],
input[type="month"][readonly],
input[type="time"][readonly],
input[type="datetime"][readonly],
input[type="datetime-local"][readonly],
input[type="week"][readonly],
input[type="number"][readonly],
input[type="search"][readonly],
input[type="tel"][readonly],
input[type="color"][readonly],
select[readonly],
textarea[readonly] {
  background-color: white;
  color: #888888;
  border-color: #d9d9d9;
}
input[type="text"][readonly]:focus,
input[type="password"][readonly]:focus,
input[type="email"][readonly]:focus,
input[type="url"][readonly]:focus,
input[type="date"][readonly]:focus,
input[type="month"][readonly]:focus,
input[type="time"][readonly]:focus,
input[type="datetime"][readonly]:focus,
input[type="datetime-local"][readonly]:focus,
input[type="week"][readonly]:focus,
input[type="number"][readonly]:focus,
input[type="search"][readonly]:focus,
input[type="tel"][readonly]:focus,
input[type="color"][readonly]:focus,
select[readonly]:focus,
textarea[readonly]:focus {
  background-color: white;
  color: #888888;
  border-color: #d9d9d9;
}

textarea {
  height: auto;
}

input:not([type]) {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  background-color: white;
  border: 0.07143rem solid #d9d9d9;
  border-spacing: 0;
  color: #555555;
  display: inline-block;
  height: 3.21429rem;
  line-height: 1.57143;
  padding: 0.71429rem 0.78571rem 0.78571rem;
  vertical-align: middle;
  width: 100%;
  -moz-transition: border-color 0.3s, color 0.3s;
  -o-transition: border-color 0.3s, color 0.3s;
  -webkit-transition: border-color 0.3s, color 0.3s;
  transition: border-color 0.3s, color 0.3s;
}
input:not([type]):focus {
  outline: 0;
  color: #555555;
  border-color: #4d4d4d;
}
input:not([type]).formelement--invalid {
  background: white;
  color: #b30000;
  border-color: #b30000;
}
input:not([type]).formelement--invalid:focus {
  color: #b30000;
  border-color: #b30000;
}
input:not([type])[disabled], input:not([type]).formelement--disabled {
  background-color: white;
  color: #888888;
  border-color: #d9d9d9;
}
input:not([type])[readonly] {
  background-color: white;
  color: #888888;
  border-color: #d9d9d9;
}
input:not([type])[readonly]:focus {
  background-color: white;
  color: #888888;
  border-color: #d9d9d9;
}

input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
  outline: 0.07143rem solid #4d4d4d;
}
input[type="file"]:focus:invalid,
input[type="radio"]:focus:invalid,
input[type="checkbox"]:focus:invalid {
  outline-color: #4d4d4d;
}

select {
  border: 0.07143rem solid #4d4d4d;
  background-color: white;
}

select[multiple] {
  height: auto;
}

label {
  display: inline-block;
  color: #555555;
  margin: 0.35714rem 0;
}
label.additional-information {
  color: #999999;
}
label[for] {
  cursor: pointer;
}

fieldset {
  margin: 0;
  padding: 0.25rem 0 0.53571rem;
  border: 0;
}

legend {
  display: block;
  width: 100%;
  padding: 0.21429rem 0;
  margin-bottom: 0.21429rem;
  color: #555555;
  border-bottom: 0.07143rem solid #4d4d4d;
}

input.as-button[type=checkbox],
input.as-button[type=radio] {
  display: none;
}
input.as-button[type=checkbox] + label,
input.as-button[type=radio] + label {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  background-color: white;
  border: 0.07143rem solid #d9d9d9;
  border-spacing: 0;
  color: #555555;
  display: inline-block;
  height: 3.21429rem;
  line-height: 1.57143;
  padding: 0.71429rem 0.78571rem 0.78571rem;
  vertical-align: middle;
  width: 100%;
  -moz-transition: border-color 0.3s, color 0.3s;
  -o-transition: border-color 0.3s, color 0.3s;
  -webkit-transition: border-color 0.3s, color 0.3s;
  transition: border-color 0.3s, color 0.3s;
  cursor: pointer;
  height: auto;
  padding: 1.42857rem 1.42857rem 1.42857rem 3.57143rem;
  position: relative;
}
input.as-button[type=checkbox] + label:hover, input.as-button[type=checkbox] + label:focus,
input.as-button[type=radio] + label:hover,
input.as-button[type=radio] + label:focus {
  outline: 0;
  color: #555555;
  border-color: #4d4d4d;
  border-color: #d9d9d9;
  background-color: #e6e6e6;
}
input.as-button[type=checkbox] + label::before,
input.as-button[type=radio] + label::before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "æ";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: inline;
  top: 1.14286rem;
  left: 1.42857rem;
}
input.as-button[type=checkbox]:checked + label,
input.as-button[type=radio]:checked + label {
  outline: 0;
  color: #555555;
  border-color: #4d4d4d;
  background-color: #e6e6e6;
}
input.as-button[type=checkbox]:checked + label::before,
input.as-button[type=radio]:checked + label::before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "œ";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: inline;
}

input.as-button[type=radio] + label::before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "ö";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: inline;
}
input.as-button[type=radio]:checked + label::before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "ä";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: inline;
}

.row, header nav .menu--secondary {
  max-width: 72.85714rem;
  margin-left: auto;
  margin-right: auto;
}
.row::before, header nav .menu--secondary::before, .row::after, header nav .menu--secondary::after {
  content: ' ';
  display: table;
}
.row::after, header nav .menu--secondary::after {
  clear: both;
}
.row.collapse > .column, header nav .collapse.menu--secondary > .column, .row.collapse > .columns, header nav .collapse.menu--secondary > .columns {
  padding-left: 0;
  padding-right: 0;
}
.row .row, header nav .menu--secondary .row, .row header nav .menu--secondary, header nav .row .menu--secondary, header nav .menu--secondary .menu--secondary {
  max-width: none;
  margin-left: -1.42857rem;
  margin-right: -1.42857rem;
}
.row .row.collapse, header nav .menu--secondary .row.collapse, .row header nav .collapse.menu--secondary, header nav .row .collapse.menu--secondary, header nav .menu--secondary .collapse.menu--secondary {
  margin-left: 0;
  margin-right: 0;
}
.row.expanded, header nav .expanded.menu--secondary {
  max-width: none;
}
.row.expanded .row, header nav .expanded.menu--secondary .row, .row.expanded header nav .menu--secondary, header nav .row.expanded .menu--secondary, header nav .expanded.menu--secondary .menu--secondary {
  margin-left: auto;
  margin-right: auto;
}

.column, .columns {
  width: 100%;
  float: left;
  padding-left: 1.42857rem;
  padding-right: 1.42857rem;
}
.column:last-child:not(:first-child), .columns:last-child:not(:first-child) {
  float: right;
}
.column.end:last-child:last-child, .end.columns:last-child:last-child {
  float: left;
}

.column.row.row, .row.row.columns, header nav .columns.menu--secondary, header nav .column.menu--secondary {
  float: none;
}
.row .column.row.row, header nav .menu--secondary .column.row.row, .row .row.row.columns, header nav .menu--secondary .row.row.columns, .row header nav .columns.menu--secondary, header nav .row .columns.menu--secondary, header nav .menu--secondary .columns.menu--secondary, .row header nav .column.menu--secondary, header nav .row .column.menu--secondary, header nav .menu--secondary .column.menu--secondary {
  padding-left: 0;
  padding-right: 0;
  margin-left: 0;
  margin-right: 0;
}

.small-1 {
  width: 8.33333%;
}

.small-push-1 {
  position: relative;
  left: 8.33333%;
}

.small-pull-1 {
  position: relative;
  left: -8.33333%;
}

.small-offset-0 {
  margin-left: 0%;
}

.small-2 {
  width: 16.66667%;
}

.small-push-2 {
  position: relative;
  left: 16.66667%;
}

.small-pull-2 {
  position: relative;
  left: -16.66667%;
}

.small-offset-1 {
  margin-left: 8.33333%;
}

.small-3 {
  width: 25%;
}

.small-push-3 {
  position: relative;
  left: 25%;
}

.small-pull-3 {
  position: relative;
  left: -25%;
}

.small-offset-2 {
  margin-left: 16.66667%;
}

.small-4 {
  width: 33.33333%;
}

.small-push-4 {
  position: relative;
  left: 33.33333%;
}

.small-pull-4 {
  position: relative;
  left: -33.33333%;
}

.small-offset-3 {
  margin-left: 25%;
}

.small-5 {
  width: 41.66667%;
}

.small-push-5 {
  position: relative;
  left: 41.66667%;
}

.small-pull-5 {
  position: relative;
  left: -41.66667%;
}

.small-offset-4 {
  margin-left: 33.33333%;
}

.small-6 {
  width: 50%;
}

.small-push-6 {
  position: relative;
  left: 50%;
}

.small-pull-6 {
  position: relative;
  left: -50%;
}

.small-offset-5 {
  margin-left: 41.66667%;
}

.small-7 {
  width: 58.33333%;
}

.small-push-7 {
  position: relative;
  left: 58.33333%;
}

.small-pull-7 {
  position: relative;
  left: -58.33333%;
}

.small-offset-6 {
  margin-left: 50%;
}

.small-8 {
  width: 66.66667%;
}

.small-push-8 {
  position: relative;
  left: 66.66667%;
}

.small-pull-8 {
  position: relative;
  left: -66.66667%;
}

.small-offset-7 {
  margin-left: 58.33333%;
}

.small-9 {
  width: 75%;
}

.small-push-9 {
  position: relative;
  left: 75%;
}

.small-pull-9 {
  position: relative;
  left: -75%;
}

.small-offset-8 {
  margin-left: 66.66667%;
}

.small-10 {
  width: 83.33333%;
}

.small-push-10 {
  position: relative;
  left: 83.33333%;
}

.small-pull-10 {
  position: relative;
  left: -83.33333%;
}

.small-offset-9 {
  margin-left: 75%;
}

.small-11 {
  width: 91.66667%;
}

.small-push-11 {
  position: relative;
  left: 91.66667%;
}

.small-pull-11 {
  position: relative;
  left: -91.66667%;
}

.small-offset-10 {
  margin-left: 83.33333%;
}

.small-12 {
  width: 100%;
}

.small-offset-11 {
  margin-left: 91.66667%;
}

.small-up-1 > .column, .small-up-1 > .columns {
  width: 100%;
  float: left;
}
.small-up-1 > .column:nth-of-type(1n), .small-up-1 > .columns:nth-of-type(1n) {
  clear: none;
}
.small-up-1 > .column:nth-of-type(1n+1), .small-up-1 > .columns:nth-of-type(1n+1) {
  clear: both;
}
.small-up-1 > .column:last-child, .small-up-1 > .columns:last-child {
  float: left;
}

.small-up-2 > .column, .small-up-2 > .columns {
  width: 50%;
  float: left;
}
.small-up-2 > .column:nth-of-type(1n), .small-up-2 > .columns:nth-of-type(1n) {
  clear: none;
}
.small-up-2 > .column:nth-of-type(2n+1), .small-up-2 > .columns:nth-of-type(2n+1) {
  clear: both;
}
.small-up-2 > .column:last-child, .small-up-2 > .columns:last-child {
  float: left;
}

.small-up-3 > .column, .small-up-3 > .columns {
  width: 33.33333%;
  float: left;
}
.small-up-3 > .column:nth-of-type(1n), .small-up-3 > .columns:nth-of-type(1n) {
  clear: none;
}
.small-up-3 > .column:nth-of-type(3n+1), .small-up-3 > .columns:nth-of-type(3n+1) {
  clear: both;
}
.small-up-3 > .column:last-child, .small-up-3 > .columns:last-child {
  float: left;
}

.small-up-4 > .column, .small-up-4 > .columns {
  width: 25%;
  float: left;
}
.small-up-4 > .column:nth-of-type(1n), .small-up-4 > .columns:nth-of-type(1n) {
  clear: none;
}
.small-up-4 > .column:nth-of-type(4n+1), .small-up-4 > .columns:nth-of-type(4n+1) {
  clear: both;
}
.small-up-4 > .column:last-child, .small-up-4 > .columns:last-child {
  float: left;
}

.small-up-5 > .column, .small-up-5 > .columns {
  width: 20%;
  float: left;
}
.small-up-5 > .column:nth-of-type(1n), .small-up-5 > .columns:nth-of-type(1n) {
  clear: none;
}
.small-up-5 > .column:nth-of-type(5n+1), .small-up-5 > .columns:nth-of-type(5n+1) {
  clear: both;
}
.small-up-5 > .column:last-child, .small-up-5 > .columns:last-child {
  float: left;
}

.small-up-6 > .column, .small-up-6 > .columns {
  width: 16.66667%;
  float: left;
}
.small-up-6 > .column:nth-of-type(1n), .small-up-6 > .columns:nth-of-type(1n) {
  clear: none;
}
.small-up-6 > .column:nth-of-type(6n+1), .small-up-6 > .columns:nth-of-type(6n+1) {
  clear: both;
}
.small-up-6 > .column:last-child, .small-up-6 > .columns:last-child {
  float: left;
}

.small-up-7 > .column, .small-up-7 > .columns {
  width: 14.28571%;
  float: left;
}
.small-up-7 > .column:nth-of-type(1n), .small-up-7 > .columns:nth-of-type(1n) {
  clear: none;
}
.small-up-7 > .column:nth-of-type(7n+1), .small-up-7 > .columns:nth-of-type(7n+1) {
  clear: both;
}
.small-up-7 > .column:last-child, .small-up-7 > .columns:last-child {
  float: left;
}

.small-up-8 > .column, .small-up-8 > .columns {
  width: 12.5%;
  float: left;
}
.small-up-8 > .column:nth-of-type(1n), .small-up-8 > .columns:nth-of-type(1n) {
  clear: none;
}
.small-up-8 > .column:nth-of-type(8n+1), .small-up-8 > .columns:nth-of-type(8n+1) {
  clear: both;
}
.small-up-8 > .column:last-child, .small-up-8 > .columns:last-child {
  float: left;
}

.small-collapse > .column, .small-collapse > .columns {
  padding-left: 0;
  padding-right: 0;
}
.small-collapse .row, .small-collapse header nav .menu--secondary, header nav .small-collapse .menu--secondary {
  margin-left: 0;
  margin-right: 0;
}

.small-uncollapse > .column, .small-uncollapse > .columns {
  padding-left: 1.42857rem;
  padding-right: 1.42857rem;
}

.small-centered {
  float: none;
  margin-left: auto;
  margin-right: auto;
}

.small-uncentered,
.small-push-0,
.small-pull-0 {
  position: static;
  margin-left: 0;
  margin-right: 0;
  float: left;
}

@media screen and (min-width: 37.5em) {
  .medium-1 {
    width: 8.33333%;
  }

  .medium-push-1 {
    position: relative;
    left: 8.33333%;
  }

  .medium-pull-1 {
    position: relative;
    left: -8.33333%;
  }

  .medium-offset-0 {
    margin-left: 0%;
  }

  .medium-2 {
    width: 16.66667%;
  }

  .medium-push-2 {
    position: relative;
    left: 16.66667%;
  }

  .medium-pull-2 {
    position: relative;
    left: -16.66667%;
  }

  .medium-offset-1 {
    margin-left: 8.33333%;
  }

  .medium-3 {
    width: 25%;
  }

  .medium-push-3 {
    position: relative;
    left: 25%;
  }

  .medium-pull-3 {
    position: relative;
    left: -25%;
  }

  .medium-offset-2 {
    margin-left: 16.66667%;
  }

  .medium-4 {
    width: 33.33333%;
  }

  .medium-push-4 {
    position: relative;
    left: 33.33333%;
  }

  .medium-pull-4 {
    position: relative;
    left: -33.33333%;
  }

  .medium-offset-3 {
    margin-left: 25%;
  }

  .medium-5 {
    width: 41.66667%;
  }

  .medium-push-5 {
    position: relative;
    left: 41.66667%;
  }

  .medium-pull-5 {
    position: relative;
    left: -41.66667%;
  }

  .medium-offset-4 {
    margin-left: 33.33333%;
  }

  .medium-6 {
    width: 50%;
  }

  .medium-push-6 {
    position: relative;
    left: 50%;
  }

  .medium-pull-6 {
    position: relative;
    left: -50%;
  }

  .medium-offset-5 {
    margin-left: 41.66667%;
  }

  .medium-7 {
    width: 58.33333%;
  }

  .medium-push-7 {
    position: relative;
    left: 58.33333%;
  }

  .medium-pull-7 {
    position: relative;
    left: -58.33333%;
  }

  .medium-offset-6 {
    margin-left: 50%;
  }

  .medium-8 {
    width: 66.66667%;
  }

  .medium-push-8 {
    position: relative;
    left: 66.66667%;
  }

  .medium-pull-8 {
    position: relative;
    left: -66.66667%;
  }

  .medium-offset-7 {
    margin-left: 58.33333%;
  }

  .medium-9 {
    width: 75%;
  }

  .medium-push-9 {
    position: relative;
    left: 75%;
  }

  .medium-pull-9 {
    position: relative;
    left: -75%;
  }

  .medium-offset-8 {
    margin-left: 66.66667%;
  }

  .medium-10 {
    width: 83.33333%;
  }

  .medium-push-10 {
    position: relative;
    left: 83.33333%;
  }

  .medium-pull-10 {
    position: relative;
    left: -83.33333%;
  }

  .medium-offset-9 {
    margin-left: 75%;
  }

  .medium-11 {
    width: 91.66667%;
  }

  .medium-push-11 {
    position: relative;
    left: 91.66667%;
  }

  .medium-pull-11 {
    position: relative;
    left: -91.66667%;
  }

  .medium-offset-10 {
    margin-left: 83.33333%;
  }

  .medium-12 {
    width: 100%;
  }

  .medium-offset-11 {
    margin-left: 91.66667%;
  }

  .medium-up-1 > .column, .medium-up-1 > .columns {
    width: 100%;
    float: left;
  }
  .medium-up-1 > .column:nth-of-type(1n), .medium-up-1 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .medium-up-1 > .column:nth-of-type(1n+1), .medium-up-1 > .columns:nth-of-type(1n+1) {
    clear: both;
  }
  .medium-up-1 > .column:last-child, .medium-up-1 > .columns:last-child {
    float: left;
  }

  .medium-up-2 > .column, .medium-up-2 > .columns {
    width: 50%;
    float: left;
  }
  .medium-up-2 > .column:nth-of-type(1n), .medium-up-2 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .medium-up-2 > .column:nth-of-type(2n+1), .medium-up-2 > .columns:nth-of-type(2n+1) {
    clear: both;
  }
  .medium-up-2 > .column:last-child, .medium-up-2 > .columns:last-child {
    float: left;
  }

  .medium-up-3 > .column, .medium-up-3 > .columns {
    width: 33.33333%;
    float: left;
  }
  .medium-up-3 > .column:nth-of-type(1n), .medium-up-3 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .medium-up-3 > .column:nth-of-type(3n+1), .medium-up-3 > .columns:nth-of-type(3n+1) {
    clear: both;
  }
  .medium-up-3 > .column:last-child, .medium-up-3 > .columns:last-child {
    float: left;
  }

  .medium-up-4 > .column, .medium-up-4 > .columns {
    width: 25%;
    float: left;
  }
  .medium-up-4 > .column:nth-of-type(1n), .medium-up-4 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .medium-up-4 > .column:nth-of-type(4n+1), .medium-up-4 > .columns:nth-of-type(4n+1) {
    clear: both;
  }
  .medium-up-4 > .column:last-child, .medium-up-4 > .columns:last-child {
    float: left;
  }

  .medium-up-5 > .column, .medium-up-5 > .columns {
    width: 20%;
    float: left;
  }
  .medium-up-5 > .column:nth-of-type(1n), .medium-up-5 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .medium-up-5 > .column:nth-of-type(5n+1), .medium-up-5 > .columns:nth-of-type(5n+1) {
    clear: both;
  }
  .medium-up-5 > .column:last-child, .medium-up-5 > .columns:last-child {
    float: left;
  }

  .medium-up-6 > .column, .medium-up-6 > .columns {
    width: 16.66667%;
    float: left;
  }
  .medium-up-6 > .column:nth-of-type(1n), .medium-up-6 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .medium-up-6 > .column:nth-of-type(6n+1), .medium-up-6 > .columns:nth-of-type(6n+1) {
    clear: both;
  }
  .medium-up-6 > .column:last-child, .medium-up-6 > .columns:last-child {
    float: left;
  }

  .medium-up-7 > .column, .medium-up-7 > .columns {
    width: 14.28571%;
    float: left;
  }
  .medium-up-7 > .column:nth-of-type(1n), .medium-up-7 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .medium-up-7 > .column:nth-of-type(7n+1), .medium-up-7 > .columns:nth-of-type(7n+1) {
    clear: both;
  }
  .medium-up-7 > .column:last-child, .medium-up-7 > .columns:last-child {
    float: left;
  }

  .medium-up-8 > .column, .medium-up-8 > .columns {
    width: 12.5%;
    float: left;
  }
  .medium-up-8 > .column:nth-of-type(1n), .medium-up-8 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .medium-up-8 > .column:nth-of-type(8n+1), .medium-up-8 > .columns:nth-of-type(8n+1) {
    clear: both;
  }
  .medium-up-8 > .column:last-child, .medium-up-8 > .columns:last-child {
    float: left;
  }

  .medium-collapse > .column, .medium-collapse > .columns {
    padding-left: 0;
    padding-right: 0;
  }
  .medium-collapse .row, .medium-collapse header nav .menu--secondary, header nav .medium-collapse .menu--secondary {
    margin-left: 0;
    margin-right: 0;
  }

  .medium-uncollapse > .column, .medium-uncollapse > .columns {
    padding-left: 1.42857rem;
    padding-right: 1.42857rem;
  }

  .medium-centered {
    float: none;
    margin-left: auto;
    margin-right: auto;
  }

  .medium-uncentered,
  .medium-push-0,
  .medium-pull-0 {
    position: static;
    margin-left: 0;
    margin-right: 0;
    float: left;
  }
}
@media screen and (min-width: 62.75em) {
  .large-1 {
    width: 8.33333%;
  }

  .large-push-1 {
    position: relative;
    left: 8.33333%;
  }

  .large-pull-1 {
    position: relative;
    left: -8.33333%;
  }

  .large-offset-0, header .search.state--active {
    margin-left: 0%;
  }

  .large-2 {
    width: 16.66667%;
  }

  .large-push-2 {
    position: relative;
    left: 16.66667%;
  }

  .large-pull-2 {
    position: relative;
    left: -16.66667%;
  }

  .large-offset-1 {
    margin-left: 8.33333%;
  }

  .large-3 {
    width: 25%;
  }

  .large-push-3 {
    position: relative;
    left: 25%;
  }

  .large-pull-3 {
    position: relative;
    left: -25%;
  }

  .large-offset-2 {
    margin-left: 16.66667%;
  }

  .large-4, header .search.state--active {
    width: 33.33333%;
  }

  .large-push-4 {
    position: relative;
    left: 33.33333%;
  }

  .large-pull-4 {
    position: relative;
    left: -33.33333%;
  }

  .large-offset-3 {
    margin-left: 25%;
  }

  .large-5 {
    width: 41.66667%;
  }

  .large-push-5 {
    position: relative;
    left: 41.66667%;
  }

  .large-pull-5 {
    position: relative;
    left: -41.66667%;
  }

  .large-offset-4 {
    margin-left: 33.33333%;
  }

  .large-6 {
    width: 50%;
  }

  .large-push-6 {
    position: relative;
    left: 50%;
  }

  .large-pull-6 {
    position: relative;
    left: -50%;
  }

  .large-offset-5 {
    margin-left: 41.66667%;
  }

  .large-7 {
    width: 58.33333%;
  }

  .large-push-7 {
    position: relative;
    left: 58.33333%;
  }

  .large-pull-7 {
    position: relative;
    left: -58.33333%;
  }

  .large-offset-6 {
    margin-left: 50%;
  }

  .large-8 {
    width: 66.66667%;
  }

  .large-push-8 {
    position: relative;
    left: 66.66667%;
  }

  .large-pull-8 {
    position: relative;
    left: -66.66667%;
  }

  .large-offset-7 {
    margin-left: 58.33333%;
  }

  .large-9 {
    width: 75%;
  }

  .large-push-9 {
    position: relative;
    left: 75%;
  }

  .large-pull-9 {
    position: relative;
    left: -75%;
  }

  .large-offset-8 {
    margin-left: 66.66667%;
  }

  .large-10 {
    width: 83.33333%;
  }

  .large-push-10 {
    position: relative;
    left: 83.33333%;
  }

  .large-pull-10 {
    position: relative;
    left: -83.33333%;
  }

  .large-offset-9 {
    margin-left: 75%;
  }

  .large-11 {
    width: 91.66667%;
  }

  .large-push-11 {
    position: relative;
    left: 91.66667%;
  }

  .large-pull-11 {
    position: relative;
    left: -91.66667%;
  }

  .large-offset-10 {
    margin-left: 83.33333%;
  }

  .large-12 {
    width: 100%;
  }

  .large-offset-11 {
    margin-left: 91.66667%;
  }

  .large-up-1 > .column, .large-up-1 > .columns {
    width: 100%;
    float: left;
  }
  .large-up-1 > .column:nth-of-type(1n), .large-up-1 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .large-up-1 > .column:nth-of-type(1n+1), .large-up-1 > .columns:nth-of-type(1n+1) {
    clear: both;
  }
  .large-up-1 > .column:last-child, .large-up-1 > .columns:last-child {
    float: left;
  }

  .large-up-2 > .column, .large-up-2 > .columns {
    width: 50%;
    float: left;
  }
  .large-up-2 > .column:nth-of-type(1n), .large-up-2 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .large-up-2 > .column:nth-of-type(2n+1), .large-up-2 > .columns:nth-of-type(2n+1) {
    clear: both;
  }
  .large-up-2 > .column:last-child, .large-up-2 > .columns:last-child {
    float: left;
  }

  .large-up-3 > .column, .large-up-3 > .columns {
    width: 33.33333%;
    float: left;
  }
  .large-up-3 > .column:nth-of-type(1n), .large-up-3 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .large-up-3 > .column:nth-of-type(3n+1), .large-up-3 > .columns:nth-of-type(3n+1) {
    clear: both;
  }
  .large-up-3 > .column:last-child, .large-up-3 > .columns:last-child {
    float: left;
  }

  .large-up-4 > .column, .large-up-4 > .columns {
    width: 25%;
    float: left;
  }
  .large-up-4 > .column:nth-of-type(1n), .large-up-4 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .large-up-4 > .column:nth-of-type(4n+1), .large-up-4 > .columns:nth-of-type(4n+1) {
    clear: both;
  }
  .large-up-4 > .column:last-child, .large-up-4 > .columns:last-child {
    float: left;
  }

  .large-up-5 > .column, .large-up-5 > .columns {
    width: 20%;
    float: left;
  }
  .large-up-5 > .column:nth-of-type(1n), .large-up-5 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .large-up-5 > .column:nth-of-type(5n+1), .large-up-5 > .columns:nth-of-type(5n+1) {
    clear: both;
  }
  .large-up-5 > .column:last-child, .large-up-5 > .columns:last-child {
    float: left;
  }

  .large-up-6 > .column, .large-up-6 > .columns {
    width: 16.66667%;
    float: left;
  }
  .large-up-6 > .column:nth-of-type(1n), .large-up-6 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .large-up-6 > .column:nth-of-type(6n+1), .large-up-6 > .columns:nth-of-type(6n+1) {
    clear: both;
  }
  .large-up-6 > .column:last-child, .large-up-6 > .columns:last-child {
    float: left;
  }

  .large-up-7 > .column, .large-up-7 > .columns {
    width: 14.28571%;
    float: left;
  }
  .large-up-7 > .column:nth-of-type(1n), .large-up-7 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .large-up-7 > .column:nth-of-type(7n+1), .large-up-7 > .columns:nth-of-type(7n+1) {
    clear: both;
  }
  .large-up-7 > .column:last-child, .large-up-7 > .columns:last-child {
    float: left;
  }

  .large-up-8 > .column, .large-up-8 > .columns {
    width: 12.5%;
    float: left;
  }
  .large-up-8 > .column:nth-of-type(1n), .large-up-8 > .columns:nth-of-type(1n) {
    clear: none;
  }
  .large-up-8 > .column:nth-of-type(8n+1), .large-up-8 > .columns:nth-of-type(8n+1) {
    clear: both;
  }
  .large-up-8 > .column:last-child, .large-up-8 > .columns:last-child {
    float: left;
  }

  .large-collapse > .column, .large-collapse > .columns {
    padding-left: 0;
    padding-right: 0;
  }
  .large-collapse .row, .large-collapse header nav .menu--secondary, header nav .large-collapse .menu--secondary {
    margin-left: 0;
    margin-right: 0;
  }

  .large-uncollapse > .column, .large-uncollapse > .columns {
    padding-left: 1.42857rem;
    padding-right: 1.42857rem;
  }

  .large-centered {
    float: none;
    margin-left: auto;
    margin-right: auto;
  }

  .large-uncentered,
  .large-push-0,
  .large-pull-0 {
    position: static;
    margin-left: 0;
    margin-right: 0;
    float: left;
  }
}
.hide {
  display: none !important;
}

.invisible {
  visibility: hidden;
}

@media screen and (max-width: 37.4375em) {
  .hide-for-small-only {
    display: none !important;
  }
}

@media screen and (max-width: 0em), screen and (min-width: 37.5em) {
  .show-for-small-only {
    display: none !important;
  }
}

@media screen and (min-width: 37.5em) {
  .hide-for-medium {
    display: none !important;
  }
}

@media screen and (max-width: 37.4375em) {
  .show-for-medium {
    display: none !important;
  }
}

@media screen and (min-width: 37.5em) and (max-width: 62.6875em) {
  .hide-for-medium-only {
    display: none !important;
  }
}

@media screen and (max-width: 37.4375em), screen and (min-width: 62.75em) {
  .show-for-medium-only {
    display: none !important;
  }
}

@media screen and (min-width: 62.75em) {
  .hide-for-large {
    display: none !important;
  }
}

@media screen and (max-width: 62.6875em) {
  .show-for-large {
    display: none !important;
  }
}

@media screen and (min-width: 62.75em) and (max-width: 93.6875em) {
  .hide-for-large-only {
    display: none !important;
  }
}

@media screen and (max-width: 62.6875em), screen and (min-width: 93.75em) {
  .show-for-large-only {
    display: none !important;
  }
}

.show-for-sr,
.show-on-focus {
  position: absolute !important;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
}

.show-on-focus:active, .show-on-focus:focus {
  position: static !important;
  height: auto;
  width: auto;
  overflow: visible;
  clip: auto;
}

.show-for-landscape,
.hide-for-portrait {
  display: block !important;
}
@media screen and (orientation: landscape) {
  .show-for-landscape,
  .hide-for-portrait {
    display: block !important;
  }
}
@media screen and (orientation: portrait) {
  .show-for-landscape,
  .hide-for-portrait {
    display: none !important;
  }
}

.hide-for-landscape,
.show-for-portrait {
  display: none !important;
}
@media screen and (orientation: landscape) {
  .hide-for-landscape,
  .show-for-portrait {
    display: none !important;
  }
}
@media screen and (orientation: portrait) {
  .hide-for-landscape,
  .show-for-portrait {
    display: block !important;
  }
}

.row.row-narrow, header nav .row-narrow.menu--secondary {
  padding-left: 0.71429rem;
  padding-right: 0.71429rem;
}
.row.row-narrow .row, header nav .row-narrow.menu--secondary .row, .row.row-narrow header nav .menu--secondary, header nav .row.row-narrow .menu--secondary, header nav .row-narrow.menu--secondary .menu--secondary {
  margin-left: -10px;
  margin-right: -10px;
}
.row.row-narrow .column, header nav .row-narrow.menu--secondary .column, .row.row-narrow .columns, header nav .row-narrow.menu--secondary .columns,
.row.row-narrow .columns,
header nav .row-narrow.menu--secondary .columns {
  padding-left: 0.71429rem;
  padding-right: 0.71429rem;
}

[class*="-up-"] > li.columns {
  padding-bottom: 1.42857rem;
}

@media screen and (max-width: 37.4375em) {
  #content .small-12 {
    margin-top: 10px;
    margin-bottom: 10px;
  }
  #content .row .small-12:first-child, #content header nav .menu--secondary .small-12:first-child, header nav #content .menu--secondary .small-12:first-child {
    margin-top: 0;
  }
  #content .row .small-12:last-child, #content header nav .menu--secondary .small-12:last-child, header nav #content .menu--secondary .small-12:last-child {
    margin-bottom: 0;
  }
}
@media screen and (min-width: 37.5em) and (max-width: 62.6875em) {
  #content .medium-12 {
    margin-top: 10px;
    margin-bottom: 10px;
  }
  #content .row .medium-12:first-child, #content header nav .menu--secondary .medium-12:first-child, header nav #content .menu--secondary .medium-12:first-child {
    margin-top: 0;
  }
  #content .row .medium-12:last-child, #content header nav .menu--secondary .medium-12:last-child, header nav #content .menu--secondary .medium-12:last-child {
    margin-bottom: 0;
  }
}
.edition-page .product-title .usps, .edition-page .product-about {
  margin-top: 1.42857rem;
}
.book-metrics, .product-services, .product-buy, .product-share {
  margin-bottom: 3.57143rem;
}
.edition-page .product-about {
  margin-bottom: 4.85714rem;
}
#wrapper,
.page-wrapper {
  background-color: #f7f7f7;
  margin: 0 auto;
  position: relative;
}
#wrapper #content,
.page-wrapper #content {
  padding: 3.57143rem 0 0 0;
}
#wrapper #content::before, #wrapper #content::after,
.page-wrapper #content::before,
.page-wrapper #content::after {
  content: ' ';
  display: table;
}
#wrapper #content::after,
.page-wrapper #content::after {
  clear: both;
}
@media screen and (min-width: 37.5em) {
  #wrapper #content,
  .page-wrapper #content {
    padding: 3.57143rem 0 0 0;
  }
}

.page-section--light {
  background-color: white;
}

.page-section--default {
  background-color: #f7f7f7;
}

.page-section--light + .page-section--default {
  box-shadow: 0 3px 3px -3px rgba(0, 0, 0, 0.1) inset;
}

.page-section--big-distance {
  padding-top: 50px;
  padding-bottom: 50px;
}

.page-section--big-distance.page-section--transparent + .page-section--big-distance.page-section--transparent,
.page-section--big-distance.page-section--light + .page-section--big-distance.page-section--light,
.page-section--big-distance.page-section--default + .page-section--big-distance.page-section--default {
  padding-top: 0;
}

#cboxOverlay {
  background: rgba(0, 0, 0, 0.5);
  height: 100%;
  left: 0;
  overflow: hidden;
  position: fixed;
  top: 0;
  width: 100%;
  z-index: 100;
}

#colorbox {
  z-index: 110;
}
#colorbox:focus {
  outline: none;
}
#colorbox .lb .mod-hd {
  background-color: #f7f7f7;
  padding: 1.03571rem 1.42857rem;
}
#colorbox .lb .mod-hd::before, #colorbox .lb .mod-hd::after {
  content: ' ';
  display: table;
}
#colorbox .lb .mod-hd::after {
  clear: both;
}
#colorbox .lb .mod-hd .btn, #colorbox .lb .mod-hd .edition-page .product-title .product-cover .look-inside-badge, .edition-page .product-title .product-cover #colorbox .lb .mod-hd .look-inside-badge, #colorbox .lb .mod-hd .edition-page .extra-materials a, .edition-page .extra-materials #colorbox .lb .mod-hd a {
  display: block;
  float: right;
  margin: 0;
  padding: 0;
}
#colorbox .lb .mod-hd .btn:after, #colorbox .lb .mod-hd .edition-page .product-title .product-cover .look-inside-badge:after, .edition-page .product-title .product-cover #colorbox .lb .mod-hd .look-inside-badge:after, #colorbox .lb .mod-hd .edition-page .extra-materials a:after, .edition-page .extra-materials #colorbox .lb .mod-hd a:after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "t";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: relative;
  display: inline;
  margin-left: 0.71429rem;
  top: 0.21429rem;
}
#colorbox .lb .mod-bd {
  background-color: white;
  padding: 1.42857rem 1.42857rem 2.14286rem;
}
#colorbox .lb .mod-bd h2 {
  border-bottom: 0.07143rem solid #d9d9d9;
  color: #008d35;
  margin: 0 0 1.42857rem;
  padding-bottom: 1.42857rem;
}
#colorbox .lb .mod-bd h2:before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "V";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: relative;
  display: inline;
  border: 0.07143rem solid #008d35;
  border-radius: 50%;
  cursor: default;
  display: inline-block;
  height: 2.5rem;
  line-height: 2.5rem;
  text-align: center;
  width: 2.5rem;
  margin-right: 0.71429rem;
}
#colorbox .lb .mod-bd img.product-cover {
  display: block;
  float: left;
  height: auto;
  margin-right: 1.42857rem;
  width: 5.71429rem;
}
#colorbox .lb .mod-bd .content-prices {
  padding-bottom: 1.14286rem;
}
#colorbox .lb .mod-bd .aggregate-pricing > p {
  display: inline;
}
#colorbox .lb .mod-bd .aggregate-pricing > p:last-child::before, #colorbox .lb .mod-bd .aggregate-pricing > p:last-child::after {
  content: ' ';
  display: table;
}
#colorbox .lb .mod-bd .aggregate-pricing > p:last-child::after {
  clear: both;
}
#colorbox .lb .mod-bd .actions-footer {
  border-top: 0.07143rem solid #d9d9d9;
  margin-top: 1.42857rem;
  padding-top: 1.42857rem;
}
#colorbox .lb .mod-bd .actions-footer::before, #colorbox .lb .mod-bd .actions-footer::after {
  content: ' ';
  display: table;
}
#colorbox .lb .mod-bd .actions-footer::after {
  clear: both;
}
#colorbox .lb .mod-bd .actions-footer a {
  float: right;
}
#colorbox .lb .mod-bd .actions-footer a.continue-action {
  background-color: transparent;
  float: none;
  padding-left: 0;
  padding-right: 0;
}
#colorbox #cboxClose {
  display: none;
}

#reader-overlay {
  display: none;
  background: rgba(0, 0, 0, 0.66667);
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  text-align: center;
  z-index: 100;
}
#reader-overlay *,
#reader-overlay *:before,
#reader-overlay *:after {
  -moz-box-sizing: content-box;
  -webkit-box-sizing: content-box;
  box-sizing: content-box;
}
#reader-overlay.show {
  display: block;
}
#reader-overlay .reader-position {
  position: absolute;
  overflow: hidden;
  top: 1.78571rem;
  bottom: -0.71429rem;
  left: 1.42857rem;
  right: 1.42857rem;
}
#reader-overlay #reader {
  background: rgba(0, 0, 0, 0.33333);
  padding: 1.42857rem;
  height: 90%;
  margin: 0 auto;
  position: relative;
  text-align: left;
  max-width: 56.78571rem;
  width: auto;
}
#reader-overlay #reader .top-shadow,
#reader-overlay #reader .bottom-shadow {
  height: 0.71429rem;
  position: absolute;
}
#reader-overlay #reader .top-shadow {
  top: 5.35714rem;
  left: 1.42857rem;
  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzRkNGQ0ZCIgc3RvcC1vcGFjaXR5PSIwLjMzMzMzMzMzMzMzMzMzMzM3Ii8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjNGQ0ZDRkIiBzdG9wLW9wYWNpdHk9IjAuMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
  background-size: 100%;
  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(77, 77, 77, 0.33333)), color-stop(100%, rgba(77, 77, 77, 0)));
  background-image: -moz-linear-gradient(top, rgba(77, 77, 77, 0.33333), rgba(77, 77, 77, 0));
  background-image: -webkit-linear-gradient(top, rgba(77, 77, 77, 0.33333), rgba(77, 77, 77, 0));
  background-image: linear-gradient(to bottom, rgba(77, 77, 77, 0.33333), rgba(77, 77, 77, 0));
}
#reader-overlay #reader .bottom-shadow {
  bottom: 1.42857rem;
  left: 1.42857rem;
  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjEuMCIgeDI9IjAuNSIgeTI9IjAuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzRkNGQ0ZCIgc3RvcC1vcGFjaXR5PSIwLjMzMzMzMzMzMzMzMzMzMzM3Ii8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjNGQ0ZDRkIiBzdG9wLW9wYWNpdHk9IjAuMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
  background-size: 100%;
  background-image: -webkit-gradient(linear, 50% 100%, 50% 0%, color-stop(0%, rgba(77, 77, 77, 0.33333)), color-stop(100%, rgba(77, 77, 77, 0)));
  background-image: -moz-linear-gradient(bottom, rgba(77, 77, 77, 0.33333), rgba(77, 77, 77, 0));
  background-image: -webkit-linear-gradient(bottom, rgba(77, 77, 77, 0.33333), rgba(77, 77, 77, 0));
  background-image: linear-gradient(to top, rgba(77, 77, 77, 0.33333), rgba(77, 77, 77, 0));
}
#reader-overlay #reader #reader-buttons {
  text-align: right;
}
#reader-overlay #reader #reader-buttons a {
  cursor: pointer;
  text-transform: lowercase;
}
#reader-overlay #reader #reader-buttons a::first-letter {
  text-transform: uppercase;
}
#reader-overlay #reader #viewer {
  background: #e6e6e6;
  position: absolute;
  padding: 0 1.42857rem 1.42857rem;
  top: 5.35714rem;
  bottom: 1.42857rem;
  left: 1.42857rem;
  right: 1.42857rem;
  overflow: auto;
  text-align: center;
}
.no-access #reader-overlay #reader #viewer {
  margin-top: 0;
}
#reader-overlay #reader #viewer .page-number {
  padding-top: 15px;
  padding-bottom: 15px;
  text-align: center;
}
#reader-overlay #reader #viewer .pdf-page {
  background: white url(../images/pdf-preview/ajax-loader.gif) no-repeat center 2.85714rem;
  border: 0.07143rem solid #d9d9d9;
  margin: 0 auto;
  position: relative;
  width: 52.71429rem;
  text-align: left;
}
#reader-overlay #reader #viewer .pdf-image {
  max-width: 52.71429rem;
}

/* PAYMENT ICONS
---------------------------------------------------*/
.payment-visa-big {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -3516px no-repeat;
}

.payment-mastercard-big {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -3292px no-repeat;
}

.payment-amex-big {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -2908px no-repeat;
}

.payment-paypal-big {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -3362px no-repeat;
}

.payment-invoice-big {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -3162px no-repeat;
}

.payment-invoice-big-de {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -3042px no-repeat;
}

.payment-invoice-big-nl {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -3102px no-repeat;
}

.payment-proforma-big {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -3474px no-repeat;
}

.payment-proforma-big-de {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -3432px no-repeat;
}

.payment-ideal-big {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -2978px no-repeat;
}

.payment-visa {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -3558px no-repeat;
}

.payment-mastercard {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -3334px no-repeat;
}

.payment-amex {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -2950px no-repeat;
}

.payment-paypal {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -3404px no-repeat;
}

.payment-invoice {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -3264px no-repeat;
}

.payment-invoice-de {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -3204px no-repeat;
}

.payment-invoice-nl {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -3234px no-repeat;
}

.payment-ideal {
  background: url('/app-pp/assets-v/images_gen/sprites/apress-sprite-sbc47c41b61.png') 0 -3014px no-repeat;
}

.btn, .edition-page .product-title .product-cover .look-inside-badge, .edition-page .extra-materials a {
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
  display: inline-block;
  line-height: 1;
  border: 0.07143rem solid transparent;
  font-size: 1rem;
  -moz-border-radius: 1.21429rem;
  -webkit-border-radius: 1.21429rem;
  border-radius: 1.21429rem;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  padding: 0.67857rem 1.42857rem;
  text-decoration: none;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: background-color;
  -o-transition-property: background-color;
  -webkit-transition-property: background-color;
  transition-property: background-color;
}

.btn-tertiary, .edition-page .product-title .product-cover .look-inside-badge, .edition-page .product-toc .toc .toc-item .detail .btn.preview, .edition-page .product-toc .toc .toc-item .detail .product-title .product-cover .preview.look-inside-badge, .edition-page .product-title .product-cover .product-toc .toc .toc-item .detail .preview.look-inside-badge, .edition-page .product-toc .toc .toc-item .detail .extra-materials a.preview, .edition-page .extra-materials .product-toc .toc .toc-item .detail a.preview, .edition-page .extra-materials a {
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
  display: inline-block;
  line-height: 1;
  border: 0.07143rem solid transparent;
  font-size: 1rem;
  -moz-border-radius: 1.21429rem;
  -webkit-border-radius: 1.21429rem;
  border-radius: 1.21429rem;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  padding: 0.67857rem 1.42857rem;
  text-decoration: none;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: background-color;
  -o-transition-property: background-color;
  -webkit-transition-property: background-color;
  transition-property: background-color;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: border-color;
  -o-transition-property: border-color;
  -webkit-transition-property: border-color;
  transition-property: border-color;
  background-color: transparent;
  border-color: #4d4d4d;
  color: #1a1a1a;
}
.btn-tertiary:hover, .edition-page .product-title .product-cover .look-inside-badge:hover, .edition-page .product-toc .toc .toc-item .detail .btn.preview:hover, .edition-page .product-toc .toc .toc-item .detail .product-title .product-cover .preview.look-inside-badge:hover, .edition-page .product-title .product-cover .product-toc .toc .toc-item .detail .preview.look-inside-badge:hover, .edition-page .product-toc .toc .toc-item .detail .extra-materials a.preview:hover, .edition-page .extra-materials .product-toc .toc .toc-item .detail a.preview:hover, .edition-page .extra-materials a:hover, .btn-tertiary:focus, .edition-page .product-title .product-cover .look-inside-badge:focus, .edition-page .product-toc .toc .toc-item .detail .btn.preview:focus, .edition-page .product-toc .toc .toc-item .detail .product-title .product-cover .preview.look-inside-badge:focus, .edition-page .product-title .product-cover .product-toc .toc .toc-item .detail .preview.look-inside-badge:focus, .edition-page .product-toc .toc .toc-item .detail .extra-materials a.preview:focus, .edition-page .extra-materials .product-toc .toc .toc-item .detail a.preview:focus, .edition-page .extra-materials a:focus, .btn-tertiary:active, .edition-page .product-title .product-cover .look-inside-badge:active, .edition-page .product-toc .toc .toc-item .detail .btn.preview:active, .edition-page .product-toc .toc .toc-item .detail .product-title .product-cover .preview.look-inside-badge:active, .edition-page .product-title .product-cover .product-toc .toc .toc-item .detail .preview.look-inside-badge:active, .edition-page .product-toc .toc .toc-item .detail .extra-materials a.preview:active, .edition-page .extra-materials .product-toc .toc .toc-item .detail a.preview:active, .edition-page .extra-materials a:active {
  background-color: transparent;
  border-color: #8d8d8d;
  color: #5a5a5a;
}

.btn-tertiary-inverted {
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
  display: inline-block;
  line-height: 1;
  border: 0.07143rem solid transparent;
  font-size: 1rem;
  -moz-border-radius: 1.21429rem;
  -webkit-border-radius: 1.21429rem;
  border-radius: 1.21429rem;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  padding: 0.67857rem 1.42857rem;
  text-decoration: none;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: background-color;
  -o-transition-property: background-color;
  -webkit-transition-property: background-color;
  transition-property: background-color;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: border-color;
  -o-transition-property: border-color;
  -webkit-transition-property: border-color;
  transition-property: border-color;
  background-color: transparent;
  border-color: #4d4d4d;
  color: #1a1a1a;
  background-color: transparent;
  border-color: #d9d9d9;
  color: #f7f7f7;
}
.btn-tertiary-inverted:hover, .btn-tertiary-inverted:focus, .btn-tertiary-inverted:active {
  background-color: transparent;
  border-color: #8d8d8d;
  color: #5a5a5a;
}
.btn-tertiary-inverted:hover, .btn-tertiary-inverted:focus, .btn-tertiary-inverted:active {
  background-color: transparent;
  border-color: white;
  color: white;
}

.btn-tertiary-disabled {
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
  display: inline-block;
  line-height: 1;
  border: 0.07143rem solid transparent;
  font-size: 1rem;
  -moz-border-radius: 1.21429rem;
  -webkit-border-radius: 1.21429rem;
  border-radius: 1.21429rem;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  padding: 0.67857rem 1.42857rem;
  text-decoration: none;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: background-color;
  -o-transition-property: background-color;
  -webkit-transition-property: background-color;
  transition-property: background-color;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: border-color;
  -o-transition-property: border-color;
  -webkit-transition-property: border-color;
  transition-property: border-color;
  background-color: transparent;
  border-color: #4d4d4d;
  color: #1a1a1a;
}
.btn-tertiary-disabled:hover, .btn-tertiary-disabled:focus, .btn-tertiary-disabled:active {
  background-color: transparent;
  border-color: #8d8d8d;
  color: #5a5a5a;
}
.btn-tertiary-disabled, .btn-tertiary-disabled:hover, .btn-tertiary-disabled:focus, .btn-tertiary-disabled:active {
  cursor: default;
  border-color: transparent;
  background-color: #e6e6e6;
  color: white;
}

.btn-tertiary-inverted-disabled {
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
  display: inline-block;
  line-height: 1;
  border: 0.07143rem solid transparent;
  font-size: 1rem;
  -moz-border-radius: 1.21429rem;
  -webkit-border-radius: 1.21429rem;
  border-radius: 1.21429rem;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  padding: 0.67857rem 1.42857rem;
  text-decoration: none;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: background-color;
  -o-transition-property: background-color;
  -webkit-transition-property: background-color;
  transition-property: background-color;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: border-color;
  -o-transition-property: border-color;
  -webkit-transition-property: border-color;
  transition-property: border-color;
  background-color: transparent;
  border-color: #4d4d4d;
  color: #1a1a1a;
  background-color: transparent;
  border-color: #d9d9d9;
  color: #f7f7f7;
}
.btn-tertiary-inverted-disabled:hover, .btn-tertiary-inverted-disabled:focus, .btn-tertiary-inverted-disabled:active {
  background-color: transparent;
  border-color: #8d8d8d;
  color: #5a5a5a;
}
.btn-tertiary-inverted-disabled:hover, .btn-tertiary-inverted-disabled:focus, .btn-tertiary-inverted-disabled:active {
  background-color: transparent;
  border-color: white;
  color: white;
}
.btn-tertiary-inverted-disabled, .btn-tertiary-inverted-disabled:hover, .btn-tertiary-inverted-disabled:focus, .btn-tertiary-inverted-disabled:active {
  cursor: default;
  background-color: transparent;
  border-color: #4d4d4d;
  color: #555555;
}

.btn-primary, #reader-overlay #reader #reader-buttons a {
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
  display: inline-block;
  line-height: 1;
  border: 0.07143rem solid transparent;
  font-size: 1rem;
  -moz-border-radius: 1.21429rem;
  -webkit-border-radius: 1.21429rem;
  border-radius: 1.21429rem;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  padding: 0.67857rem 1.42857rem;
  text-decoration: none;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: background-color;
  -o-transition-property: background-color;
  -webkit-transition-property: background-color;
  transition-property: background-color;
  background-color: #ffcc00;
  color: #1a1a1a;
}
.btn-primary:hover, #reader-overlay #reader #reader-buttons a:hover, .btn-primary:focus, #reader-overlay #reader #reader-buttons a:focus, .btn-primary:active, #reader-overlay #reader #reader-buttons a:active {
  background-color: #ffdb4d;
  color: #1a1a1a;
}
.btn-primary-disabled, .btn-primary-disabled:hover, .btn-primary-disabled:focus, .btn-primary-disabled:active {
  cursor: default;
  background-color: #e6e6e6;
  color: white;
}
.btn-secondary, .edition-page .product-toc .toc .toc-item .detail .btn.buy, .edition-page .product-toc .toc .toc-item .detail .product-title .product-cover .buy.look-inside-badge, .edition-page .product-title .product-cover .product-toc .toc .toc-item .detail .buy.look-inside-badge, .edition-page .product-toc .toc .toc-item .detail .extra-materials a.buy, .edition-page .extra-materials .product-toc .toc .toc-item .detail a.buy {
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
  display: inline-block;
  line-height: 1;
  border: 0.07143rem solid transparent;
  font-size: 1rem;
  -moz-border-radius: 1.21429rem;
  -webkit-border-radius: 1.21429rem;
  border-radius: 1.21429rem;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  padding: 0.67857rem 1.42857rem;
  text-decoration: none;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: background-color;
  -o-transition-property: background-color;
  -webkit-transition-property: background-color;
  transition-property: background-color;
  background-color: #333333;
  color: #f7f7f7;
}
.btn-secondary:hover, .edition-page .product-toc .toc .toc-item .detail .btn.buy:hover, .edition-page .product-toc .toc .toc-item .detail .product-title .product-cover .buy.look-inside-badge:hover, .edition-page .product-title .product-cover .product-toc .toc .toc-item .detail .buy.look-inside-badge:hover, .edition-page .product-toc .toc .toc-item .detail .extra-materials a.buy:hover, .edition-page .extra-materials .product-toc .toc .toc-item .detail a.buy:hover, .btn-secondary:focus, .edition-page .product-toc .toc .toc-item .detail .btn.buy:focus, .edition-page .product-toc .toc .toc-item .detail .product-title .product-cover .buy.look-inside-badge:focus, .edition-page .product-title .product-cover .product-toc .toc .toc-item .detail .buy.look-inside-badge:focus, .edition-page .product-toc .toc .toc-item .detail .extra-materials a.buy:focus, .edition-page .extra-materials .product-toc .toc .toc-item .detail a.buy:focus, .btn-secondary:active, .edition-page .product-toc .toc .toc-item .detail .btn.buy:active, .edition-page .product-toc .toc .toc-item .detail .product-title .product-cover .buy.look-inside-badge:active, .edition-page .product-title .product-cover .product-toc .toc .toc-item .detail .buy.look-inside-badge:active, .edition-page .product-toc .toc .toc-item .detail .extra-materials a.buy:active, .edition-page .extra-materials .product-toc .toc .toc-item .detail a.buy:active {
  background-color: black;
  color: #f7f7f7;
}
.btn-secondary-disabled, .btn-secondary-disabled:hover, .btn-secondary-disabled:focus, .btn-secondary-disabled:active {
  cursor: default;
  background-color: #e6e6e6;
  color: white;
}
.btn-secondary-inverted {
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
  display: inline-block;
  line-height: 1;
  border: 0.07143rem solid transparent;
  font-size: 1rem;
  -moz-border-radius: 1.21429rem;
  -webkit-border-radius: 1.21429rem;
  border-radius: 1.21429rem;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  padding: 0.67857rem 1.42857rem;
  text-decoration: none;
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: background-color;
  -o-transition-property: background-color;
  -webkit-transition-property: background-color;
  transition-property: background-color;
  background-color: #333333;
  color: #f7f7f7;
}
.btn-secondary-inverted:hover, .btn-secondary-inverted:focus, .btn-secondary-inverted:active {
  background-color: black;
  color: #f7f7f7;
}
.btn-secondary-inverted-disabled, .btn-secondary-inverted-disabled:hover, .btn-secondary-inverted-disabled:focus, .btn-secondary-inverted-disabled:active {
  cursor: default;
  background-color: #e6e6e6;
  color: white;
}

.btn-monster, .btn-loading.btn-monster {
  font-size: 1.14286rem;
  -moz-border-radius: 1.57143rem;
  -webkit-border-radius: 1.57143rem;
  border-radius: 1.57143rem;
  padding: 0.96429rem 1.42857rem;
}
.btn-unmonster {
  font-size: 1rem;
  -moz-border-radius: 1.21429rem;
  -webkit-border-radius: 1.21429rem;
  border-radius: 1.21429rem;
  padding: 0.67857rem 1.42857rem;
}
.btn-block {
  display: block;
  width: 100%;
  margin-left: 0;
  margin-right: 0;
}
.btn-with-icon, .btn-loading {
  padding-left: 3.57143rem;
  position: relative;
}
.btn-with-icon::before, .btn-loading::before {
  top: 0.46429rem;
  left: 1.42857rem;
}
.btn-monster-with-icon, .btn-loading.btn-monster {
  padding-left: 4.28571rem;
  position: relative;
}
.btn-monster-with-icon::before, .btn-loading.btn-monster::before {
  top: 0.46429rem;
  left: 1.42857rem;
  font-size: 2.14286rem;
}
.btn-loading::before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "…";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: inline;
}
.btn-loading.btn-monster::before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "…";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: inline;
  font-size: 2.14286rem;
}

#jsnotice,
.banner-message, .marketing-message, .entitlement {
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
  color: #1a1a1a;
  max-width: 72.85714rem;
  margin-left: auto;
  margin-right: auto;
  padding: 0 1.42857rem;
}
#jsnotice::before,
.banner-message::before, .marketing-message::before, .entitlement::before, #jsnotice::after,
.banner-message::after, .marketing-message::after, .entitlement::after {
  content: ' ';
  display: table;
}
#jsnotice::after,
.banner-message::after, .marketing-message::after, .entitlement::after {
  clear: both;
}
#jsnotice p::before,
.banner-message p::before, .marketing-message p::before, .entitlement p::before {
  border: 0.07143rem solid #1a1a1a;
  border-radius: 50%;
  cursor: default;
  display: inline-block;
  height: 2.5rem;
  line-height: 2.5rem;
  text-align: center;
  width: 2.5rem;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: relative;
  display: inline;
  content: none;
  display: inline-block;
  line-height: 0;
  margin-right: 0.71429rem;
  padding: 1.14286rem 0 1.07143rem;
  vertical-align: sub;
}
#jsnotice p,
.banner-message p, .marketing-message p, .entitlement p {
  line-height: 1.3;
}
#jsnotice a,
.banner-message a, .marketing-message a, .entitlement a {
  color: inherit;
  text-decoration: underline;
}
#jsnotice a:hover,
.banner-message a:hover, .marketing-message a:hover, .entitlement a:hover {
  text-decoration: none;
}

.open-access .help {
  background-color: #333333;
  color: #f7f7f7;
  display: inline-block;
  font-size: 0.92857rem;
  margin-bottom: 0.42857rem;
  padding: 0.14286rem 0.42857rem;
}
.open-access .help .tooltip {
  margin-top: 1.28571rem;
}
.open-access .help:hover .tooltip {
  display: block;
}

/* Tooltip & Help
------------------------------------------------------------------------------*/
.tooltip {
  color: #999999;
  font-size: 0.92857rem;
  line-height: 1.53846;
  font-weight: normal;
  font-family: "Encode Sans Regular", sans-serif;
  background-color: #FFF;
  -moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.08);
  -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.08);
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.08);
  color: #555555;
  display: none;
  margin-left: -60px;
  margin-top: -12px;
  padding: 0.71429rem;
  position: absolute;
  left: 50%;
  top: 8px;
  z-index: 15;
  width: 100px;
  word-wrap: break-word;
}
@media screen and (min-width: 62.75em) {
  .tooltip {
    margin-left: -127px;
    /* half the outer width - 2.5px => for centering */
    margin-top: 0;
    width: 230px;
  }
}

.help {
  cursor: help;
  position: relative;
}

.help:hover .tooltip {
  display: block;
}

.flap--mobile {
  cursor: pointer;
  position: relative;
  padding-left: 1.42857rem;
}
.flap--mobile::before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "A";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: block;
  -moz-transition: -moz-transform 0.3s;
  -o-transition: -o-transform 0.3s;
  -webkit-transition: -webkit-transform 0.3s;
  transition: transform 0.3s;
  left: 0.21429rem;
  top: -0.28571rem;
}
.flap--mobile.flap--open::before {
  -moz-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  -webkit-transform: rotate(90deg);
  transform: rotate(90deg);
}
@media screen and (min-width: 37.5em) {
  .flap--mobile {
    cursor: default;
    position: static;
    padding-left: 0;
  }
  .flap--mobile::before {
    display: none;
  }
}
.flap--mobile + * {
  overflow: hidden;
  max-height: 0;
}
.flap--mobile.flap--open + * {
  max-height: 35.71429rem;
}
@media screen and (min-width: 37.5em) {
  .flap--mobile + * {
    max-height: none;
  }
}

body {
  overflow: hidden;
}

header {
  position: relative;
  z-index: 100;
}
@media screen and (max-width: 62.6875em) {
  .js header {
    left: 0;
    position: fixed;
    right: 0;
    top: 0;
    z-index: 20;
  }
}
header .branding-container {
  background-color: #333333;
}
header .navi-container {
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
}
@media screen and (min-width: 62.75em) {
  header .navi-container {
    background-color: white;
    -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.1);
    -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.1);
    box-shadow: 0 0 3px rgba(0, 0, 0, 0.1);
  }
}
header a.brand {
  display: block;
  line-height: 1;
  height: 6em;
}
header a.brand img {
  height: 2em;
  margin: 2.3em 0 1.7em;
}
@media screen and (min-width: 62.75em) {
  header a.brand img {
    height: 2.753em;
    margin: 1.925em 0 1.322em;
  }
}
header nav.meta .icon {
  height: 6em;
  width: 6em;
}
header nav.meta .icon::after,
header a.cart::after {
  -moz-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%);
  left: 0;
  right: 0;
  text-align: center;
  text-indent: 0;
  top: 50%;
}
header a.brand,
header nav.meta a,
header a.cart {
  font-size: 0.71429rem;
}
@media screen and (min-width: 37.5em) {
  header a.brand,
  header nav.meta a,
  header a.cart {
    font-size: 0.82857rem;
  }
}
@media screen and (min-width: 62.75em) {
  header a.brand,
  header nav.meta a,
  header a.cart {
    font-size: 0.77857rem;
  }
}
header a.cart .font-icon, header a.cart .cms-font-icon, header a.cart .footer__links__payment i, .footer__links__payment header a.cart i, header a.cart .footer__meta__social li.footer-icon a, .footer__meta__social li.footer-icon header a.cart a {
  font-size: 1rem;
}
header a.cart .quantity {
  display: none;
  padding-left: 0.21429rem;
}
@media screen and (min-width: 62.75em) {
  header a.cart {
    line-height: 1.2;
  }
  header a.cart .font-icon, header a.cart .cms-font-icon, header a.cart .footer__links__payment i, .footer__links__payment header a.cart i, header a.cart .footer__meta__social li.footer-icon a, .footer__meta__social li.footer-icon header a.cart a {
    font-size: 1.42857rem;
  }
  header a.cart .quantity {
    -moz-transform: translateY(-0.28571rem);
    -ms-transform: translateY(-0.28571rem);
    -webkit-transform: translateY(-0.28571rem);
    transform: translateY(-0.28571rem);
  }
}
header li.cart.state--filled > a .quantity {
  display: inline-block;
}
@media screen and (max-width: 62.6875em) {
  header nav .menu--primary {
    display: none;
  }
}
header nav .menu--primary {
  padding: 0;
}
@media screen and (max-width: 62.6875em) {
  header nav .menu--primary > li {
    -moz-transition-duration: 220ms;
    -o-transition-duration: 220ms;
    -webkit-transition-duration: 220ms;
    transition-duration: 220ms;
    -moz-transition-timing-function: ease-in;
    -o-transition-timing-function: ease-in;
    -webkit-transition-timing-function: ease-in;
    transition-timing-function: ease-in;
    -moz-transition-property: background, box-shadow;
    -o-transition-property: background, box-shadow;
    -webkit-transition-property: background, box-shadow;
    transition-property: background, box-shadow;
    background-color: #4d4d4d;
    cursor: pointer;
    padding: 0 1.42857rem;
  }
  header nav .menu--primary > li > a {
    -moz-box-shadow: 0 1px 0 0 #333333 inset;
    -webkit-box-shadow: 0 1px 0 0 #333333 inset;
    box-shadow: 0 1px 0 0 #333333 inset;
    color: #f7f7f7;
    display: block;
    font-size: 1.14286rem;
    padding: 1.14286rem 1.28571rem;
    position: relative;
  }
}
@media screen and (max-width: 62.6875em) and (min-width: 62.75em) {
  header nav .menu--primary > li > a {
    font-size: 1rem;
    text-transform: uppercase;
  }
}
@media screen and (max-width: 62.6875em) {
  header nav .menu--primary > li > a::before, header nav .menu--primary > li > a::after {
    font-size: 1.07143rem;
    top: 0.85714rem;
  }
  header nav .menu--primary > li > a::before {
    -moz-transition-duration: 220ms;
    -o-transition-duration: 220ms;
    -webkit-transition-duration: 220ms;
    transition-duration: 220ms;
    -moz-transition-timing-function: ease-in;
    -o-transition-timing-function: ease-in;
    -webkit-transition-timing-function: ease-in;
    transition-timing-function: ease-in;
    -moz-transition-property: -moz-transform;
    -o-transition-property: -o-transform;
    -webkit-transition-property: -webkit-transform;
    transition-property: transform;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    content: "A";
    font-family: "apress_icons";
    font-size: 1.42857rem;
    text-transform: none;
    position: absolute;
    display: block;
    left: 0;
    padding-right: 0.71429rem;
  }
  header nav .menu--primary > li > a.cart::before, header nav .menu--primary > li > a.link--direct::before {
    left: auto;
    padding-right: 0;
    right: 0;
  }
  header nav .menu--primary > li.state--active a::before {
    -moz-transform: rotate(90deg);
    -ms-transform: rotate(90deg);
    -webkit-transform: rotate(90deg);
    transform: rotate(90deg);
    -moz-transform-origin: 30% 50%;
    -ms-transform-origin: 30% 50%;
    -webkit-transform-origin: 30% 50%;
    transform-origin: 30% 50%;
  }
  header nav .menu--primary > li.state--active ul {
    display: block;
  }
  header nav .menu--primary li.cart a {
    -moz-box-shadow: none;
    -webkit-box-shadow: none;
    box-shadow: none;
  }
}
header nav .menu--secondary {
  font-weight: normal;
  font-family: "Encode Sans Medium", sans-serif;
  background-color: #555555;
  display: none;
  padding: 1.42857rem 0 3.57143rem;
}
header nav .menu--secondary > li {
  display: block;
  float: left\0;
  padding: 0 1.42857rem;
  width: 50% \0;
}
header nav .menu--secondary > li a {
  -moz-transition-duration: 220ms;
  -o-transition-duration: 220ms;
  -webkit-transition-duration: 220ms;
  transition-duration: 220ms;
  -moz-transition-timing-function: ease-in;
  -o-transition-timing-function: ease-in;
  -webkit-transition-timing-function: ease-in;
  transition-timing-function: ease-in;
  -moz-transition-property: box-shadow;
  -o-transition-property: box-shadow;
  -webkit-transition-property: box-shadow;
  transition-property: box-shadow;
  -moz-box-shadow: 0 -1px 0 0 #777777 inset;
  -webkit-box-shadow: 0 -1px 0 0 #777777 inset;
  box-shadow: 0 -1px 0 0 #777777 inset;
  color: #d9d9d9;
  display: inline-block;
  padding: 1em 0;
  position: relative;
  width: 100%;
}
@media screen and (min-width: 62.75em) {
  header nav .menu--secondary > li a {
    -moz-box-shadow: 0 -1px 0 0 #d9d9d9 inset;
    -webkit-box-shadow: 0 -1px 0 0 #d9d9d9 inset;
    box-shadow: 0 -1px 0 0 #d9d9d9 inset;
  }
}
header nav .menu--secondary > li a:hover {
  -moz-box-shadow: 0 -4px 0 0 #d9d9d9 inset;
  -webkit-box-shadow: 0 -4px 0 0 #d9d9d9 inset;
  box-shadow: 0 -4px 0 0 #d9d9d9 inset;
}
@media screen and (max-width: 62.6875em) {
  header nav .menu--secondary {
    margin-left: -1.42857rem;
    margin-right: -1.42857rem;
  }
}
@media screen and (max-width: 62.6875em) {
  header nav.meta {
    padding: 0;
  }
  header nav.user {
    padding: 0;
  }
}
@media screen and (min-width: 62.75em) {
  header nav.main {
    min-height: 3.85714rem;
  }
}
@media screen and (min-width: 62.75em) {
  header nav.main .menu--primary {
    margin: 0 -1.42857rem;
    padding: 0 1.42857rem;
  }
  header nav.main .menu--primary > li {
    -moz-transition-duration: 220ms;
    -o-transition-duration: 220ms;
    -webkit-transition-duration: 220ms;
    transition-duration: 220ms;
    -moz-transition-timing-function: ease-in;
    -o-transition-timing-function: ease-in;
    -webkit-transition-timing-function: ease-in;
    transition-timing-function: ease-in;
    -moz-transition-property: background, box-shadow;
    -o-transition-property: background, box-shadow;
    -webkit-transition-property: background, box-shadow;
    transition-property: background, box-shadow;
    -moz-box-shadow: 0 32px 0 20px white inset;
    -webkit-box-shadow: 0 32px 0 20px white inset;
    box-shadow: 0 32px 0 20px white inset;
    background-color: white;
    cursor: pointer;
    float: left;
    padding: 0 1.42857rem;
  }
  header nav.main .menu--primary > li:hover {
    -moz-box-shadow: 0 30px 0 20px white inset;
    -webkit-box-shadow: 0 30px 0 20px white inset;
    box-shadow: 0 30px 0 20px white inset;
    background-color: #ffcc00;
  }
  header nav.main .menu--primary > li:hover ul {
    filter: progid:DXImageTransform.Microsoft.Alpha(enabled=false);
    opacity: 1;
    visibility: visible;
  }
  header nav.main .menu--primary > li > a {
    color: #0468a8;
    line-height: inherit;
    -moz-transition-duration: 220ms;
    -o-transition-duration: 220ms;
    -webkit-transition-duration: 220ms;
    transition-duration: 220ms;
    -moz-transition-timing-function: ease-in;
    -o-transition-timing-function: ease-in;
    -webkit-transition-timing-function: ease-in;
    transition-timing-function: ease-in;
    -moz-transition-property: color;
    -o-transition-property: color;
    -webkit-transition-property: color;
    transition-property: color;
    color: #1a1a1a;
    text-decoration: none;
    display: block;
    padding: 1.14286rem 0;
    text-transform: uppercase;
  }
  header nav.main .menu--primary > li > a:hover, header nav.main .menu--primary > li > a:focus, header nav.main .menu--primary > li > a:active {
    color: #5a5a5a;
    text-decoration: none;
  }
}
header nav.main .menu--secondary {
  -moz-column-count: 2;
  -webkit-column-count: 2;
  column-count: 2;
  -moz-column-gap: 0;
  -webkit-column-gap: 0;
  column-gap: 0;
}
@media screen and (min-width: 37.5em) {
  header nav.main .menu--secondary {
    -moz-column-count: 3;
    -webkit-column-count: 3;
    column-count: 3;
  }
  header nav.main .menu--secondary > li {
    width: 100%;
    width: 33.33333% \0;
  }
}
@media screen and (min-width: 62.75em) {
  header nav.main .menu--secondary {
    -moz-column-count: 4;
    -webkit-column-count: 4;
    column-count: 4;
    filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0);
    opacity: 0;
    transition-delay: .15s;
    background-color: white;
    display: block;
    left: 0;
    position: absolute;
    right: 0;
    top: 100%;
    visibility: hidden;
    width: 100%;
    z-index: 1;
  }
  header nav.main .menu--secondary li {
    width: 100%;
    width: 25% \0;
  }
  header nav.main .menu--secondary > li:first-child::before {
    -moz-box-shadow: 0 80px 100px rgba(0, 0, 0, 0.07);
    -webkit-box-shadow: 0 80px 100px rgba(0, 0, 0, 0.07);
    box-shadow: 0 80px 100px rgba(0, 0, 0, 0.07);
    background: white;
    border: 1px solid #e6e6e6;
    content: '';
    height: 101%;
    left: -200%;
    position: absolute;
    top: 0;
    width: 500%;
    z-index: 0;
  }
  header nav.main .menu--secondary a {
    color: #1a1a1a;
  }
}
header nav.meta .icon,
header nav.user .icon {
  text-indent: -119988px;
  overflow: hidden;
  text-align: left;
  text-transform: capitalize;
  color: #d9d9d9;
  display: block;
  position: relative;
}
header nav.meta .icon:hover,
header nav.user .icon:hover {
  color: white;
}
header nav.meta .icon.active::after,
header nav.user .icon.active::after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "t";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: block;
}
header nav.meta {
  padding-right: 0;
}
header nav.meta > ul {
  float: right;
}
header nav.meta > ul > li {
  float: left;
}
header nav.meta .active {
  background: #4d4d4d;
}
header nav.meta .search:after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "6";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: block;
}
header nav.meta .menu:after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "R";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: block;
}
header nav.user .cart__contents {
  display: none;
}
@media screen and (min-width: 62.75em) {
  header nav.user .account a.account-link {
    font-weight: normal;
    font-family: "Encode Sans Medium", sans-serif;
    display: inline-block;
    line-height: 1;
    border: 0.07143rem solid transparent;
    font-size: 1rem;
    -moz-border-radius: 1.21429rem;
    -webkit-border-radius: 1.21429rem;
    border-radius: 1.21429rem;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    padding: 0.67857rem 1.42857rem;
    text-decoration: none;
    -moz-transition-duration: 220ms;
    -o-transition-duration: 220ms;
    -webkit-transition-duration: 220ms;
    transition-duration: 220ms;
    -moz-transition-timing-function: ease-in;
    -o-transition-timing-function: ease-in;
    -webkit-transition-timing-function: ease-in;
    transition-timing-function: ease-in;
    -moz-transition-property: background-color;
    -o-transition-property: background-color;
    -webkit-transition-property: background-color;
    transition-property: background-color;
    -moz-transition-duration: 220ms;
    -o-transition-duration: 220ms;
    -webkit-transition-duration: 220ms;
    transition-duration: 220ms;
    -moz-transition-timing-function: ease-in;
    -o-transition-timing-function: ease-in;
    -webkit-transition-timing-function: ease-in;
    transition-timing-function: ease-in;
    -moz-transition-property: border-color;
    -o-transition-property: border-color;
    -webkit-transition-property: border-color;
    transition-property: border-color;
    background-color: transparent;
    border-color: #4d4d4d;
    color: #1a1a1a;
    background-color: transparent;
    border-color: #d9d9d9;
    color: #f7f7f7;
    display: inline-block;
    margin: 1em 0;
    width: auto;
  }
  header nav.user .account a.account-link:hover, header nav.user .account a.account-link:focus, header nav.user .account a.account-link:active {
    background-color: transparent;
    border-color: #8d8d8d;
    color: #5a5a5a;
  }
  header nav.user .account a.account-link:hover, header nav.user .account a.account-link:focus, header nav.user .account a.account-link:active {
    background-color: transparent;
    border-color: white;
    color: white;
  }
}
@media screen and (min-width: 62.75em) {
  header nav.user > ul {
    float: right;
  }
  header nav.user .cart .label {
    display: none;
  }
  header nav.user .account .menu--secondary,
  header nav.user .cart__contents {
    background: #4d4d4d;
    color: #d9d9d9;
    display: none;
    position: absolute;
    right: -1px;
    top: 100%;
    z-index: 2;
  }
  header nav.user .cart__contents {
    font-size: 1rem;
    padding: 2.85714rem 1.42857rem;
    width: 28.57143rem;
  }
  header nav.user .cart__contents table {
    width: 100%;
  }
  header nav.user .cart__contents td,
  header nav.user .cart__contents th {
    vertical-align: top;
  }
  header nav.user .cart__contents thead {
    display: none;
  }
  header nav.user .cart__contents .title {
    padding-left: 1.42857rem;
  }
  header nav.user .cart__contents .title a {
    color: #1a1a1a;
    font-size: 1rem;
    line-height: 1.57143;
    font-weight: normal;
    font-family: "Encode Sans Medium", sans-serif;
    color: #f7f7f7;
  }
  header nav.user .cart__contents .description,
  header nav.user .cart__contents .quantity {
    color: #999999;
    font-size: 0.92857rem;
    line-height: 1.53846;
    font-weight: normal;
    font-family: "Encode Sans Regular", sans-serif;
    color: #a6a6a6;
    padding-left: 1.42857rem;
  }
  header nav.user .cart__contents .quantity {
    padding-bottom: 1.42857rem;
  }
  header nav.user .cart__contents .price {
    color: #f7f7f7;
    padding-bottom: 1.42857rem;
  }
  header nav.user .cart__contents td.cover {
    padding-bottom: 1.42857rem;
    width: 5.71429rem;
  }
  header nav.user .cart__contents figure.cover {
    background: white;
    height: 5.71429rem;
    margin: 0;
    padding: 0.57143rem 1.07143rem 1.07143rem;
    width: 5.71429rem;
  }
  header nav.user .cart__contents figure.cover img {
    display: block;
    margin: 0 auto;
    max-height: 100%;
    width: auto;
  }
  header nav.user .cart__contents .price,
  header nav.user .cart__contents .subtotal {
    text-align: right;
  }
  header nav.user .cart__contents .total {
    border-top: 0.07143rem solid #333333;
    margin-top: 1.42857rem;
  }
  header nav.user .cart__contents .total td {
    color: #f7f7f7;
    padding-top: 0.85714rem;
    vertical-align: baseline;
  }
  header nav.user .cart__contents .subtotal {
    color: #1a1a1a;
    font-size: 1.71429rem;
    line-height: 1.25;
    font-weight: normal;
    font-family: "Encode Sans Condensed Semi Bold", sans-serif;
  }
  header nav.user .cart__contents .cart-buttons {
    padding-top: 1.85714rem;
  }
  header nav.user .cart__contents .cart-buttons .btn, header nav.user .cart__contents .cart-buttons .edition-page .product-title .product-cover .look-inside-badge, .edition-page .product-title .product-cover header nav.user .cart__contents .cart-buttons .look-inside-badge, header nav.user .cart__contents .cart-buttons .edition-page .extra-materials a, .edition-page .extra-materials header nav.user .cart__contents .cart-buttons a {
    text-align: center;
    width: 100%;
  }
  header nav.user .cart:hover .cart__contents {
    display: block;
  }
  header nav.user .account:hover .items {
    display: block;
    line-height: 3.92857rem;
    padding: 0 1.64286rem;
    text-align: left;
    width: 14.28571rem;
  }
  header nav.user .account:hover .items li {
    border-bottom: 0.07143rem solid #333333;
  }
  header nav.user .account:hover .items li:last-child {
    border-bottom-style: none;
  }
}
header .search {
  display: none;
}
@media screen and (min-width: 62.75em) {
  header .search {
    display: block;
    padding-top: 0.71429rem;
  }
}
header .search form {
  position: relative;
}
@media screen and (min-width: 62.75em) {
  header .search.state--active {
    background-color: transparent;
    position: relative;
    top: auto;
  }
}
header .search.state--active .search__term {
  background-color: white;
}
@media screen and (min-width: 62.75em) {
  header .search.state--active .search__submit {
    background-color: #333333;
    color: #f7f7f7;
  }
}
header .search__submit, header .search__term {
  -moz-border-radius: 1.21429rem;
  -webkit-border-radius: 1.21429rem;
  border-radius: 1.21429rem;
  background: #e6e6e6;
  border-color: transparent;
  height: 2.5rem;
  padding-bottom: 0;
  padding-top: 0;
  position: relative;
  z-index: 2;
}
header .search__term {
  -moz-transition-property: background-color, border-color;
  -o-transition-property: background-color, border-color;
  -webkit-transition-property: background-color, border-color;
  transition-property: background-color, border-color;
  padding-left: 1.28571rem;
}
header .search__submit {
  -moz-transition-property: background-color, color;
  -o-transition-property: background-color, color;
  -webkit-transition-property: background-color, color;
  transition-property: background-color, color;
  -moz-border-radius-topleft: 0;
  -webkit-border-top-left-radius: 0;
  border-top-left-radius: 0;
  -moz-border-radius-bottomleft: 0;
  -webkit-border-bottom-left-radius: 0;
  border-bottom-left-radius: 0;
  text-indent: -119988px;
  overflow: hidden;
  text-align: left;
  text-transform: capitalize;
  position: absolute;
  right: 0;
  top: 0;
  width: 3.21429rem;
  z-index: 1;
}
header .search__submit:after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "6";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: block;
  left: 0.57143rem;
  text-indent: 0;
  top: 0;
}

.branding-container .menu--primary {
  font-size: 0;
}
@media screen and (min-width: 62.75em) {
  .branding-container .menu--primary > li {
    display: inline-block;
    position: relative;
    vertical-align: middle;
  }
  .branding-container .menu--primary > li > a {
    color: #d9d9d9;
    display: block;
    font-size: 1rem;
    padding: 1.5rem 1rem;
    position: relative;
    z-index: 1;
  }
  .branding-container .menu--primary > li > a:hover, .branding-container .menu--primary > li:hover > a, .branding-container .menu--primary > li.state--active > a {
    background-color: #4d4d4d;
    color: #ffcc00;
  }
  .branding-container .menu--primary li.access {
    margin-left: 1rem;
  }
  .branding-container .menu--primary > li:not(.access)::after, .branding-container .menu--primary > li:not(.access)::before {
    -moz-transform: translateY(-50%);
    -ms-transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
    transform: translateY(-50%);
    content: '';
    height: 2.5rem;
    position: absolute;
    top: 50%;
  }
  .branding-container .menu--primary > li:not(.access)::before {
    border-left: 1px solid #666666;
    left: 0;
  }
  .branding-container .menu--primary > li:not(.access)::after {
    border-right: 1px solid #666666;
    right: 0;
  }
  .branding-container .menu--primary > li:not(.access):hover::before {
    -moz-transform: none;
    -ms-transform: none;
    -webkit-transform: none;
    transform: none;
    background-color: #4d4d4d;
    border: 0;
    bottom: 0;
    height: 100%;
    left: -1px;
    right: -1px;
    top: 0;
    z-index: 1;
  }
  .branding-container .menu--primary > li:not(.access):first-child::before {
    border-width: 0;
  }
  .branding-container .menu--primary > li:not(.access):first-child::after {
    display: none;
  }
  .branding-container .menu--primary .access a {
    font-weight: normal;
    font-family: "Encode Sans Medium", sans-serif;
    display: inline-block;
    line-height: 1;
    border: 0.07143rem solid transparent;
    font-size: 1rem;
    -moz-border-radius: 1.21429rem;
    -webkit-border-radius: 1.21429rem;
    border-radius: 1.21429rem;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    padding: 0.67857rem 1.42857rem;
    text-decoration: none;
    -moz-transition-duration: 220ms;
    -o-transition-duration: 220ms;
    -webkit-transition-duration: 220ms;
    transition-duration: 220ms;
    -moz-transition-timing-function: ease-in;
    -o-transition-timing-function: ease-in;
    -webkit-transition-timing-function: ease-in;
    transition-timing-function: ease-in;
    -moz-transition-property: background-color;
    -o-transition-property: background-color;
    -webkit-transition-property: background-color;
    transition-property: background-color;
    -moz-transition-duration: 220ms;
    -o-transition-duration: 220ms;
    -webkit-transition-duration: 220ms;
    transition-duration: 220ms;
    -moz-transition-timing-function: ease-in;
    -o-transition-timing-function: ease-in;
    -webkit-transition-timing-function: ease-in;
    transition-timing-function: ease-in;
    -moz-transition-property: border-color;
    -o-transition-property: border-color;
    -webkit-transition-property: border-color;
    transition-property: border-color;
    background-color: transparent;
    border-color: #4d4d4d;
    color: #1a1a1a;
    background-color: transparent;
    border-color: #d9d9d9;
    color: #f7f7f7;
  }
  .branding-container .menu--primary .access a:hover, .branding-container .menu--primary .access a:focus, .branding-container .menu--primary .access a:active {
    background-color: transparent;
    border-color: #8d8d8d;
    color: #5a5a5a;
  }
  .branding-container .menu--primary .access a:hover, .branding-container .menu--primary .access a:focus, .branding-container .menu--primary .access a:active {
    background-color: transparent;
    border-color: white;
    color: white;
  }
}
.branding-container .menu--secondary {
  font-size: 1rem;
}
@media screen and (min-width: 62.75em) {
  .branding-container .menu--secondary li,
  .branding-container .menu--secondary a {
    -moz-box-shadow: none !important;
    -webkit-box-shadow: none !important;
    box-shadow: none !important;
    padding: 0;
  }
}

@media screen and (max-width: 62.6875em) {
  html.header__state--navigation-visible {
    overflow: hidden;
  }

  header.header__state--navigation-visible {
    background-color: #333333;
    bottom: 0;
    left: 0;
    overflow-y: auto;
    position: fixed;
    right: 0;
    top: 0;
  }
  header.header__state--navigation-visible nav .menu--primary {
    display: block;
  }
  header.header__state--navigation-visible .meta__menu {
    background-color: #4d4d4d;
    color: #ffcc00;
  }
  header.header__state--navigation-visible .meta__menu .menu:after {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    content: "t";
    font-family: "apress_icons";
    font-size: 1.42857rem;
    text-transform: none;
    position: absolute;
    display: block;
  }
  header.header__state--navigation-visible nav.meta {
    padding-right: 0;
  }
  header.header__state--navigation-visible nav.meta > ul {
    float: right;
  }
  header.header__state--navigation-visible nav.meta > ul > li {
    float: left;
  }
  header.header__state--navigation-visible nav.meta .active {
    background: #4d4d4d;
  }
  header.header__state--navigation-visible nav.meta .search:after {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    content: "6";
    font-family: "apress_icons";
    font-size: 1.42857rem;
    text-transform: none;
    position: absolute;
    display: block;
  }
}
@media screen and (max-width: 62.6875em) and (max-width: 62.6875em) {
  header.header__state--search-visible .search {
    background-color: #4d4d4d;
    display: block;
    padding: 2.14286rem 1.42857rem;
    position: absolute;
  }
  header.header__state--search-visible .search .search__term {
    background-color: white;
    border-color: white;
  }
  header.header__state--search-visible .search .search__submit {
    background-color: #ffcc00;
    color: #1a1a1a;
  }
}
@media screen and (max-width: 62.6875em) {
  header.header__state--search-visible nav.meta .search:after {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    content: "t";
    font-family: "apress_icons";
    font-size: 1.42857rem;
    text-transform: none;
    position: absolute;
    display: block;
  }
}
#search-field {
  z-index: 1;
  position: absolute;
  right: 0;
  left: 0;
}
#search-field .search-field.focus {
  outline: 0;
  color: #555555;
  border-color: #4d4d4d;
}
#search-field .search-field--suggestions {
  margin-left: 0;
  margin-right: 3.28571rem;
  margin-top: -2.28571rem;
  padding-top: 2.92857rem;
  position: relative;
  z-index: 1;
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.1);
  border-radius: 1.21429rem 0 0 0;
  background: white;
}
#search-field .search-field--suggestions li {
  background-color: white;
  cursor: pointer;
  padding: 0.42857rem 0.85714rem;
}
#search-field .search-field--suggestions li:hover, #search-field .search-field--suggestions li.selected {
  background-color: #e6e6e6;
}
#search-field .search-field--suggestions li mark {
  background-color: transparent;
  font-weight: normal;
  font-family: "Encode Sans Semi Bold", sans-serif;
}

.toggleable-mini-cart {
  display: inline-block;
  position: relative;
  vertical-align: middle;
}
.toggleable-mini-cart > a {
  color: #d9d9d9;
  display: block;
  font-size: 1rem;
  padding: 1.5rem 1rem;
  position: relative;
  z-index: 1;
}
.toggleable-mini-cart > a:hover, .toggleable-mini-cart:hover > a, .toggleable-mini-cart.state--active > a {
  background-color: #4d4d4d;
  color: #ffcc00;
}
.toggleable-mini-cart__body {
  background-color: #4d4d4d;
  display: none;
  position: absolute;
  right: 0;
  width: 440px;
}
@media screen and (min-width: 62.75em) {
  .toggleable-mini-cart:hover .toggleable-mini-cart__body {
    display: block;
  }
}
.toggleable-mini-cart__toggle {
  padding-left: 2.35714rem !important;
}
.toggleable-mini-cart__toggle > span {
  display: block;
  min-height: 1.67em;
}
.toggleable-mini-cart__toggle::before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "V";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: relative;
  display: inline;
  left: 0.57143rem;
  margin-top: -5px;
  position: absolute;
}
.toggleable-mini-cart__toggle__quantity-unit {
  display: none;
}
.toggleable-mini-cart .mini-cart {
  padding: 2.85714rem 1.42857rem;
}
.toggleable-mini-cart .mini-cart li + li {
  margin-top: 1.42857rem;
}
.toggleable-mini-cart .mini-cart li > div + div {
  padding-left: 1.42857rem;
}
.toggleable-mini-cart .mini-cart__item {
  font-size: 0;
}
.toggleable-mini-cart .mini-cart__item__cover, .toggleable-mini-cart .mini-cart__item__info, .toggleable-mini-cart .mini-cart__item__total-price {
  display: inline-block;
  vertical-align: top;
}
.toggleable-mini-cart .mini-cart__item__cover {
  width: 20%;
}
.toggleable-mini-cart .mini-cart__item__cover a {
  background-color: white;
  text-align: center;
  padding-bottom: 1.07143rem;
  padding-left: 1.07143rem;
  padding-right: 1.07143rem;
  padding-top: 0.57143rem;
}
.toggleable-mini-cart .mini-cart__item__cover img {
  width: 41px;
}
.toggleable-mini-cart .mini-cart__item__info {
  font-size: 1rem;
  width: 50%;
}
.toggleable-mini-cart .mini-cart__item__title {
  color: white;
}
.toggleable-mini-cart .mini-cart__item__description, .toggleable-mini-cart .mini-cart__item__quantity {
  color: #a6a6a6;
}
.toggleable-mini-cart .mini-cart__item__total-price {
  color: white;
  font-size: 1rem;
  text-align: right;
  width: 30%;
}
.toggleable-mini-cart .mini-cart__sub-total {
  font-size: 0;
  border-top: 0.07143rem solid #333333;
  padding-top: 0.85714rem;
  margin-top: 1.42857rem;
}
.toggleable-mini-cart .mini-cart__sub-total__label, .toggleable-mini-cart .mini-cart__sub-total__value {
  display: inline-block;
  vertical-align: top;
}
.toggleable-mini-cart .mini-cart__sub-total__label {
  color: white;
  font-size: 1rem;
  width: 70%;
}
.toggleable-mini-cart .mini-cart__sub-total__value {
  color: white;
  font-size: 1.71429rem;
  text-align: right;
  width: 30%;
}
.toggleable-mini-cart .mini-cart__submit {
  margin-top: 1.85714rem;
}
.toggleable-mini-cart .mini-cart__message {
  color: #fff;
  font-size: 1.07143rem;
  font-weight: bold;
  text-align: center;
}
.toggleable-mini-cart .btn-primary, .toggleable-mini-cart #reader-overlay #reader #reader-buttons a, #reader-overlay #reader #reader-buttons .toggleable-mini-cart a {
  box-sizing: border-box;
  text-align: center;
  width: 100%;
}

.footer span, footer span,
.footer a,
footer a {
  color: #999999;
}
.footer a:hover, footer a:hover, .footer a:focus, footer a:focus, .footer a:active, footer a:active {
  color: #ffffff;
  text-decoration: none;
}
.footer__links {
  background-color: #1a1a1a;
  padding: 0.71429rem 0 4.28571rem;
}
.footer__links h6, .footer__links__headline {
  display: block;
  color: #f7f7f7;
  margin: 0.71429rem 0 0.42857rem;
  min-height: 2.35714rem;
  padding-bottom: 0.71429rem;
  border-bottom: 0.07143rem solid #4d4d4d;
}
@media screen and (min-width: 37.5em) {
  .footer__links h6, .footer__links__headline {
    margin: 2.85714rem 0 0.42857rem;
    padding-bottom: 0.71429rem;
  }
}
.footer__links__column__links {
  border-bottom: 0.07143rem solid #4d4d4d;
  padding: 0.42857rem 0 1.42857rem;
}
@media screen and (min-width: 37.5em) {
  .footer__links__column__links {
    border-bottom: none;
    padding: 0.21429rem 0 0;
  }
}
.footer__links__verisign {
  margin: 0.71429rem 0 0.42857rem;
}
@media screen and (min-width: 37.5em) {
  .footer__links__verisign {
    margin: 2.85714rem 0 0.42857rem;
    text-align: right;
  }
}
.footer__links li + li {
  margin-top: 0.21429rem;
}
.footer__links h6 {
  display: none;
}
@media screen and (min-width: 37.5em) {
  .footer__links h6 {
    display: block;
  }
}
.footer__links__payment {
  margin: 0.85714rem 0 0.42857rem;
  padding-bottom: 0.71429rem;
  border-bottom: 0.07143rem solid #4d4d4d;
}
.footer__links__payment i {
  color: #999999;
  font-size: 2.14286rem;
  font-style: normal;
  margin-right: 0.21429rem;
}
.footer__meta {
  background-color: #000000;
  padding: 1.07143rem 0;
}
.footer__meta__logo {
  display: inline-block;
  background: url("/spcom/sites/apress/images/logo.png");
  background: url("/spcom/sites/apress/images/logo.svg"), linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0));
  background-repeat: no-repeat;
  background-position: 0 0;
  background-size: contain;
  width: 133px;
  height: 30px;
}
.footer__meta__links {
  padding: 0.35714rem 0 0;
}
.footer__meta__links::before, .footer__meta__links::after {
  content: ' ';
  display: table;
}
.footer__meta__links::after {
  clear: both;
}
@media screen and (min-width: 62.75em) {
  .footer__meta__links li {
    float: left;
    margin: 0 2.42857rem 0 0;
  }
}
.footer__meta__social::before, .footer__meta__social::after {
  content: ' ';
  display: table;
}
.footer__meta__social::after {
  clear: both;
}
.footer__meta__social li {
  float: right;
  margin: 0.35714rem 0 0 0.71429rem;
}
.footer__meta__social li.footer-icon {
  margin-top: 0;
}
.footer__meta__social li.footer-icon a {
  border: 0.07143rem solid #999999;
  border-radius: 50%;
  cursor: default;
  display: inline-block;
  height: 2.5rem;
  line-height: 2.5rem;
  text-align: center;
  width: 2.5rem;
  font-size: 1.42857rem;
}
.footer__meta__social li.footer-icon a:hover, .footer__meta__social li.footer-icon a:focus, .footer__meta__social li.footer-icon a:active {
  color: #ffffff;
  text-decoration: none;
  border-color: #ffffff;
}
.footer__meta__diagnostic {
  display: none;
}
.footer__meta__diagnostic li {
  float: left;
  margin: 0 2.42857rem 0 0;
}
.footer__meta__diagnostic li span {
  color: #555555;
}

#jsnotice,
.banner-message {
  font-size: 1.14286rem;
  padding-bottom: 0.71429rem;
  padding-top: 0.71429rem;
  padding-right: 7.14286rem;
  position: relative;
}
#jsnotice + #jsnotice::before,
.banner-message + #jsnotice::before, #jsnotice +
.banner-message::before,
.banner-message +
.banner-message::before {
  border-top: 1px solid #333333;
}
#jsnotice::before,
.banner-message::before {
  background-color: #d9d9d9;
  bottom: 0;
  display: block;
  left: -200%;
  position: absolute;
  top: 0;
  right: -200%;
  z-index: -1;
}
#jsnotice p::before,
.banner-message p::before {
  float: left;
  font-size: 1.42857rem;
}
#jsnotice#cookie-banner,
.banner-message#cookie-banner {
  padding-bottom: 1.07143rem;
  padding-top: 1.07143rem;
}
#jsnotice#cookie-banner p::before,
.banner-message#cookie-banner p::before {
  content: "l";
}
#jsnotice#change-site-message p,
.banner-message#change-site-message p {
  line-height: 2.2;
}
#jsnotice#change-site-message p::before,
.banner-message#change-site-message p::before {
  content: "¬";
}
#jsnotice .close-message,
.banner-message .close-message {
  border-left: 1px solid rgba(26, 26, 26, 0.2);
  padding-left: 0.85714rem;
  position: absolute;
  right: 1.42857rem;
  text-decoration: none;
}
#jsnotice .close-message:hover,
.banner-message .close-message:hover {
  color: #555555;
}
#jsnotice .close-message::after,
.banner-message .close-message::after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "t";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: relative;
  display: inline;
  display: block;
  line-height: 2.57143rem;
}

#jsnotice {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
}
#jsnotice::before {
  border-bottom: 1px solid #333333;
}
#jsnotice p {
  line-height: 2.2;
}
#jsnotice p::before {
  content: "J";
}

.no-js body {
  padding-top: 3.92857rem;
  position: relative;
}

.book-metrics > img {
  display: block;
  margin: 0 auto;
}
.book-metrics h2 {
  padding-bottom: 1.42857rem;
}
.book-metrics li,
.book-metrics .book-metrics-footer {
  display: block;
  padding: 0.71429rem 0;
}
.book-metrics li {
  border-bottom: 0.07143rem solid #e6e6e6;
}
.book-metrics li a {
  position: relative;
  padding-left: 10px;
}
.book-metrics li a::before, .book-metrics li a::after {
  content: ' ';
  display: table;
}
.book-metrics li a::after {
  clear: both;
}
.book-metrics li a,
.book-metrics li a span {
  display: block;
}
.book-metrics li .book-metric-item-name {
  float: left;
  padding-left: 1.85714rem;
}
.book-metrics li .book-metric-item-value {
  color: #999999;
  float: right;
}
.book-metrics li a::before {
  display: block;
  font-size: 1.42857rem;
  padding-right: 0.71429rem;
  left: 0;
  top: -0.35714rem;
}
.book-metrics li.readers a::before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "®";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: block;
}
.book-metrics li.reviews a::before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "¸";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: block;
}
.book-metrics li.downloads a::before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "∂";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: block;
}
.book-metrics .book-metrics-footer {
  text-align: right;
}

.product-services h3 {
  margin-bottom: 1rem;
}
.product-services a {
  display: block;
  padding: 0.57143rem 0;
}

.product-buy {
  padding: 0;
}
.product-buy .cover-type,
.product-buy .price {
  display: block;
}
.product-buy .cover-type {
  cursor: pointer;
  float: left;
  padding-left: 1.07143rem;
  padding-top: 0.57143rem;
  position: relative;
}
.product-buy .cover-type::before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "A";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: block;
  -moz-transition: -moz-transform 300ms;
  -o-transition: -o-transform 300ms;
  -webkit-transition: -webkit-transform 300ms;
  transition: transform 300ms;
  font-size: 1.42857rem;
  left: 0;
  top: 0.35714rem;
}
.product-buy .open .cover-type::before {
  -moz-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  -webkit-transform: rotate(90deg);
  transform: rotate(90deg);
}
.product-buy .price {
  float: right;
  text-align: right;
}
.product-buy .price-box::before, .product-buy .price-box::after {
  content: ' ';
  display: table;
}
.product-buy .price-box::after {
  clear: both;
}
.product-buy .btn-primary.btn, .product-buy #reader-overlay #reader #reader-buttons a.btn, #reader-overlay #reader #reader-buttons .product-buy a.btn, .product-buy #reader-overlay #reader #reader-buttons .edition-page .product-title .product-cover a.look-inside-badge, #reader-overlay #reader #reader-buttons .edition-page .product-title .product-cover .product-buy a.look-inside-badge, .product-buy .edition-page .product-title .product-cover #reader-overlay #reader #reader-buttons a.look-inside-badge, .edition-page .product-title .product-cover #reader-overlay #reader #reader-buttons .product-buy a.look-inside-badge, .product-buy #reader-overlay #reader #reader-buttons .edition-page .extra-materials a, #reader-overlay #reader #reader-buttons .edition-page .extra-materials .product-buy a, .product-buy .edition-page .extra-materials #reader-overlay #reader #reader-buttons a, .edition-page .extra-materials #reader-overlay #reader #reader-buttons .product-buy a, .product-buy .edition-page .product-title .product-cover .btn-primary.look-inside-badge, .edition-page .product-title .product-cover .product-buy .btn-primary.look-inside-badge, .product-buy .edition-page .extra-materials a.btn-primary, .edition-page .extra-materials .product-buy a.btn-primary {
  margin: 1.07143rem 0;
  text-align: center;
  width: 100%;
}
.product-buy .download-section .subscription-validity {
  color: #1a1a1a;
  font-size: 1.71429rem;
  line-height: 1.25;
  font-weight: normal;
  font-family: "Encode Sans Condensed Light", sans-serif;
  font-size: 1.14286rem;
  margin: 1.07143rem 0;
}
.product-buy .download-section .subscription-validity strong {
  font-weight: normal;
  font-family: "Encode Sans Condensed Semi Bold", sans-serif;
  display: block;
}
.product-buy .download-section .subscription-validity--important {
  color: #b30000 !important;
}
.product-buy .download-section .btn, .product-buy .download-section .edition-page .product-title .product-cover .look-inside-badge, .edition-page .product-title .product-cover .product-buy .download-section .look-inside-badge, .product-buy .download-section .edition-page .extra-materials a, .edition-page .extra-materials .product-buy .download-section a {
  display: block;
  position: relative;
}
.product-buy .download-section .btn::before, .product-buy .download-section .edition-page .product-title .product-cover .look-inside-badge::before, .edition-page .product-title .product-cover .product-buy .download-section .look-inside-badge::before, .product-buy .download-section .edition-page .extra-materials a::before, .edition-page .extra-materials .product-buy .download-section a::before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "…";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: relative;
  display: inline;
  display: inline-block;
  left: 1rem;
  position: absolute;
  top: 0.85714rem;
  transition: opacity .2s;
  opacity: 0;
}
.product-buy .download-section .btn.loading::before, .product-buy .download-section .edition-page .product-title .product-cover .loading.look-inside-badge::before, .edition-page .product-title .product-cover .product-buy .download-section .loading.look-inside-badge::before, .product-buy .download-section .edition-page .extra-materials a.loading::before, .edition-page .extra-materials .product-buy .download-section a.loading::before {
  opacity: 1;
}
.product-buy .box-primary h3,
.product-buy .box-primary .expander dd,
.product-buy .box-primary .expander dt,
.product-buy .box-primary .buy-footer,
.product-buy .box-primary .download-section {
  background: white;
  display: block;
  padding: 1.07143rem 1.42857rem;
}
.product-buy .box-primary .expander dt,
.product-buy .box-primary .buy-footer,
.product-buy .box-primary .download-section {
  margin-top: 0.14286rem;
}
.product-buy .box-primary h3 {
  padding: 1.42857rem;
  position: relative;
}
.product-buy .box-primary .expander dt {
  cursor: pointer;
}
.product-buy .box-primary .expander dt + dd {
  display: none;
}
.product-buy .box-primary .expander dt.open + dd {
  display: block;
}
.product-buy .box-primary .expander dd {
  padding-top: 0.21429rem;
}
.product-buy .box-primary .price-note,
.product-buy .box-primary .list-price {
  display: block;
  text-align: right;
}
.product-buy .box-primary .price-note .amount,
.product-buy .box-primary .list-price .amount {
  text-decoration: line-through;
}
.product-buy .box-primary .price-note {
  color: #999999;
}
.product-buy .box-primary ul {
  list-style-type: disc;
  padding-left: 1.42857rem;
}
.product-buy .box-primary ul li {
  margin-bottom: 0.57143rem;
}
.product-buy .box-primary ul li:last-child {
  margin-bottom: 0;
}
.product-buy .box-primary ul li.notbuyable {
  color: #b30000;
}
.product-buy.apress-access .box-primary h3::after {
  border: 0.07143rem solid #1a1a1a;
  border-radius: 50%;
  cursor: default;
  display: inline-block;
  height: 2.5rem;
  line-height: 2.5rem;
  text-align: center;
  width: 2.5rem;
  background: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 29 20'%3E%3Cpath style='fill:rgb(247,247,247)' d='M22.5 0C18.91 0 16 2.91 16 6.5s2.91 6.5 6.5 6.5S29 10.09 29 6.5 26.09 0 22.5 0zM26.84 4.42l-5.63 5.42c-0.05 0.06-0.11 0.1-0.18 0.12 -0.07 0.02-0.14 0.04-0.21 0.04 -0.07 0-0.14-0.01-0.21-0.04s-0.13-0.07-0.18-0.12l-2.25-2.16C18.06 7.57 18 7.44 18 7.3c0-0.15 0.06-0.28 0.17-0.38s0.24-0.16 0.4-0.16c0.15 0 0.29 0.05 0.4 0.16l1.85 1.78 5.23-5.04c0.11-0.11 0.24-0.16 0.4-0.16 0.15 0 0.29 0.05 0.4 0.16S27 3.89 27 4.04C27 4.19 26.95 4.32 26.84 4.42z'/%3E%3Cpath style='fill:rgb(247,247,247)' d='M23 14.5c0-0.28-0.22-0.5-0.5-0.5S22 14.22 22 14.5v2.59c0 0.01 0.01 0.02 0.01 0.03v1.56c-0.12-0.06-0.25-0.11-0.38-0.16 -0.41-0.17-0.86-0.32-1.34-0.45 -0.48-0.13-1-0.23-1.54-0.31 -0.55-0.08-1.13-0.12-1.75-0.12 -0.6 0-1.19 0.04-1.74 0.11 -0.55 0.07-1.07 0.18-1.55 0.31 -0.48 0.13-0.93 0.28-1.33 0.45 -0.13 0.05-0.25 0.11-0.37 0.16V6.39c0.16-0.11 0.35-0.23 0.57-0.35 0.3-0.17 0.68-0.34 1.12-0.5 0.39-0.14 0.85-0.26 1.35-0.36 0.01 0 0.02 0 0.03 0 0.27-0.05 0.45-0.31 0.4-0.58 -0.05-0.26-0.29-0.43-0.55-0.4 0 0-0.07 0.01-0.12 0.02C14.24 4.32 13.8 4.43 13.35 4.59c-0.5 0.18-0.92 0.37-1.27 0.57 -0.22 0.13-0.4 0.24-0.57 0.36C11.34 5.41 11.15 5.29 10.93 5.17c-0.36-0.2-0.77-0.39-1.27-0.57 -0.48-0.17-1.03-0.32-1.64-0.43 -1.21-0.22-2.8-0.22-4.02 0C3.38 4.28 2.83 4.42 2.35 4.59c-0.5 0.18-0.92 0.37-1.27 0.57C0.72 5.37 0.43 5.56 0.19 5.74 0.07 5.84 0 5.98 0 6.14V19.5c0 0.18 0.1 0.34 0.25 0.43 0.15 0.09 0.34 0.09 0.5 0 0.31-0.17 0.65-0.34 1.01-0.49 0.37-0.15 0.78-0.29 1.22-0.41 0.44-0.12 0.91-0.21 1.42-0.28 1.02-0.13 2.23-0.13 3.22 0.01 0.51 0.07 0.99 0.17 1.43 0.28 0.43 0.12 0.84 0.25 1.21 0.4 0.36 0.15 0.7 0.31 1 0.48 0 0 0 0 0.01 0.01 0.08 0.05 0.17 0.07 0.25 0.07 0 0 0 0 0.01 0 0.09 0 0.17-0.02 0.25-0.07 0 0 0 0 0.01 0 0.3-0.17 0.64-0.33 0.99-0.48 0.37-0.15 0.78-0.29 1.22-0.41 0.44-0.12 0.91-0.21 1.42-0.28 1.02-0.13 2.23-0.13 3.22 0.01 0.51 0.07 0.99 0.17 1.43 0.28 0.43 0.12 0.84 0.25 1.21 0.4 0.37 0.15 0.71 0.32 1.01 0.49C22.34 19.98 22.42 20 22.51 20c0.09 0 0.17-0.02 0.25-0.07 0.15-0.09 0.25-0.25 0.25-0.43v-3.91c0 0 0 0-0.01 0V14.5zM11 18.68c-0.12-0.05-0.24-0.11-0.37-0.16 -0.41-0.17-0.86-0.32-1.34-0.45 -0.48-0.13-1-0.23-1.54-0.31 -0.55-0.08-1.13-0.12-1.75-0.12 -0.6 0-1.19 0.04-1.74 0.11 -0.55 0.07-1.07 0.18-1.55 0.31 -0.48 0.13-0.93 0.28-1.33 0.45C1.25 18.57 1.12 18.63 1 18.68V6.39C1.16 6.28 1.35 6.16 1.58 6.03c0.3-0.17 0.68-0.34 1.12-0.5C3.12 5.38 3.62 5.25 4.17 5.15c1.1-0.2 2.56-0.2 3.66 0 0.56 0.1 1.06 0.23 1.48 0.38 0.44 0.16 0.81 0.33 1.12 0.5C10.65 6.16 10.84 6.28 11 6.39V18.68z'/%3E%3C/svg%3E") no-repeat #333333;
  background-clip: content-box;
  background-size: 56%;
  background-position: 55% 46%;
  border: 0;
  content: '';
  height: 3.71429rem;
  position: absolute;
  right: 0.71429rem;
  top: 0.64286rem;
  width: 3.71429rem;
}
.product-buy .cms-icon-shop,
.product-buy .buy-footer-links a {
  display: inline-block;
  margin-right: 0.71429rem;
}
.product-buy .cms-icon-shop:last-child,
.product-buy .buy-footer-links a:last-child {
  margin-right: 0;
}
.product-buy .cms-icon-shop {
  width: 2.78571rem;
  height: 1.85714rem;
}
.product-buy .buy-footer-links {
  margin-top: 0.71429rem;
}

.edition-page {
  margin-bottom: 5rem;
}
.edition-page .col-main .product-buy {
  display: block;
  margin-top: 1.42857rem;
}
@media screen and (min-width: 37.5em) {
  .edition-page .col-main .product-buy {
    display: none;
  }
}
.edition-page .col-aside .product-buy {
  display: none;
}
@media screen and (min-width: 37.5em) {
  .edition-page .col-aside .product-buy {
    display: block;
  }
}
.edition-page .product-title .copyright {
  color: #999999;
  margin-bottom: 0.42857rem;
}
.edition-page .product-title .bibliographic-information h1 {
  margin-bottom: 0;
}
.edition-page .product-title .bibliographic-information h2 {
  padding-top: 0.28571rem;
}
.edition-page .product-title .bibliographic-information p,
.edition-page .product-title .bibliographic-information .btn,
.edition-page .product-title .bibliographic-information .product-cover .look-inside-badge,
.edition-page .product-title .product-cover .bibliographic-information .look-inside-badge,
.edition-page .product-title .bibliographic-information .extra-materials a,
.edition-page .extra-materials .product-title .bibliographic-information a {
  margin: 0.71429rem 0;
}
.edition-page .product-title .product-cover .link-image {
  display: block;
  margin-bottom: 3.21429rem;
  position: relative;
}
.edition-page .product-title .product-cover .look-inside-badge {
  display: block;
  left: 0;
  margin-top: 0.71429rem;
  padding-left: 0.35714rem;
  padding-right: 0.35714rem;
  position: absolute;
  text-align: center;
  top: 100%;
  width: 100%;
}
@media screen and (min-width: 37.5em) {
  .edition-page .product-title .product-cover .look-inside-badge {
    white-space: nowrap;
  }
}
.edition-page .product-title .product-cover img {
  display: block;
  max-width: 100%;
}
.edition-page .product-title .product-cover .publisher-logo {
  display: none;
}
.edition-page .product-title .bibliographic-information {
  padding: 0 0 0.71429rem 1.42857rem;
}
.edition-page .product-title .usps ol,
.edition-page .product-title .usps ul {
  list-style-type: none;
  padding-left: 2.5rem;
}
.edition-page .product-title .usps ol.column, .edition-page .product-title .usps ol.columns,
.edition-page .product-title .usps ul.column,
.edition-page .product-title .usps ul.columns {
  padding-left: 5.35714rem;
}
.edition-page .product-title .usps li {
  margin-top: 0.28571rem;
  margin-bottom: 2.14286rem;
  position: relative;
}
.edition-page .product-title .usps li::before {
  border: 0.07143rem solid #4d4d4d;
  border-radius: 50%;
  cursor: default;
  display: inline-block;
  height: 1.78571rem;
  line-height: 1.78571rem;
  text-align: center;
  width: 1.78571rem;
  background-color: transparent;
  text-align: center;
  content: " ";
  position: absolute;
  left: -2.5rem;
  top: -0.28571rem;
}
.edition-page .product-title .usps ul li::before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "U";
  font-family: "apress_icons";
  font-size: 0.92857rem;
  text-transform: none;
  position: absolute;
  display: inline;
}
.edition-page .product-title .usps ol:first-child {
  counter-reset: largelistcounter;
}
.edition-page .product-title .usps ol > li {
  counter-increment: largelistcounter;
}
.edition-page .product-title .usps ol > li:before {
  content: counter(largelistcounter) " ";
  text-align: center;
}
.edition-page .product-title .usps ul {
  overflow: hidden;
}
.edition-page .product-title .usps ul li {
  color: #555555;
  font-size: 1rem;
  line-height: 1.57143;
  font-weight: normal;
  font-family: "Encode Sans Regular", sans-serif;
  display: none;
  margin-bottom: 1rem;
}
.edition-page .product-title .usps ul li:first-child {
  display: block;
}
.edition-page .product-title .usps ul li::before {
  background-color: #e6e6e6;
  border-color: transparent;
  color: #1a1a1a;
}
.edition-page .product-title .usps .action-show-all {
  display: block;
  padding: 0.35714rem 0 0;
  margin-top: -0.35714rem;
  padding-top: 0;
}
.edition-page .product-title .usps .action-show-all::after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "C";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: relative;
  display: inline-block;
  left: 0.28571rem;
  top: 0.28571rem;
}
.edition-page .product-title .usps.open li {
  display: block;
}
.edition-page .product-title .usps.open .action-show-all {
  display: none;
}
.edition-page .product-title .usps.open ul {
  max-height: 157.14286rem;
}
.edition-page .product-about .product-tabs {
  margin-bottom: 1.42857rem;
}
.edition-page .product-about .product-tabs::before, .edition-page .product-about .product-tabs::after {
  content: ' ';
  display: table;
}
.edition-page .product-about .product-tabs::after {
  clear: both;
}
.edition-page .product-about .product-tabs li a {
  border-bottom: 0.28571rem solid transparent;
  color: #1a1a1a;
  display: block;
  float: left;
  margin-right: 2.14286rem;
  padding: 0.71429rem 0 0.42857rem;
}
.edition-page .product-about .product-tabs li a:hover {
  border-bottom-color: #d9d9d9;
}
.edition-page .product-about .product-tabs li.active a {
  border-bottom-color: #ffcc00;
}
.edition-page .product-about .product-tabs li.active a:hover {
  border-bottom-color: #ffdb4d;
}
.edition-page .product-about .product-tabs li:last-child {
  margin-right: 0;
}
.edition-page .product-about .cms-tab-panel .cms-tab-content .springer-html {
  max-height: 9.42857rem;
  overflow: hidden;
}
.edition-page .product-about .cms-tab-panel .cms-tab-content .springer-html p {
  margin-bottom: .5em;
}
.edition-page .product-about .cms-tab-panel .cms-tab-content .springer-html ul {
  padding-left: 2.5em;
  margin-bottom: .5em;
  list-style-type: disc;
}
.edition-page .product-about .cms-tab-panel .cms-tab-content .action-show-all {
  display: block;
  padding: 0.35714rem 0 0;
}
.edition-page .product-about .cms-tab-panel .cms-tab-content .action-show-all::after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "C";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: relative;
  display: inline-block;
  left: 0.28571rem;
  top: 0.28571rem;
}
.edition-page .product-about .cms-tab-panel .cms-tab-content.show-all .springer-html {
  max-height: 157.14286rem;
}
.edition-page .product-about .cms-tab-panel .cms-tab-content.show-all .action-show-all {
  display: none;
}
.edition-page .product-about dt > a {
  display: none;
}
.edition-page .product-toc {
  margin-bottom: 5rem;
}
.edition-page .product-toc h2 {
  margin-bottom: 2rem;
}
.edition-page .product-toc .toc:not(:first-child) .toc-item:first-child {
  border-top-style: none;
}
.edition-page .product-toc .toc .toc-item {
  border-bottom: 0.07143rem solid #d9d9d9;
  padding-top: 1.25rem;
  padding-bottom: 1.25rem;
}
.edition-page .product-toc .toc .toc-item:first-child {
  border-top: 0.07143rem solid #d9d9d9;
}
.edition-page .product-toc .toc .toc-item .main {
  position: relative;
}
.edition-page .product-toc .toc .toc-item.open p.title::before {
  -moz-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  -webkit-transform: rotate(90deg);
  transform: rotate(90deg);
}
.edition-page .product-toc .toc .toc-item p {
  display: block;
  position: relative;
}
.edition-page .product-toc .toc .toc-item p.title, .edition-page .product-toc .toc .toc-item p.authors {
  margin-left: 1.42857rem;
}
.edition-page .product-toc .toc .toc-item p.title {
  cursor: pointer;
  padding-right: 7.14286rem;
}
.edition-page .product-toc .toc .toc-item p.title::before {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "A";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: block;
  font-size: 1.28571rem;
  left: -1.07143rem;
  top: -0.28571rem;
  -moz-transition: -moz-transform 300ms;
  -o-transition: -o-transform 300ms;
  -webkit-transition: -webkit-transform 300ms;
  transition: transform 300ms;
}
.edition-page .product-toc .toc .toc-item p.page-range {
  padding-top: 0.28571rem;
  position: absolute;
  right: 0;
  top: 0;
}
.edition-page .product-toc .toc .toc-item.open .detail {
  display: block;
}
.edition-page .product-toc .toc .toc-item .detail {
  display: none;
  padding-top: 1.42857rem;
}
.edition-page .product-toc .toc .toc-item .detail .btn, .edition-page .product-toc .toc .toc-item .detail .product-title .product-cover .look-inside-badge, .edition-page .product-title .product-cover .product-toc .toc .toc-item .detail .look-inside-badge, .edition-page .product-toc .toc .toc-item .detail .extra-materials a, .edition-page .extra-materials .product-toc .toc .toc-item .detail a {
  margin-right: 0.71429rem;
}
.edition-page .product-toc .toc .toc-item .detail .btn.preview, .edition-page .product-toc .toc .toc-item .detail .product-title .product-cover .preview.look-inside-badge, .edition-page .product-title .product-cover .product-toc .toc .toc-item .detail .preview.look-inside-badge, .edition-page .product-toc .toc .toc-item .detail .extra-materials a.preview, .edition-page .extra-materials .product-toc .toc .toc-item .detail a.preview {
  margin-left: 1.42857rem;
}
.edition-page .product-toc .action-show-all {
  display: block;
  padding: 1.07143rem 0;
}
.edition-page .product-toc .action-show-all::after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: " C";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: relative;
  display: inline;
}
.edition-page .extra-materials a {
  margin-bottom: 0.71429rem;
}
.edition-page .extra-materials li a {
  margin-right: 0.21429rem;
}
.edition-page .product-recommendation h2 {
  margin-bottom: 2.14286rem;
}
.edition-page .product-recommendation .carousel-container {
  position: relative;
}
.edition-page .product-recommendation .carousel-container .control-prev {
  border-right: 0.07143rem solid #d9d9d9;
  right: 2.85714rem;
}
.edition-page .product-recommendation .carousel-container .control-prev::after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "@";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: relative;
  display: inline;
}
.edition-page .product-recommendation .carousel-container .control-next {
  right: 0;
}
.edition-page .product-recommendation .carousel-container .control-next::after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "A";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: relative;
  display: inline;
}
.edition-page .product-recommendation .carousel-container .control-prev,
.edition-page .product-recommendation .carousel-container .control-next {
  position: absolute;
  top: -4.42857rem;
}
.edition-page .product-recommendation .carousel-container .control-prev::after,
.edition-page .product-recommendation .carousel-container .control-next::after {
  color: #1a1a1a;
  display: block;
  font-size: 1.42857rem;
  height: 2.5rem;
  line-height: 1;
  padding: 0.53571rem 0.71429rem;
}
.edition-page .product-recommendation .carousel-container .control-prev:hover::after,
.edition-page .product-recommendation .carousel-container .control-next:hover::after {
  color: #555555;
}
.edition-page .product-recommendation .carousel-wrapper {
  overflow-x: hidden;
  width: 100%;
}
.edition-page .product-recommendation .carousel-wrapper ul {
  width: 1428.57143rem;
}
.edition-page .product-recommendation .carousel-wrapper ul::before, .edition-page .product-recommendation .carousel-wrapper ul::after {
  content: ' ';
  display: table;
}
.edition-page .product-recommendation .carousel-wrapper ul::after {
  clear: both;
}
.edition-page .product-recommendation .carousel-wrapper ul li {
  float: left;
}
.edition-page .product-recommendation .carousel-wrapper ul li .product-graphic {
  min-height: 10.71429rem;
}
.edition-page .product-recommendation .carousel-wrapper ul li .product-graphic img {
  display: block;
  margin: 0 auto;
}
.edition-page .product-recommendation .carousel-wrapper ul li .product-information {
  text-align: center;
}
.edition-page .product-bibliographic h2 {
  margin-bottom: 1.14286rem;
}
.edition-page .product-bibliographic .cms-tab-panel .product-tabs {
  display: none;
}
.edition-page .product-bibliographic .cms-tab-panel dt > a {
  display: none;
}
.edition-page .product-bibliographic .cms-tab-content dl dt {
  border-top: 0.07143rem solid #d9d9d9;
  padding-top: 1rem;
}
.edition-page .product-bibliographic .cms-tab-content dl dt:first-child {
  border-top-style: none;
}
.edition-page .product-bibliographic .cms-tab-content dl dd {
  padding-bottom: 1.07143rem;
}

.marketing-message {
  font-size: 1.28571rem;
  margin-top: 2.14286rem;
  text-align: center;
}
.marketing-message p::before {
  content: "%";
  font-size: 1.42857rem;
}
.marketing-message > div {
  background-color: #ffcc00;
  padding: 1.07143rem 0;
}
.marketing-message a {
  color: inherit;
  text-decoration: underline;
}

.entitlement {
  margin-bottom: 0;
  margin-top: 2.14286rem;
  text-align: center;
}
.entitlement p.columns,
.entitlement div p:last-child.columns {
  float: none;
  width: auto;
}
.entitlement p::before {
  background-color: #008d35;
  border-color: #008d35;
  color: white;
  content: "U";
  font-size: 1.42857rem;
}
.entitlement > div {
  border: 1px solid;
  color: #008d35;
  font-size: 1.28571rem;
  padding: 1.07143rem 0;
}

.message--not-available-for-important-reason {
  color: #b30000 !important;
  margin: 1em 0 !important;
}

.product-share .cms-social .cms-social-buttons {
  height: 2.5rem;
  margin-bottom: 5rem;
}
.product-share .cms-social .cms-social-buttons::before, .product-share .cms-social .cms-social-buttons::after {
  content: ' ';
  display: table;
}
.product-share .cms-social .cms-social-buttons::after {
  clear: both;
}
@media screen and (min-width: 37.5em) {
  .product-share .cms-social .cms-social-buttons {
    margin-bottom: 0;
  }
}
.product-share .cms-social .cms-social-buttons a {
  display: block;
  float: left;
  height: 2.5rem;
  margin-right: 0.71429rem;
  position: relative;
  width: 2.5rem;
}
.product-share .cms-social .cms-social-buttons a:hover::after {
  color: #555555;
}
.product-share .cms-social .cms-social-buttons a:last-child {
  margin-right: 0;
}
.product-share .cms-social .cms-social-buttons a::after {
  border: 0.07143rem solid #4d4d4d;
  border-radius: 50%;
  cursor: default;
  display: inline-block;
  height: 2.5rem;
  line-height: 2.5rem;
  text-align: center;
  width: 2.5rem;
  color: #1a1a1a;
  height: 2.5rem;
  top: 0;
  width: 2.5rem;
}
.product-share .cms-social .cms-social-buttons a .icon {
  background-repeat: no-repeat;
  color: transparent;
  direction: ltr;
  display: block;
  overflow: hidden;
  text-align: left;
  text-indent: -9999em;
  text-transform: capitalize;
}
.product-share .cms-social .cms-social-buttons #tool-facebook::after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "2";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: block;
}
.product-share .cms-social .cms-social-buttons #tool-twitter::after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "1";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: block;
}
.product-share .cms-social .cms-social-buttons #tool-linkedin::after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "3";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: block;
}
.product-share .cms-social .cms-social-buttons #tool-gplus::after {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "0";
  font-family: "apress_icons";
  font-size: 1.42857rem;
  text-transform: none;
  position: absolute;
  display: block;
}

/*# sourceMappingURL=modern_sprcom-product-page_apress.css.map */
