@charset "UTF-8";

/* O'Reilly Media, 2014; version 4.0.0 */

/* reset */

html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6,
p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del,
dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub,
sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form,
label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  font-size: 100%;
  vertical-align: baseline;
  background: transparent; }

/* end reset */

/* ---------------------- general blocks ---------------------- */


p, dd { /* general text styles */
  font-family: sans-serif;
  text-indent: 20px;
  font-size: 0.9em;
  line-height: 125%;
}

section[data-type="preface"] > h1 + p,
div[data-type="part"] > h1 + p,
section[data-type="chapter"] > h1 + p,
div[data-type="chapter"] > h1 + p
section[data-type="chapter"] > h1 + div.author p,
section[data-type="sect1"] > h1 + p,
section[data-type="sect2"] > h2 + p,
section[data-type="sect3"] > h3 + p,
p {
  text-indent: 0px; /* first paragraph following a heading has no indent */
}

/* ---------------------- general inlines ---------------------- */

p a {
  display: inline;
}

/* frontmatter */

section[data-type="titlepage"] h1 {
  font-family: serif;
}

section[data-type="titlepage"] h2,
section[data-type="copyright-page"] h1 {
  font-family: sans-serif;
}

section[data-type="halftitlepage"] {
  display: none;
}

section[data-type="titlepage"] {
  text-align: left;
  page-break-after: always;
}

section[data-type="titlepage"] h1 {
  border-bottom: 1px solid #333;
  margin-top: 100px;
  padding-bottom: 10px;
}

section[data-type="titlepage"] h1 {
  font-size: 2em;
  line-height: 120%;
}

section[data-type="titlepage"] h2 {
  font-size: 1.2em;
  line-height: 120%;
  margin-top: 20px;
}

/* styling and positioning for author names and other text */

section[data-type="titlepage"] p:first-of-type {
  margin-top: 82pt;
}

section[data-type="titlepage"] p {
  font-family: sans-serif;
  font-size: 13pt;
  line-height: 16pt;
  margin-top: 0pt;
  margin-bottom: 0pt;
  float: none;
  text-indent: 0;
}


/* ---------------------- copyright page ---------------------- */


section[data-type="copyright-page"] {
  margin-top: 100px;
  page-break-after: always;
}

section[data-type="copyright-page"] h1 {
  font-size: 0.8em;
}

section[data-type="copyright-page"] p {
  font-family: sans-serif;
  font-size: 0.8em;
  margin: 0;
  text-indent: 0;
}

/* dedication */

section[data-type="dedication"] {
  font-family: serif;
  font-style: italic;
  page-break-after: always;
  text-align: center;
  padding-top: 100px;
}

section.preface[title="Dedication"] > div.titlepage h2.title {
  text-align: center;
  text-transform: uppercase;
  font-size: 1.5em;
  margin-top: 50px;
  margin-bottom: 50px;
}

section.preface[title="Dedication"] p {
  font-style: italic;
  text-align: center;
}
/* ---------------------- table of contents ---------------------- */

/* global styles for the table of contents */
/* table of contents is a series of nested lists in a nav element */

nav[data-type="toc"] a { /* all table of contents entries are also links */
  font-style: normal;
}

nav[data-type="toc"] li { /* no list marker on table of contents entries */
  list-style-type: none;
}

nav[data-type="toc"] > h1 { /* table of contents heading */
  font-size: 1.5em;
  line-height: 120%;
  margin-top: 80px;
  margin-bottom: 50px;
  text-align: center;
}

/* defining fonts for the table of contents */

nav[data-type="toc"] a {
  text-decoration: none;
}

nav[data-type="toc"] li {
  font-family: sans-serif;
}

nav[data-type="toc"] li[data-type="chapter"],
nav[data-type="toc"] li[data-type="part"],
nav[data-type="toc"] li[data-type="appendix"] {
  font-size: 0.9em;
  line-height: 120%;
  margin-left: 0;
  text-indent: 0;
}

/* entries for parts in the table of contents */

