/* Style sheet for nedbatchelder.com */
body {
    font-size: 101%;  /* Trick to shut off divergent font rounding algorithms. */
    font-family: verdana, sans-serif;
    margin: 0;
    padding: 0;
    background-color: #999;
    background: url(pix/hilbert.gif);
}

table#logo_banner {
    width: 840px;
    border: 5px solid #999;
    margin: 0 auto;
}

td#logo {
    width: 120px;
    border-right: 5px solid #999;
    background: #fff;
    text-align: center;
}

td#banner {
    width: 695px;
    padding: 10px;
    background: #fff;
    text-align: left;
    font-size: 85%;
    vertical-align: middle;
}

table#content_menu {
    width: 840px;
    border: 5px solid #999; border-top-width: 0;
    margin: 0 auto;
}

td#menu {
    width: 175px;
    border-left: 5px solid #999;
    padding: 10px;
    background: #eee;
    text-align: left;
    font-size: 70%;
}

td#content {
    width: 620px;
    padding: 10px;
    background: #fff;
    font-family: verdana, sans-serif;
    font-size: 80%;
    text-align: left;
}

td#copyright {
    padding: 0 10px;
    border-top: 5px solid #999;
    text-align: left;
    background: #eee;
    color: black;
}

.dn {
    display: none !important;
}

p,h1,h2,h3,h4,h5,h6 {
    padding: 0;
    margin: 1em 0;
}

table {
    display: table;
    border-collapse:separate;
    border-spacing: 0;
    border: 0;
}
td {
    padding: 0;
    margin: 0;
    vertical-align: top;
}

.vmid {
    vertical-align: middle;
}

p.figure {
    text-align: center;
}

p.bulletsep {
    text-align: center;
}

#menu p, #menu li, #menu blockquote {
    line-height: 1.1em;
}

/* Not sure why I made listed blockquotes smaller text... */
/* Changed my mind: they aren't smaller. */
li blockquote {
    font-size: 100%;
}

/* ..but we don't want to do it for listed code. */
li blockquote.code {
    font-size: 100%;
}

h1,h2,h3,h4,h5,h6 {
    font-family: verdana, sans-serif;
}

h1[id]:hover a.headerlink:after,
h2[id]:hover a.headerlink:after,
h3[id]:hover a.headerlink:after {
    content: "\00A0\00B6";   /* space-pilcrow */
}

a.headerlink {
    color: #888;
    text-decoration: none;
}

.first {
    margin-top: 0;
}

.body {
    line-height: 1.5em;
}

.thinspace {
    font-size: 66%;
}

/* H1's have a line underneath them. */
.body h1 {
    font-size: 100%;
    border-bottom: 1px solid silver;
}

.body h2 {
    font-size: 100%;
}

/* H3's are run-in with the text. */
.body h3 {
    font-size: 100%; display: inline; line-height: 1.35em;
    float: left;
    margin: 0 1.5em 0 0;
}

.body table {
    border-collapse: collapse;
    margin-left: auto;
    margin-right: auto;
}

.body td {
    border: 1px solid #ccc;
    padding: .25em .5em;
}

.body th {
    border: 1px solid #ccc;
    border-bottom: 1px solid #999;
    padding: .25em .5em;
}

.body table.noborder, .body table.noborder th, .body table.noborder td {
    border-width: 0;
}

.body #comments td {
    border-width: 0;
}

.copyright {
    font-size: 70%;
    font-style: italic;
    color: #333;
}

.copyright a {
    text-decoration: none;
    color: #333;
}

.copyright a:hover {
    text-decoration: underline;
    color: red;
}

.dateline {
    font-family: verdana, sans-serif;
    margin-top: 0;
    text-align: right;
    font-size: 85%;
    font-style: italic;
    color: gray;
}

.docinfo {
    font-family: verdana, sans-serif;
    margin-top: 0;
    margin-left: 35%;
    width: 65%;
    text-align: right;
    font-size: 85%;
    font-style: italic;
    color: gray;
}

