* { 
  -moz-box-sizing: border-box; 
  -webkit-box-sizing: border-box; 
  box-sizing: border-box; 
}

body {
  max-width: 700px;
  margin: 0 auto;
  padding-top: 80px;
}

/* general blocks */

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

section[data-type="preface"] > h1 + p, 
div[data-type="part"] > h1 + p, 
section[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 { 
  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;
}

/* 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: 1em;
  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: 1em;
  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: 1em;
  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; 
}

/* preface, chapter, and appendix 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 {
  font-family: serif;
  line-height: 120%;
}

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 {
  font-size: 1.8em;
  margin-top: 70px;
  margin-bottom: 40px;
  text-align: left;
}

/* section headings */

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

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

section[data-type="sect3"] h3 { /* C-level headings */
  font-size: 1.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 */

ul, ol { /* bulleted and numbered lists */
  margin: 10px 0 10px 0;
}

ul li, ol li, 
ul li p, ol li p {
  font-family: sans-serif;
  font-size: 1em;
  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: 4px;
}

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

dd p {
  text-indent: 0;
}

/* tables */

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

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

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 */

figure { /* figure containers */
  margin-top: 30px;
  margin-bottom: 30px;
  padding: 0;
  display: block;
  page-break-inside: avoid;
}

figure img { /* figure images */
  border-top: 1px solid #888;
  border-bottom: 1px solid #888;
  padding: 5px 0 5px 0;
  max-width: 100%;
  margin: 0;
}

figcaption {
  font-family: serif;
  font-size: 1em;
  font-style: italic;
  line-height: 120%;
  display: block;
}

/* sidebars */

aside { /* sidebar containers */
  background-color: #d8d8d8;
  border: 1px solid #d8d8d8;
  padding: 20px 20px 10px 20px;
  margin: 30px 0 30px 0;
}

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

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

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

/* admonitions */

div[data-type="note"], 
div[data-type="warning"] { /* admonition containers */
  border-top: 2px solid #888;
  border-bottom: 1px solid #d8d8d8;
  padding: 10px 0;
  margin: 30px 30px 30px 30px;
  page-break-inside: avoid; /* avoid breaking admonitions across pages */
}

div[data-type="note"] h6, 
div[data-type="warning"] h6 { /* 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 { /* admonition text */
  font-family: serif;
  font-size: 1em;
  line-height: 120%;
  text-indent: 0in;
}

/* code */

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

pre { /* code blocks */
  font-size: 0.9em;
  line-height: 120%;
  margin: 10px;
  overflow-x: auto;
}

code { /* inline code */
  font-size: 0.9em;
  line-height: 120%;
}

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: sans-serif;
  font-size: 0.8em;
  line-height: 120%;
  border-bottom: 1px solid #d8d8d8;
  padding-bottom: 6px;
  margin-top: 30px;
}

/* blockquote */

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

blockquote p {
  text-indent: 0;
}

/* website nav element */

div.navbar {
  font-family: sans-serif;
  background-color: #E8E8E8;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  padding: 10px 20px 10px 20px;
  border-bottom: 1px solid #d8d8d8;
}

div.navbar h1 {
  float: left;
  font-size: 1em;
  font-weight: normal;
  padding: 0;
  margin: 0;
  color: #999;
}

div.navbar p {
  float: right;
  font-size: 1em;
  font-weight: normal;
  padding: 0;
  margin: 0;
  font-family: sans-serif;
}

div.navbar p a {
  text-decoration: none;
  color: #999;
}

/* iPad
------------------------------------------------ */

@media screen and (min-width: 480px) and (max-width: 1024px) {
  body {
    width: 100%;
    padding: 80px 20px 20px 20px;
  }
}

/* iPhone [portrait + landscape] 
--------------------------------------------------------------------------- */

@media screen and (max-width: 480px) {
  body {
    width: 100%;
    padding: 10px;
  }

  /* website nav element */

div.navbar {
  position: relative;
  padding: 10px 20px 10px 20px;
  border-bottom: 2px solid #e8e8e8;
  box-shadow: 0px 0px 0px #f0f0f0;
  text-align: center;
}

div.navbar h1 {
  float: none;
  margin-bottom: 10px;
}

div.navbar p {
  float: none;
  text-indent: 0;
}

}


/* syntax highlighting and coloring text in general */

/* 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 */

/* Chacon's additions to make command line look more like a command line */
pre[data-code-language="console"] {
  background: #ddd;
  padding: 10px;
}
pre[data-code-language="console"] code.go {
  color: #555;
  font-size: 1.0em;
}
pre[data-code-language="console"] code.gp {
  color: #009900;
  font-weight: bold;
}