nav[data-type="toc"] li[data-type="part"] {
  margin-top: 25px;
}

nav[data-type="toc"] li[data-type="part"] > a {
  border-bottom: 1px solid #333;
  width: 100%;
  display: inline-block;
}

nav[data-type="toc"] li[data-type="part"] ol {
  margin-left: 0;
  text-indent: 0;
}

/* entries for chapters and appendixes in the table of contents */

nav[data-type="toc"] li[data-type="chapter"] {
  margin-top: 20px;
}

nav[data-type="toc"] li[data-type="chapter"]:last-of-type,
nav[data-type="toc"] li[data-type="appendix"] {
  margin-bottom: 20px;
}

/* entries for sub-sections */

nav[data-type="toc"] li[data-type="chapter"] ol {
  font-family: sans-serif;
  font-size: 0.9em;
  line-height: 120%;
  margin-left: 20px;
  text-indent: -10px;
}

nav[data-type="toc"] li[data-type="chapter"] ol ol {
  margin-left: 10px;
  text-indent: -10px;
}

/* front and backmatter in the table of contents */

nav[data-type="toc"] li[data-type="preface"],
nav[data-type="toc"] li[data-type="foreword"],
nav[data-type="toc"] li[data-type="glossary"],
nav[data-type="toc"] li[data-type="index"] {
  font-size: 0.9em;
  line-height: 120%;
}

nav[data-type="toc"] li[data-type="preface"] ol,
nav[data-type="toc"] li[data-type="foreword"] ol {
  display: none;
}

/* page breaks after all chapter-level sections */

section[data-type="preface"],
div[data-type="part"],
section[data-type="chapter"],
section[data-type="appendix"] {
  page-break-after: always;
}


/* ---------------------- headings ---------------------- */

/* heading font is sans serif */

nav[data-type="toc"] > h1,
div[data-type="part"] > h1,
section[data-type="preface"] > h1,
section[data-type="chapter"] > h1,
section[data-type="appendix"] > h1,
section[data-type="sect1"] h1,
section[data-type="bibliography"] h1,
section[data-type="glossary"] h1 {
  font-family: serif;
  line-height: 120%;
  -webkit-hyphens: none;
  hyphens: none;
  adobe-hyphenate: none;
}

section[data-type="sect2"] h2,
section[data-type="sect3"] h3 {
  font-family: sans-serif;
  line-height: 120%;
}

/* shared styles for all chapter-level headings */
section[data-type="preface"] > h1,
section[data-type="chapter"] > h1,
section[data-type="appendix"] > h1,
div.chapter > h1 {
  font-size: 2em;
  margin-top: 70px;
  margin-bottom: 50px;
  text-align: right;
  -webkit-hyphens: none;
  hyphens: none;
  adobe-hyphenate: none;
}

div.chapter > h1 > span.label {
  width: 100%;
  display: block;
}

/* section headings */

section[data-type="sect1"] h1 { /* A-level headings */
  font-size: 1.5em;
  margin-top: 40px;
  margin-bottom: 10px;
}

section[data-type="sect2"] h2 { /* B-level headings */
  font-size: 1.25em;
  margin-top: 30px;
  margin-bottom: 10px;
}

section[data-type="sect3"] h3 { /* C-level headings */
  font-size: 1em;
  margin-top: 20px;
  margin-bottom: 10px;
}

/* parts */

div[data-type="part"] > h1 {
  font-size: 1.8em;
  text-align: center;
  margin-top: 100px;
  margin-bottom: 70px;
}

/* ---------------------- lists ---------------------- */

/*Top-level list positioning*/
ul, ol {
    margin: 0.25em 0 1em 15px;
    padding: 0 0 0 -10px;
    list-style-position: outside;
    text-indent: 0;
}

ul li, ol li,
ul li p, ol li p {
  font-family: sans-serif;
  font-size: 0.9em;
  line-height: 120%;
  margin-top: 5px;
  text-indent: 0;
}

dl { /* definition lists */
  margin-bottom: 15px;
}