ul {
    margin-top: .5em;
    margin-bottom: .5em;
    list-style-type: square;
}

li {
    margin-bottom: .4em;
}

ul li ul {
    margin-top: .5em;
}

dl {
    margin-top: .5em;
    margin-bottom: .5em;
}
dt,dd {
    margin-bottom: .4em;
}

input[type="search"] { -webkit-appearance: textfield; }

input.searchbox {
    border: 1px solid #7e9db9;
    padding: 2px;
    width: 144px;
    height: 16px;
}

.sidebar
{ line-height: 1.1em; margin-top: 0; font-weight: bold }

.sidebar a
{ text-decoration: none; color: black }

.sidebar a:hover
{ text-decoration: underline; color: red }

.blogroll
{ font-weight: normal; line-height: 1.1em }

.blogroll ul
{ list-style-type: none; padding-left: 0; margin-left: 0 }

.blogroll ul li
{ font-size: 100%; font-weight: bold; margin-top: 1.5em; margin-bottom: 0; }

.blogroll ul li.first
{ margin-top: 0; }

.blogroll ul li ul li
{ font-weight: normal; margin-top: .8em; }

.blogroll ul li ul.compact
{ font-weight: normal; margin-top: .4em; }

.blogroll ul li ul.compact li
{ font-weight: normal; margin-top: .4em; }

.blogroll ul li.inline
{ display: inline-block; margin-top: .4em; }

.blogroll ul li.inline ul
{ display: inline; font-weight: normal; line-height: 1.3em; padding-left: .25em; }

.blogroll ul li.inline ul li
{ display: inline; }

a.s
{ text-decoration: none; color: black }

a.s:hover
{ text-decoration: underline; color: red }

.headslug
{ font-size: 170%; font-weight: bold; line-height: 150%; }

.mainslug
{ font-size: 200%; font-weight: bold }

.path
{ line-height: 150% }

.path a
{ text-decoration: none; color: black }

.path a:hover
{ text-decoration: underline; color: red }

.blog-entry .head {
    font-family: verdana, sans-serif;
    padding-bottom: .2em; margin-bottom: 0;
}

.blog-entry .foot {
    font-family: verdana, sans-serif;
    font-size: 85%; color: gray;
    font-style: italic;
    border-bottom: solid 1px silver;
    padding-bottom: 12pt; margin-bottom: 6pt;
}

.blog-entry .foot a
{ text-decoration: none; color: gray }

.blog-entry .foot a:hover
{ text-decoration: underline; color: red }

.blog-entry .title {
    margin: 0;
    font-size: 115%;
    font-weight: bold;
    display: block; float: none;
}

.blog-entry .date {
    font-size: 85%;
    color: gray; margin: 0; padding: 0;
}

.blog-entry .date a.s {
    color: gray;
}

.blog-entry p {
    margin: 0 0 1em 0;
    clear: both;
}

.blog-entry .via {
    float: right
}

/* The style for blog entries highlighted by being a fragment target. */
.hilitefragment {
    background: #ffa;
    padding: 1em 1em 0 1em;
    border: 1px solid #880;
}

/* Archive page: make the dates hang left to align all the titles. */

.archive p {
    font-size: 100%;
    font-family: verdana, sans-serif;
    margin: 0 0 0 5.5em;
    line-height: 1.45em;
}

.archive p.date {
    width: 5em;
    text-align: right;
    padding: 0 0 0 0;
    margin: 0 0 -1.45em 0;
    color: gray;
}

/* Category page: Like archive, but the dates are wider. */

.category p {
    font-size: 100%;
    font-family: verdana, sans-serif;
    margin: 0 0 0 8.5em;
    line-height: 1.45em;
}

.category p.date {
    width: 8em;
    text-align: right;
    padding: 0 0 0 0;
    margin: 0 0 -1.45em 0;
    color: gray;
}

.catlist p {
    margin: 0 0 0 10.5em;
    line-height: 1.45em;
}

.catlist p.catname {
    padding: 0 0 0 0;
    margin: 0 0 -1.45em 0;
    width: 10em;
    text-align: right;
    font-weight: bold;
}

.also {
    font-size: 85%; color: gray;
    font-style: italic; text-decoration: none;
}

.also a {
    text-decoration: none; color: gray
}

.also a:hover {
    text-decoration: underline; color: red
}

/* Monthly pages: prev/main/next links at the top and bottom. */
.pmntop {
    border-bottom: solid 1px silver;
    padding: 0 0 2em 0;
    margin: 0 0 .5em 0;
}

.pmnbot {
    padding: 0;
    margin: 3em 0 1.5em 0;
}

.pmn {
    font-family: verdana, sans-serif;
}

.pmn span {
    font-size: 80%;
    display: block;
    line-height: 1em;
    margin: 0 0 -1em 0;
}

.pmn .p {
    text-align: left;
}
.pmn .m {
    text-align: center;
}
.pmn .n {
    text-align: right;
}

/* Block quotes */
blockquote {
    font-size: 100%;
    margin: 1em 2em;
    border-left: 1px solid #c0c0c0;
    padding: 0;
    background-color: #f0f0f0;
}

blockquote div {
    margin: 0;
    padding: .6em 1em .1em 1em;
}

blockquote div p {
    margin: .4em 0;
}

blockquote div ol {
    margin: .4em 0;
    padding-left: 1.5em;
}

blockquote div ul {
    margin: .4em 0;
    padding-left: 1.5em;
}

code {
    font-size: 90%; line-height: 130%;
    font-family: Menlo, "courier new", monospace;
}

blockquote.code {
    padding: .3em;
    border: none;
    white-space: nowrap;
    overflow: auto;
    width: 540px;
    line-height: 1;
}

/* Code samples can't be as wide in a list element.. */
ul .code, ol .code, li .code {
    width: 510px;
}
dd .code {
    width: 500px;
}
dd li .code {
    width: 470px;   /* even narrower doubly-nested. */
}

.code a {
    text-decoration: none;
}

.code p.name {
    text-align: right;
    font-style: italic;
    margin: 0 0 -1em 0;
    padding: 0;
}

.code .linenos
{
    background: #f8f8f8;
    color: #aaa;
    font-size: 80%;
    text-align: right;
    border-right: 1px solid #bbb;
    padding: 0;
    margin: 0;
}

table.sourcetable {
    /* Numbered code gets put in a .sourcetable table, inside a blockquote.code, so we
     * need to cancel out the padding. */
    margin: -0.3em;
}

.sourcetable td {
    border: none;
}

.sourcetable td.linenos {
    width: 3em;
}

div.linenodiv {
    padding: 0 1em 0 0;
}

div.linenodiv pre {
    margin: .3em 0 0 0;
}

.sourcetable td.code {
    width: 100%;
    padding: 0 0.5em;
}

.codeword {
    font-size: 100%;
    font-family: "lucida console", monospace;
    background-color: #e8e8e8;
}

.box {
    border: 1px solid;
    border-color: #ccc #999 #999 #ccc;
    padding: .3em .6em;
    background-color: #ffc;
}

img {
    border: none;
}

.body img {
    margin: 0 .5em; /* So that side-by-side images will have some space between them */
}

.body img.floatimg {
    float: left;
    margin: 0 1.5em .8em 0;
}

.body img.floatimg.right {
    float: right;
    margin: 0 0 .8em 1.5em;
}

.tweet a.user, .tweet a.date {
    text-decoration: none; color: inherit;
}

.tweet a.user:hover, .tweet a.date:hover {
    text-decoration: underline; color: inherit;
}

.comments {
    font-family: verdana, sans-serif;
}

.comments h1 {
    border: none;
    margin: 0;
    padding: 1em;
    background: #eee;
}