dt { /* definition list terms */
  font-family: sans-serif;
  font-size: 0.9em;
  line-height: 120%;
  margin-top: 15px;
  margin-bottom: 0;
}

dd { /* definition list descriptions */
  text-indent: 0;
  margin-left: 20px;
  margin-bottom: 20px;
  margin-top: -5px;
}

dd p {
  text-indent: 0;
}

/* ---------------------- tables ---------------------- */

table {
  margin-top: 30px;
  margin-bottom: 30px;
  border-bottom: 1px solid #888;
  border-collapse: collapse;
  max-width: 100%;
}

table caption {
  font-family: serif;
  font-size: 0.8em;
  line-height: 120%;
  text-align: left;
  margin: 0 0 10px 0;
  padding: 0;
}

table caption span.label { font-weight: bold;}


tr {
  border-width: 0px;
}

th { /* table heading rows */
  font-family: sans-serif;
  font-size: 0.8em;
  line-height: 120%;
  text-align: left;
  margin-top: 0;
  border-top: 1px solid #888;
  border-bottom: 1px solid #888;
}

th, td {
  padding: 6px;
}

td, table p { /* table body text */
  font-family: sans-serif;
  font-size: 12px;
  line-height: 120%;
}

table p { /* table body text */
  text-indent: 0;
  margin-top: 6px;
}

td pre.programlisting, td pre.screen, td pre.literallayout, td code { /* allow code in tables to wrap */
  white-space: pre-wrap;
  word-wrap: break-word;
}

/* ---------------------- figures ---------------------- */

div.figure { /* figure containers */
  margin: 30px 0px;
  padding: 0 40px 0 0;
  border-top: 1px solid #888;
  border-bottom: 1px solid #888;
  /*both of these elements are to avoid page breaks inside*/
  display: inline-block;
  page-break-inside: avoid;
}


div.figure img { /* figure images */
  padding: 5px 0 5px 0;
  max-width: 85% !important;
  margin: 0 auto;
}

div.figure h6,
figcaption {
  font-family: serif;
  font-size: 0.8em;
  font-style: italic;
  line-height: 120%;
  display: block;
  font-weight: normal;
  margin: 6px 0 5px 0;
}

div.figure h6 span.label,
figcaptio span.label {
font-weight: bold;
font-style: normal;}

/* callouts */

a.co img {
  margin: 0;
}

dl.calloutlist {
  text-align: justify;
}

dl.calloutlist dt {
  position: relative;
  line-height: 0;
  top: 5pt;
  margin-bottom: -4pt;
  page-break-after: avoid;
}

/* ---------------------- sidebars ---------------------- */
div.sidebar {  background-color: #F7F7F7;
  border: 1px solid #d8d8d8;
  padding: 20px 20px 10px 20px;
  margin: 30px 0 30px 0;
  -webkit-border-radius: 5px;
  border-radius: 5px;}


div.sidebar h5 { /* sidebar titles */
  font-family: sans-serif;
  font-size: 0.9em;
  line-height: 120%;
  text-align: center;
  margin: 0;
  padding: 0;
}

div.sidebar h6 { /* sidebar subtitles */
  font-family: sans-serif;
  font-weight: bold;
  font-size: 0.9em;
  line-height: 120%;
}

div.sidebar p { /* sidebar text */
  font-family: serif;
  font-size: 0.9em;
  line-height: 130%;
  text-indent: 0;
  margin-top: 6px;
}

/* ---------------------- admonitions ---------------------- */

div[data-type="note"],
div[data-type="warning"],
div[data-type="tip"],
div[data-type="caution"],
div[data-type="important"] { /* admonition containers */
  border-top: 1px solid #888;
  border-bottom: 1px solid #888;
  padding: 0;
  margin: 25px 50px 25px 30px;
  page-break-inside: avoid; /* avoid breaking admonitions across pages */
  text-align: justify;
}