.comments h2 {
    border: none;
    border-top: 1px solid #eee;
    margin: 0 0 1em 0;
    padding: 1em 0 .5em 0;
    font-style: italic; font-weight: normal;
}

.comment .who {
    font-family: verdana, sans-serif;
    float: left;
}

.comment .who a {
    color: black;
}

.comment .when {
    font-family: verdana, sans-serif;
    float: right;
    font-size: 85%; color: gray; margin-top: 0;
}

.comment .head {
    margin-bottom: 20pt;
}

.comment img.gravatar {
    float: left;
    margin: 3px 0 0 -50px;
    border: 1px solid #eee;
}

.comments .comment {
    font-family: georgia, serif;
    border-top: solid 1px #eee;
    padding: .5em 10pt 0 50px;
    margin-top: 6pt;
    overflow: auto;
    width: 540px;
}

.comments .comment.preview {
    background-color: #ffff80;
    border: 1px solid #cccccc;
    padding: .5em 10pt 0 54px;
}

#commentform {
    margin-top: 6pt;
    border-top: solid 1px #eee;
    padding-top: 0;
}

#commentform table {
    width: 100%;
}

#commentform td {
    padding: 2px;
}

#commentform td.labels {
    width: 0%;
}

#commentform td.inputs {
    width: 100%;
}

.comments .notice {
    font-size: 90%;
    color: gray;
    font-style: italic;
}

.comments .notice.right {
    text-align: right;
}

.comments .label {
    font-size: 90%;
    text-align: right;
    color: #666666;
    margin-right: 6px;
    width: 42px;
}

.comment .commenttext {
    clear: right
}

.comments .errormsg {
    color: #800;
    font-weight: bold;
    background: #faa;
    padding: 2pt 4pt;
    border: 1px solid red;
    margin: 0;
}

/* Search word highlighting */
.searchword0 {
    background-color: #CFFFB9;  /* green */
    text-decoration: inherit;
}

.searchword1 {
    background-color: #FFCFCF;  /* pink */
    text-decoration: inherit;
}

.searchword2 {
    background-color: #DCDAFF;  /* blue */
    text-decoration: inherit;
}

.searchwelcome {
    border: solid 1px silver;
    background: #ffc;
    margin-bottom: 2em;
    padding: 0 1em;
}

/* Google Ads box */
.googleads {
    margin-top: 2em;
    text-align: center;
}

/* Sphinx-generated module documentation.  Easier to change the CSS than the .py... */
tt.descname, tt.descclassname {
    font-weight: bold;
    font-family: verdana, sans-serif;
    }
em.property {
    font-style: normal;
    }
.internal.reference em, .external.reference em {
    font-style: normal;
    }

/* Code styling.  There are a lot of different styles! */