div[data-type="note"] h1,
div[data-type="warning"] h1,
div[data-type="tip"] h1,
div[data-type="caution"] h1,
div[data-type="important"] h1 { /* admonition titles */
  color: #000;
  font-family: sans-serif;
  font-weight: bold;
  font-size: 0.8em;
  text-transform: uppercase;
  text-align: center;
  margin: 4px 0;
  padding: 0;
}

div[data-type="note"] p,
div[data-type="warning"] p,
div[data-type="tip"] p,
div[data-type="caution"] p,
div[data-type="important"] p { /* admonition text */
  font-family: serif;
  font-size: 0.8em;
  line-height: 120%;
  text-indent: 0in;
}

/* ---------------------- code ---------------------- */

pre, code { /* monospace font for both code blocks and inline code */
  font-family: monospace;
}

pre { /* code blocks */
  white-space: pre-wrap;
  font-family: "Ubuntu Mono", monospace;
  margin: 25px 0 25px 20px;
  font-size: 90%;
  display: block;
  -webkit-hyphens: none;
  hyphens: none;
  adobe-hyphenate: none;
}

code { /* inline code */
  font-size: 90%;
  -webkit-hyphens: none;
  hyphens: none;
  adobe-hyphenate: none;
}

table pre { /* code blocks within tables */
  text-indent: 0;
}

div[data-type="note"] code,
div[data-type="warning"] code,
aside code,
table code { /* inline code within notes, sidebars and tables */
  font-size: inherit;
  line-height: inherit;
}

div[data-type="example"] h5 { /* titles for formal code examples */
  font-family: serif;
  font-size: 95%;
  line-height: 120%;
  border-bottom: 1px solid #d8d8d8;
  padding-bottom: 6px;
  margin-top: 30px;
  font-weight: normal;
  font-style: italic;
}

div[data-type="example"] h5 span.label {
  font-weight: bold;
  font-family: sans-serif;
  font-style: normal;
}

/* ---------------------- blockquotes ---------------------- */

blockquote {
  font-family: sans-serif;
  font-size: 0.8em;
  line-height: 130%;
  margin-left: 30px;
  margin-right: 30px;
}

blockquote p {
  text-indent: 0;
}


/* ----------------- index ----------------- */

div.index {
  font-weight: bold;
  text-indent: 0;
}

div.index li {
  line-height: 140%;
}

div.index a.indexterm {
  color: #8e0012;
}

div.index ul {
    list-style-type: none;
    padding-left: 0;
    margin-left: 0;
}

div.index ul li {
    padding-left: 0;
    margin-left: 0;
}

div.index ul li ul li {
    margin-left: 20px;
}

/* ----------------- Appendix ----------------- */
section[data-type="appendix"] section[data-type="sect1"] h1 {
    margin-bottom: 0;
    padding:0px;
}

section[data-type="appendix"] section[data-type="sect1"] dl {
    font-size: 90%;
    clear: both;
     padding:0px;
}

section[data-type="appendix"] section[data-type="sect1"] dt a {
 margin-top: -5px;
 padding:0px;}

section[data-type="appendix"] section[data-type="sect1"] dd p {
 padding:0px;
 margin-bottom: -5px;}


/* ---------------------- Syntax Highlighting ---------------------- */

/* Pygments with manni theme */
pre code.hll { background-color: #ffffcc }
pre code.c { color: #0099FF; font-style: italic } /* Comment */
pre code.err { color: #AA0000 } /* Error */
pre code.k { color: #006699; font-weight: bold } /* Keyword */
pre code.o { color: #555555 } /* Operator */
pre code.cm { color: #35586C; font-style: italic } /* Comment.Multiline */
pre code.cp { color: #009999 } /* Comment.Preproc */
pre code.c1 { color: #35586C; font-style: italic } /* Comment.Single */
pre code.cs { color: #35586C; font-weight: bold; font-style: italic } /* Comment.Special */
pre code.gd { background-color: #FFCCCC } /* Generic.Deleted */
pre code.ge { font-style: italic } /* Generic.Emph */
pre code.gr { color: #FF0000 } /* Generic.Error */
pre code.gh { color: #003300; font-weight: bold } /* Generic.Heading */
pre code.gi { background-color: #CCFFCC } /* Generic.Inserted */

/* Overriding default manni style of #AAAAAA gray for Generic Output with #000000 black, which is better suited to ORM terminal output */
pre code.go { color: #000000 } /* Generic.Output  */

pre code.gp { color: #000099; font-weight: bold } /* Generic.Prompt */
pre code.gs { font-weight: bold } /* Generic.Strong */
pre code.gu { color: #003300; font-weight: bold } /* Generic.Subheading */
pre code.gt { color: #99CC66 } /* Generic.Traceback */
pre code.kc { color: #006699; font-weight: bold } /* Keyword.Constant */
pre code.kd { color: #006699; font-weight: bold } /* Keyword.Declaration */
pre code.kn { color: #006699; font-weight: bold } /* Keyword.Namespace */
pre code.kp { color: #006699 } /* Keyword.Pseudo */
pre code.kr { color: #006699; font-weight: bold } /* Keyword.Reserved */
pre code.kt { color: #007788; font-weight: bold } /* Keyword.Type */
pre code.m { color: #FF6600 } /* Literal.Number */
pre code.s { color: #CC3300 } /* Literal.String */
pre code.na { color: #330099 } /* Name.Attribute */
pre code.nb { color: #336666 } /* Name.Builtin */
pre code.nc { color: #00AA88; font-weight: bold } /* Name.Class */
pre code.no { color: #336600 } /* Name.Constant */
pre code.nd { color: #9999FF } /* Name.Decorator */
pre code.ni { color: #999999; font-weight: bold } /* Name.Entity */
pre code.ne { color: #CC0000; font-weight: bold } /* Name.Exception */
pre code.nf { color: #CC00FF } /* Name.Function */
pre code.nl { color: #9999FF } /* Name.Label */
pre code.nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */
pre code.nt { color: #330099; font-weight: bold } /* Name.Tag */
pre code.nv { color: #003333 } /* Name.Variable */
pre code.ow { color: #000000; font-weight: bold } /* Operator.Word */
pre code.w { color: #bbbbbb } /* Text.Whitespace */
pre code.mf { color: #FF6600 } /* Literal.Number.Float */
pre code.mh { color: #FF6600 } /* Literal.Number.Hex */
pre code.mi { color: #FF6600 } /* Literal.Number.Integer */
pre code.mo { color: #FF6600 } /* Literal.Number.Oct */
pre code.sb { color: #CC3300 } /* Literal.String.Backtick */
pre code.sc { color: #CC3300 } /* Literal.String.Char */
pre code.sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
pre code.s2 { color: #CC3300 } /* Literal.String.Double */
pre code.se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */
pre code.sh { color: #CC3300 } /* Literal.String.Heredoc */
pre code.si { color: #AA0000 } /* Literal.String.Interpol */
pre code.sx { color: #CC3300 } /* Literal.String.Other */
pre code.sr { color: #33AAAA } /* Literal.String.Regex */
pre code.s1 { color: #CC3300 } /* Literal.String.Single */

/* Overriding manni default yellow #FFCC33 with brown #AA6600, which is easier to read */
pre code.ss { color: #AA6600 } /* Literal.String.Symbol */

pre code.bp { color: #336666 } /* Name.Builtin.Pseudo */
pre code.vc { color: #003333 } /* Name.Variable.Class */
pre code.vg { color: #003333 } /* Name.Variable.Global */
pre code.vi { color: #003333 } /* Name.Variable.Instance */
pre code.il { color: #FF6600 } /* Literal.Number.Integer.Long */

/* Sanders's additions to manni */
pre code.g { color: #005500 } /* Generic */
pre code.l { color: #CC6600 } /* Literal */
pre code.l { color: #FF9900 } /* Literal.Date */
pre code.n { color: #000088 } /* Name */
pre code.nx { color: #000088 } /* Name.Other */
pre code.py { color: #9966FF } /* Name.Property */
pre code.p { color: #000000 } /* Punctuation */
pre code.x { color: #FF0066 } /* Other */