.code .c_commentline,
.code .c_comment,
.code .p_commentline,
.code .h_comment,
.code .css_comment,
.code .hphp_comment,
.code .hphp_commentline,
.code .ps_comment,
.code .ps_dsc_comment,
.code .ps_dsc_value
{ color: #080; }

.code .c_word,
.code .c_preprocessor,
.code .p_word,
.code .h_tag,
.code .h_tagunknown,
.code .css_identifier,
.code .css_unknown_identifier,
.code .hphp_word,
.code .ps_keyword
{ font-weight: bold; color: #008 }

.code .h_attribute,
.code .h_attributeunknown
{ color: #008 }

.code .c_string,
.code .c_character,
.code .p_string,
.code .p_character,
.code .p_triple,
.code .p_tripledouble,
.code .h_doublestring,
.code .h_singlestring,
.code .css_doublestring,
.code .css_singlestring,
.code .hphp_hstring,
.code .hphp_simplestring,
.code .ps_text
{ color: #808; }

.code .p_classname,
.code .p_defname,
.code .css_class,
.code .css_pseudoclass,
.code .css_unknown_pseudoclass,
.code .css_tag,
.code .ps_literal
{ font-weight: bold; color: #088; }


/* Adapted from https://github.com/richleland/pygments-css/blob/master/vs.css */
.code .hll { background-color: #ffffcc }
.code .c { color: #008000 } /* Comment */
.code .err { border: 1px solid #FF0000 } /* Error */
.code .k { color: #000080; font-weight: bold } /* Keyword */
.code .cm { color: #008000 } /* Comment.Multiline */
.code .cp { color: #0000ff } /* Comment.Preproc */
.code .c1 { color: #008000 } /* Comment.Single */
.code .cs { color: #008000 } /* Comment.Special */
.code .ge { font-style: italic } /* Generic.Emph */
.code .gh { font-weight: bold } /* Generic.Heading */
.code .gp { font-weight: bold } /* Generic.Prompt */
.code .gs { font-weight: bold } /* Generic.Strong */
.code .gu { font-weight: bold } /* Generic.Subheading */
.code .kc { color: #0000ff } /* Keyword.Constant */
.code .kd { color: #0000ff } /* Keyword.Declaration */
.code .kn { color: #0000ff } /* Keyword.Namespace */
.code .kp { color: #0000ff } /* Keyword.Pseudo */
.code .kr { color: #0000ff } /* Keyword.Reserved */
.code .kt { color: #2b91af } /* Keyword.Type */
.code .s { color: #a31515 } /* Literal.String */
.code .nc { color: #2b91af } /* Name.Class */
.code .ow { color: #0000ff } /* Operator.Word */
.code .sb { color: #a31515 } /* Literal.String.Backtick */
.code .sc { color: #a31515 } /* Literal.String.Char */
.code .sd { color: #a31515 } /* Literal.String.Doc */
.code .s2 { color: #a31515 } /* Literal.String.Double */
.code .se { color: #a31515 } /* Literal.String.Escape */
.code .sh { color: #a31515 } /* Literal.String.Heredoc */
.code .si { color: #a31515 } /* Literal.String.Interpol */
.code .sx { color: #a31515 } /* Literal.String.Other */
.code .sr { color: #a31515 } /* Literal.String.Regex */
.code .s1 { color: #a31515 } /* Literal.String.Single */
.code .ss { color: #a31515 } /* Literal.String.Symbol */


#SOPA {
    width: 100%;
    height: 75%;
    background: black;
    color: #aaa;
    position: absolute;
    top: 0; left: 0;
    z-index: 99999;
    font-size: 150%;
    opacity: .9;
}
#SOPA .content {
    padding: 3em 6em;
    font-weight: normal;
}
#SOPA a {
    color: inherit;
    text-decoration: underline;
}



svg {
    stroke: black;
    fill: white;
    font-size: 125%;
}

svg text {
    stroke: none;
    fill: black;
}

svg text.top_code {
    font-family: monospace;
}

svg .arrow {
    fill: none;
    stroke: black;
    stroke-width: 1;
}

svg .highlight {
    stroke-width: 5;
    stroke: #f00;
    fill: none;
    opacity: 0.5;
}

svg .grid {
    stroke: #8ff; stroke-width: 1; fill: none;
}
svg .grid .half {
    stroke-dasharray: 12.5 12.5;
    stroke-dashoffset: 6.25;
    stroke-dasharray: 2 2;
    stroke-dashoffset: 1;
}
svg .grid .tiny {
    stroke-dasharray: 1 2;
    stroke: #cff;
}
svg .grid .number {
    font-size: .5em;
    stroke: none;
    fill: #0cc;
}

svg .framenum {
    font-size: .75em;
    stroke: none;
    fill: #f00;
}
svg .name {
    stroke: black;
    stroke-width: 1.66;
    fill: #ddd;
}

svg .value {
    stroke: black;
    stroke-width: 1;
    fill: white;
}

svg .list {
    stroke: black;
    stroke-width: 1;
    fill: white;
}

svg .frame {
    stroke-width: 3;
    stroke: #666;
    stroke-dasharray: 10 10;
    fill: none;
}

svg text.framelabel {
    font-size: 90%;
    font-family: monospace;
}
