/* ==== book.css ==== */
.cmbsy-10x-x-120{font-weight: bold;}
.cmbsy-10x-x-120{font-weight: bold;}
.cmbsy-10x-x-120{font-weight: bold;}
.cmbsy-8{font-size:66%;font-weight: bold;}
.cmbsy-8{font-weight: bold;}
.cmbsy-8{font-weight: bold;}
.cmbsy-6{font-size:50%;font-weight: bold;}
.cmbsy-6{font-weight: bold;}
.cmbsy-6{font-weight: bold;}
.cmex-8{font-size:66%;}
.cmex-7x-x-85{font-size:49%;}
.cmr-8{font-size:66%;}
.cmr-6{font-size:50%;}
.cmmi-12{font-style: italic;}
.cmmi-8{font-size:66%;font-style: italic;}
.cmmi-6{font-size:50%;font-style: italic;}
.cmsy-8{font-size:66%;}
.cmsy-6{font-size:50%;}
.ec-lmbx-12x-x-207{font-size:207%; font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmbx-12x-x-207{ font-weight: bold;}
.ec-lmri-12x-x-120{font-size:120%; font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmri-12x-x-120{ font-style:italic;}
.ec-lmcsc-10x-x-172{font-size:143%; font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmcsc-10x-x-172{ font-variant: small-caps;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmtt-12{ font-family: monospace,monospace;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmri-12{ font-style:italic;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmbx-12{ font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
.ec-lmss-10{font-size:83%; font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.ec-lmss-10{ font-family: sans-serif;}
.cmr-10{font-size:83%;}
.cmr-7{font-size:58%;}
.ts1-lmss10-{font-size:83%;}
.ec-lmr-10x-x-109{font-size:90%;}
.ec-lmr-10{font-size:83%;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmtk-10x-x-120{ font-family: monospace,monospace;}
.ec-lmssbx-10{font-size:83%; font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10{ font-family: sans-serif; font-weight: bold;}
.ec-lmsso-10{font-size:83%; font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmsso-10{ font-family: sans-serif; font-style: oblique;}
.ec-lmssbx-10x-x-109{font-size:90%; font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmssbx-10x-x-109{ font-family: sans-serif; font-weight: bold;}
.ec-lmri-10{font-size:83%; font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmri-10{ font-style:italic;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmssbo-10x-x-120{ font-family: sans-serif; font-style: oblique; font-weight: bold;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
.ec-lmcsc-10x-x-120{ font-variant: small-caps;}
p{margin-top:0;margin-bottom:0}
p.indent{text-indent:0;}
p + p{margin-top:1em;}
p + div, p + pre {margin-top:1em;}
div + p, pre + p {margin-top:1em;}
a { overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; hyphens: auto; }
@media print {div.crosslinks {visibility:hidden;}}
table.tabular{border-collapse: collapse; border-spacing: 0;}
a img { border-top: 0; border-left: 0; border-right: 0; }
center { margin-top:1em; margin-bottom:1em; }
td center { margin-top:0em; margin-bottom:0em; }
.Canvas { position:relative; }
math { text-indent: 0em; }
li p.indent { text-indent: 0em }
li p:first-child{ margin-top:0em; }
li p:last-child, li div:last-child { margin-bottom:0.5em; }
li p:first-child{ margin-bottom:0; }
li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
.enumerate1 {list-style-type:decimal;}
.enumerate2 {list-style-type:lower-alpha;}
.enumerate3 {list-style-type:lower-roman;}
.enumerate4 {list-style-type:upper-alpha;}
div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
div.newtheorem .head{font-weight: bold;}
.obeylines-h,.obeylines-v {white-space: nowrap; }
div.obeylines-v p { margin-top:0; margin-bottom:0; }
.overline{ text-decoration:overline; }
.overline img{ border-top: 1px solid black; }
td.displaylines {text-align:center; white-space:nowrap;}
.centerline {text-align:center;}
.rightline {text-align:right;}
pre.verbatim {font-family: monospace,monospace; text-align:left; clear:both; }
.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
div.fbox {display:table}
div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
div.minipage{width:100%;}
div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
div.center div {text-align: left;}
div.flushright, div.flushright div.flushright {text-align: right;}
div.flushright div {text-align: left;}
div.flushleft {text-align: left;}
.underline{ text-decoration:underline; }
.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
.framebox-c {text-align:center;}
.framebox-l {text-align:left;}
.framebox-r {text-align:right;}
span.thank-mark{ vertical-align: super }
span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
div.footnotes{border-top:solid 1px black; border-bottom:solid 1px black; padding-bottom:1ex; padding-top:0.5ex; margin-right:15%; margin-top:2ex; font-style:italic; font-size:85%;}
div.footnotes p{margin-top:0; margin-bottom:0; text-indent:0;}
code.verb{font-family:monospace,monospace;}
div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
table.tabular td p{margin-top:0em;}
table.tabular {margin-left: auto; margin-right: auto;}
td p:first-child{ margin-top:0em; }
td p:last-child{ margin-bottom:0em; }
div.td00{ margin-left:0pt; margin-right:0pt; }
div.td01{ margin-left:0pt; margin-right:5pt; }
div.td10{ margin-left:5pt; margin-right:0pt; }
div.td11{ margin-left:5pt; margin-right:5pt; }
table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
td.td00{ padding-left:0pt; padding-right:0pt; }
td.td01{ padding-left:0pt; padding-right:5pt; }
td.td10{ padding-left:5pt; padding-right:0pt; }
td.td11{ padding-left:5pt; padding-right:5pt; }
table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
.hline hr, .cline hr{ height : 0px; margin:0px; }
.hline td, .cline td{ padding: 0; }
.hline hr, .cline hr{border:none;border-top:1px solid black;}
.hline {border-top: 1px solid black;}
.hline + .vspace:last-child{display:none;}
.tabbing-right {text-align:right;}
div.float, div.figure {margin-left: auto; margin-right: auto;}
div.float img {text-align:center;}
div.figure img {text-align:center;}
.marginpar,.reversemarginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
.marginpar p,.reversemarginpar p{margin-top:0.4em; margin-bottom:0.4em;}
.reversemarginpar{float:left;}
span.textbf { font-weight: bold; }
span.textit { font-style: italic; }
span.textrm { font-family: serif; }
span.textsc { font-variant: small-caps; }
span.textsf { font-family: sans-serif; }
span.texttt { font-family: monospace,monospace; }
span.emph { font-style: italic;}
span.emph span.emph {font-style: normal;}
.equation td{text-align:center; vertical-align:middle; }
td.eq-no{ width:5%; }
table.equation { width:100%; }
div.math-display, div.par-math-display{text-align:center;}
.array-hline,.array-cline{ border-top: 1px solid black; height:0px; }
.array-hline + .array-vspace:last-child{display:none;}
.hline-mtd, .array-hline td{ display:none }
.array-hline:first-child{border-bottom:1px solid black;border-top:none;}
math .texttt { font-family: monospace; }
math .textit { font-style: italic; }
math .textsl { font-style: oblique; }
math .textsf { font-family: sans-serif; }
math .textbf { font-weight: bold; }
mo.MathClass-op + mi{margin-left:0.3em}
mi + mo.MathClass-op{margin-left:0.3em}
math mstyle[mathvariant="bold"] { font-weight: bold; font-style: normal; }
math mstyle[mathvariant="normal"] { font-weight: normal; font-style: normal; }
h2.titleHead{text-align:center;}
div.maketitle{ margin-bottom: 2em; text-align:center; }
div.author, div.date {text-align:center;}
div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
div.dedication {text-align:center;}
div.titlepage{ margin-bottom: 2em; text-align:center; }
span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc, .addchapToc a {line-height: 200%; font-weight:bold;}
.subsubsectionHead, .likesubsubsectionHead { font-size: 1em; }
p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
h1.partHead{text-align: center}
.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
.subparagraphHead, .likesubparagraphHead { font-weight: bold;}
.index-item, .index-subitem, .index-subsubitem {display:block}
.caption td.id{font-weight: bold; white-space: nowrap; }
div.caption {text-align:center;}
.verse{white-space:nowrap; margin-left:2em}
h1.partHead{text-align: center}
figure.float, div.figure {margin-left: auto; margin-right: auto;}
figure.figure {text-align:center;}
figcaption.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:center;}
figcaption.caption span.id{font-weight: bold; white-space: nowrap; }
p + figcaption, img + figcaption{margin-top: 1em;}
.rotatebox{display: inline-block;}
table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
table.longtable{border-collapse: collapse; border-spacing: 0;}
div.longtable{text-align:center;}
table.longtable{margin-left:auto; margin-right: auto;}
caption.longtable .id{font-weight:bold;}
.equation-star td{text-align:center; vertical-align:middle; }
table.equation-star { width:100%; }
.boxed{border: 1px solid black; padding-left:2px; padding-right:2px;}
mtd.align-odd{margin-left:2em; text-align:right;}
mtd.align-even{margin-right:2em; text-align:left;}
.chemname {display: inline-grid; text-align:center;}
.chemnamebot{font-size: 0.8rem;}
div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
table.tabular td p{margin-top:0em;}
table.tabular {margin-left: auto; margin-right: auto;}
td p:first-child{ margin-top:0em; }
td p:last-child{ margin-bottom:0em; }
div.td00{ margin-left:0pt; margin-right:0pt; }
div.td01{ margin-left:0pt; margin-right:5pt; }
div.td10{ margin-left:5pt; margin-right:0pt; }
div.td11{ margin-left:5pt; margin-right:5pt; }
table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
td.td00{ padding-left:0pt; padding-right:0pt; }
td.td01{ padding-left:0pt; padding-right:5pt; }
td.td10{ padding-left:5pt; padding-right:0pt; }
td.td11{ padding-left:5pt; padding-right:5pt; }
table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
.hline hr, .cline hr{ height : 0px; margin:0px; }
.hline td, .cline td{ padding: 0; }
.hline hr, .cline hr{border:none;border-top:1px solid black;}
.hline {border-top: 1px solid black;}
.hline + .vspace:last-child{display:none;}
.small-caps{font-variant: small-caps;}
.textls{letter-spacing:0.05rem;}
dt.printshorthands{float:left; clear:left; margin-right:1em;}
dd.thebibliography {margin-left: 2.5em;}
dt.thebibliography {float:left; clear:left; margin-right:1em;}
img { max-width: 100%; height: auto; }
tr#TBL-1-1- {border-top:0.1344em solid #000;}
tr#TBL-1-1- {border-bottom:0.084em solid #000}
tr#TBL-1-5- {border-bottom:0.1344em solid #000}
tr#TBL-5-1- {border-top:0.1344em solid #000;}
tr#TBL-5-1- {border-bottom:0.084em solid #000}
tr#TBL-5-5- {border-bottom:0.1344em solid #000}
tr#TBL-8-1- {border-top:0.1344em solid #000;}
td#TBL-8-2-4{border-bottom:0.05038em solid #000}
tr#TBL-8-3- {border-bottom:0.084em solid #000}
tr#TBL-8-6- {border-bottom:0.1344em solid #000}
tr#TBL-9-1- {border-top:0.1344em solid #000;}
tr#TBL-9-1- {border-bottom:0.084em solid #000}
tr#TBL-9-7- {border-bottom:0.1344em solid #000}
tr#TBL-10-1- {border-top:0.1344em solid #000;}
tr#TBL-10-1- {border-bottom:0.084em solid #000}
tr#TBL-10-3- {border-bottom:0.1344em solid #000}
tr#TBL-11-1- {border-top:0.1344em solid #000;}
tr#TBL-11-1- {border-bottom:0.084em solid #000}
tr#TBL-11-5- {border-bottom:0.1344em solid #000}
tr#TBL-12-1- {border-top:0.1344em solid #000;}
td#TBL-12-2-2{border-bottom:0.05038em solid #000}
tr#TBL-12-3- {border-bottom:0.084em solid #000}
tr#TBL-12-8- {border-bottom:0.1344em solid #000}
tr#TBL-13-1- {border-top:0.1344em solid #000;}
tr#TBL-13-1- {border-bottom:0.084em solid #000}
tr#TBL-13-6- {border-bottom:0.1344em solid #000}
tr#TBL-15-1- {border-top:0.1344em solid #000;}
td#TBL-15-2-2{border-bottom:0.05038em solid #000}
tr#TBL-15-3- {border-bottom:0.084em solid #000}
tr#TBL-15-6- {border-bottom:0.1344em solid #000}
tr#TBL-16-1- {border-top:0.1344em solid #000;}
td#TBL-16-2-2{border-bottom:0.05038em solid #000}
tr#TBL-16-3- {border-bottom:0.084em solid #000}
tr#TBL-16-8- {border-bottom:0.1344em solid #000}
tr#TBL-20-1- {border-top:0.1344em solid #000;}
tr#TBL-20-1- {border-bottom:0.084em solid #000}
tr#TBL-20-5- {border-bottom:0.1344em solid #000}
tr#TBL-23-1- {border-top:0.1344em solid #000;}
tr#TBL-23-1- {border-bottom:0.084em solid #000}
tr#TBL-23-8- {border-bottom:0.1344em solid #000}
tr#TBL-25-1- {border-top:0.1344em solid #000;}
tr#TBL-25-1- {border-bottom:0.084em solid #000}
tr#TBL-25-8- {border-bottom:0.1344em solid #000}
tr#TBL-29-1- {border-top:0.1344em solid #000;}
tr#TBL-29-1- {border-bottom:0.084em solid #000}
tr#TBL-29-5- {border-bottom:0.1344em solid #000}
tr#TBL-34-1- {border-top:0.1344em solid #000;}
tr#TBL-34-1- {border-bottom:0.084em solid #000}
tr#TBL-34-5- {border-bottom:0.1344em solid #000}
/* ==== style.css ==== */
:root{
--ff-sans: 'Open Sans', sans-serif;
--fw-regular: 400;
--fw-bold: 800;
--f-lh: 28px;
--c-black: #282828;
--c-black-background: #1c1819;
--fs-xxxl: 32px;
--fs-xxl: 26px;
--fs-xl: 24px;
--fs-l: 22px;
--fs-m: 16px;
--padding-hamburger: 5px;
--c-beige: #F3EDE6;
--border-radius: 7px;
--image-padding: 14px;
--image-background: #ffffff;
}
@media (min-width: 1200px){
:root {
font-size: 1.5vw;
}
}

@media (min-width: 1500px){
:root {
font-size: 20px;
}
}



body{
margin:0;
padding:0;
font-family: var(--ff-sans);
font-weight: var(--fw-regular);
font-size: var(--fs-m);
color: var(--c-black);
}
@media screen and (min-width: 57rem) {
body{
display:grid;
grid-template-columns: 15rem 1fr;
}
main.main-content, main.titlepage, div.footnotes{max-width:40rem;grid-column: 2}
main.titlepage {grid-row: 1;}
nav.TOC{
grid-row:1;
grid-column: 1;
min-height:100vh;
}
}



main.main-content,main.titlepage,div.footnotes{
}
.permalink {
opacity: 0.5;
text-decoration: none;
font-size: 0.75rem;
line-height: 0.8rem;
margin-left: 0.25rem;
color: black;
display: inline-block;
}
.sectionHead, .subsectionHead {
display: flex;
align-items: center;
align-content: center;
}
p.indent, p.noindent{
text-indent: 0;
text-align: justify;
}


figure.texsource, figure.shellcommand, figure.htmlsource, figure.luasource, figure.textsource{
margin:0.5rem 0;
padding-left:0.5rem;
overflow:auto;
}
figure pre.listings{font-size: 1em;}
.chapterToc, .sectionToc, .subsectionToc{margin:0;padding:0;}
nav.TOC{
font-size:0;
}
.chapterToc ~ .likesectionToc, .chapterToc ~ .sectionToc, .likechapterToc ~ .likesectionToc, .likechapterToc ~ .sectionToc {padding-left:2em;margin-left:0}
.chapterToc ~ .likesectionToc ~ .likesubsectionToc, .chapterToc ~ .likesectionToc ~ .subsectionToc, .chapterToc ~ .sectionToc ~ .likesubsectionToc, .chapterToc ~ .sectionToc ~ .subsectionToc, .likechapterToc ~ .likesectionToc ~ .likesubsectionToc, .likechapterToc ~ .likesectionToc ~ .subsectionToc, .likechapterToc ~ .sectionToc ~ .likesubsectionToc, .likechapterToc ~ .sectionToc ~ .subsectionToc {padding-left:4em;margin-left:0;}
nav.TOC span{
margin-top:0;
font-size: 16px;
}
nav.TOC a, nav.TOC a:visited{
text-decoration:none;
}
.chapterToc,
.sectionToc,
.subsectionToc,
.likechapterToc {
display: block;
}
.chapterToc a,
.sectionToc a,
.subsectionToc a,
.likechapterToc a {
display: flex;
flex-grow: 1;
padding: 7px 10px 7px 15px;
justify-content: flex-start;
align-items: center;
}
.chapterToc span,
.sectionToc span,
.subsectionToc span {
display: block;
}
.chapterToc .chapter_number, .sectionToc .chapter_number, .subsectionToc .chapter_number {
margin-right: 7px;
white-space: nowrap;
}



body{
background-color: var(--c-beige);
}
a {
color: #5D9FF0;
}
main.main-content, div.footnotes, main.titlepage{
background-color:white;
}
nav.TOC,nav.TOC a, nav.TOC a:visited{
background-color: var(--c-black);
color:#fff;
}
nav.TOC span:hover,
nav.TOC span:hover *,
nav.TOC span.chapterToc.selected,
nav.TOC span.chapterToc.selected a {
background-color:#5b5a58;
}
figure.texsource, figure.shellcommand, figure.htmlsource, figure.luasource, figure.textsource{
border:1px solid #cec1aa;
background-color:#d5e3c6;
}
.main-content {
line-height: var(--f-lh);
margin-left: 30px;
}
div.footnotes {
border: none;
margin-right: 0;
}
.footnote-mark {
margin-right: 3px;
}
table.tabular {
width: 100%;
}
figure.figure {
margin: 30px 0px 30px 0px;;
text-align: center;
padding: 0;
}
figcaption.caption {
text-indent: 0;
margin: 0;
}
.table div.center, .table div.center div.center {
margin: 0;
}
.table, div.tabular {
overflow-x: auto;
}
.table table {
width: 100%;
}
.menu {
position: relative;
}
.toggle-menu-label {
display: none;
}
.menu input {
display: none;
}
.menu-items {
display: block;
list-style: none;
margin: 0;
padding: 0;
width: 300px;
}
.menu-items .chapterToc, .menu-items .likechapterToc {
display: block;
}
.menu-items a {
text-decoration: none;
}
.home-link {
display: block;
}
.home-title {
display: block;
}
.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc, .addchapToc a {
font-weight: var(--fw-bold);
}
@media (max-width: 768px) {
.toggle-menu-label {
display: block;
padding: 10px;
cursor: pointer;
}
.hamb{
cursor: pointer;
padding: var(--padding-hamburger);
margin-right: calc(var(--padding-hamburger) * -1);
display: flex;
align-items: center;
align-content: center;
justify-content: center;
}
.hamb-line {
display: block;
filter: brightness(0) invert(1);
background: url("menu.svg") no-repeat center center;
background-size: contain;
width: 30px;
height: 30px;
font-size: 0px;
}
span.hamb-line:hover {
background-color: transparent !important;
font-size: 0px;
}
.menu-items {
display: none;
position: absolute;
top: 100%;
left: 0;
width: 100%;
background-color: var(--c-black);
z-index: 1;
}
.menu {
background: var(--c-black);
display: flex;
padding: 10px 1rem;
position: relative;
align-items: center;
justify-content: space-between;
}
#toggle-menu:checked ~ .menu-items {
display: block;
}
#toggle-menu:checked ~ .toggle-menu-label span {
background-image: url("close.svg");
background-color: transparent !important;
}
.logo {
display: block;
color: #000;
font-size: 20px;
font-weight: var(--fw-bold);
}
.chapterToc a, .sectionToc a, .subsectionToc a, .likechapterToc a {
padding-left: 17px;
}
.menu-items .chapterToc.home-link {
display: none;
}
.home-title {
display: none;
}
}
div.center {
margin-left: 0 !important;
margin-right: 0 !important;
}
main.main-content h2.chapterHead, main.main-content h2.likechapterHead {
margin-top: 0px;
}
h1 {
font-weight: var(--fw-bold);
text-transform: uppercase;
font-size: var(--fs-xxxl);
}
h2 {
font-weight: var(--fw-bold);
text-transform: uppercase;
font-size: var(--fs-xxl);
}
h3 {
font-weight: var(--fw-bold);
text-transform: uppercase;
font-size: var(--fs-xl);
}
h4 {
font-weight: var(--fw-bold);
text-transform: uppercase;
font-size: var(--fs-l);
}
.videoWrapper {
position: relative;
padding-bottom: 56.25%;

padding-top: 25px;
height: 0;
}
.videoWrapper iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.home-bread {
max-width: 100%;
margin-top: 1em;
}
main.main-content, div.footnotes, main.titlepage {
background-color: var(--c-beige);
}
.main-content {
flex: 1;
}
.wrapper {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
}
.header {
background-color: var(--c-black-background);
width: 100%;
height: 340px;
display: flex;
align-content: center;
justify-content: center;
align-items: center;
margin-bottom: 40px;
}
.header img {
border-radius: 0px;
border: none;
width: 710px;
}
body {
display: block;
}
.book-content {
display: flex;
padding: 0px 40px;
max-width: 1200px;
}
.TOC.menu {
width: 330px;
}
.main-content {
width: 100%;
margin-bottom: 40px;
}
nav.TOC, nav.TOC a, nav.TOC a:visited {
background-color: transparent;
color: var(--c-black);
}
.menu-group {
display: flex;
flex-direction: column;
align-items: center;
}
.menu-inner {
border: 2px solid var(--c-black);
border-radius: var(--border-radius);
width: 100%;
}
.menu-entry {
padding: 1px;
border-radius: var(--border-radius);
}
.menu-arrow {
width: 14px;
border: none;
border-radius: 0px;
}
nav.TOC span:hover, nav.TOC span:hover *, nav.TOC span.chapterToc.selected, nav.TOC span.chapterToc.selected a {
background-color: transparent;
}
.menu-entry:hover {
background-color: #c8c8c8;
}
p.flowchart-image-wrapper {
display: flex;
justify-content: center;
}
.menu-items .menu-group:last-of-type .menu-arrow {
display: none;
}
blockquote {
margin-left: 0px;
margin-right: 0px;
}
.crosslinks-bottom {
margin-top: 1em;
}
.crosslinks-bottom a {
display: inline-block;
border-radius: var(--border-radius);
border: 2px solid var(--c-black);
color: var(--c-black);
padding: 4px;
font-weight: var(--fw-bold);
text-decoration: none;
}
.crosslinks-bottom a.prev {
margin-right: 7px;
}
.crosslinks-bottom a:hover {
color: #444;
}
.menu-group.selected .menu-inner {
background-color: #c8c8c8;
}
.TOC.menu {
margin-bottom: 40px;
}
.mobile-banner {
display: none;
}
figure.float, div.figure, figure.figure {
padding: var(--image-padding);
background: var(--image-background);
}
figure.figure p.noindent {
text-align: center;
}
.flowchart-image-wrapper {
text-align: center;
}
main.main-content h2.chapterHead.home-content-title {
margin-top: 0.5em;
margin-bottom: 0.5em;
line-height: 1.5em;
}
.download-description {
font-weight: var(--fw-bold);
}
.download-links {
p.indent, p.noindent {
text-align: unset;
}
}
@media (max-width: 768px) {
.header {
display: none;
}
.book-content {
padding: 0px;
display: flex;
width: 100%;
flex-direction: column;
}
.main-content {
width: 100%;
margin-left: 0px;
box-sizing: border-box;
padding: 0px 14px;
margin-top: 20px;
max-width: 100%;
}
.TOC.menu {
width: 100%;
max-width: 100%;
background: var(--c-black-background);
box-sizing: border-box;
}
nav.TOC, nav.TOC a, nav.TOC a:visited {
color: #fff;
}
.menu-arrow {
display: none;
}
.menu-inner {
border: none;
border-radius: 0px;
}
.menu-group.selected .menu-inner {
background: var(--c-black-background);
}
.menu-entry:hover {
background-color: transparent;
}
.TOC.menu {
margin-bottom: 0px;
}
.mobile-banner {
display: block;
background-color: var(--c-black-background);
padding: 5px;
}
.mobile-banner a img {
border: none;
border-radius: 0px;
}
figure.float, div.figure, figure.figure {
padding: calc(var(--image-padding) / 2);
}
}
/* ==== redesign.css ==== */
@font-face{
font-family:'Source Serif 4';font-style:normal;font-weight:200 900;
font-display:swap;src:url('/fonts/source-serif-4-var.woff2') format('woff2');
}
@font-face{
font-family:'Source Serif 4';font-style:italic;font-weight:200 900;
font-display:swap;src:url('/fonts/source-serif-4-italic-var.woff2') format('woff2');
}
@font-face{
font-family:'Fraunces';font-style:normal;font-weight:100 900;
font-display:swap;src:url('/fonts/fraunces-var.woff2') format('woff2');
}
@font-face{
font-family:'JetBrains Mono';font-style:normal;font-weight:100 800;
font-display:swap;src:url('/fonts/jetbrains-mono-var.woff2') format('woff2');
}

:root{

--sd-bg: #FBF7F0;
--sd-surface: #FFFFFF;
--sd-surface-2: #F4ECDF;
--sd-ink: #2B2118;
--sd-ink-soft: #6A5B49;
--sd-hairline: #E7DDCE;

--sd-accent: #C2410C;
--sd-accent-hover: #9A3412;
--sd-accent-soft: #FBEAE0;
--sd-on-accent: #FFFFFF;

--sd-tip:#2F7D52; --sd-tip-bg:#E9F4EE;
--sd-warn:#B45309; --sd-warn-bg:#FBEFD6;
--sd-science:#2563EB; --sd-science-bg:#E8EFFD;

--sd-header-bg: #1C1714;

--sd-font-serif: 'Source Serif 4', Georgia, 'Times New Roman', serif;
--sd-font-display: 'Fraunces', 'Source Serif 4', Georgia, serif;
--sd-font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
--sd-font-ui: 'Open Sans', system-ui, -apple-system, sans-serif;
--sd-measure: 38rem;
--sd-leading: 1.75;

--sd-radius: 10px;
--sd-radius-lg:16px;
--sd-shadow-sm: 0 1px 2px rgba(43,33,24,.05), 0 1px 1px rgba(43,33,24,.04);
--sd-shadow-md: 0 10px 30px -16px rgba(43,33,24,.35);
--sd-ease: .2s ease;
--sd-focus: var(--sd-accent);

--c-beige: var(--sd-bg);
--c-black: var(--sd-ink);
--c-black-background: var(--sd-header-bg);
--image-background: var(--sd-surface);
}
[data-theme="dark"]{
--sd-bg: #161210;
--sd-surface: #211B16;
--sd-surface-2: #2A221A;
--sd-ink: #ECE3D6;
--sd-ink-soft: #B4A693;
--sd-hairline: #392F25;
--sd-accent: #F59E5B;
--sd-accent-hover: #FBBF77;
--sd-accent-soft: #2E2317;
--sd-on-accent: #1A1411;
--sd-tip:#7BD9A6; --sd-tip-bg:#15241C;
--sd-warn:#FBBF77; --sd-warn-bg:#2A2012;
--sd-science:#9DBBFF; --sd-science-bg:#161E2E;
--sd-header-bg: #100C0A;
--sd-shadow-sm: 0 1px 2px rgba(0,0,0,.4);
--sd-shadow-md: 0 10px 30px -16px rgba(0,0,0,.65);
}

html{ -webkit-text-size-adjust:100%; }
body{
background-color: var(--sd-bg);
color: var(--sd-ink);
font-family: var(--sd-font-ui);
}
::selection{ background: var(--sd-accent-soft); color: var(--sd-ink); }
:focus-visible{
outline: 2px solid var(--sd-focus);
outline-offset: 2px;
border-radius: 3px;
}

.header{ background-color: var(--sd-header-bg); }

@media (min-width: 769px){
.book-content{ align-items: flex-start; gap: 8px; }
}

main.main-content,
main.titlepage,
div.footnotes{
background-color: var(--sd-surface);
color: var(--sd-ink);
max-width: var(--sd-measure);
}
main.main-content{
font-family: var(--sd-font-serif);
font-size: 1.06rem;
line-height: var(--sd-leading);
font-feature-settings: "kern" 1, "liga" 1, "onum" 1;
border: 1px solid var(--sd-hairline);
border-radius: var(--sd-radius-lg);
box-shadow: var(--sd-shadow-sm);
padding: 2.6rem 2.9rem 3rem;
}

main.main-content p,
main.main-content p.indent,
main.main-content p.noindent,
main.main-content li{
text-align: left;
hyphens: auto;
text-wrap: pretty;
}
main.main-content p{ margin: 0 0 1.15em; }

main.main-content .ec-lmtt-12,
main.main-content code,
main.main-content kbd,
main.main-content pre,
main.main-content tt{
font-family: var(--sd-font-mono);
font-size: .92em;
}

main.main-content :not(pre) > code{
background: var(--sd-surface-2);
border: 1px solid var(--sd-hairline);
border-radius: 5px;
padding: .08em .35em;
}

main.main-content a{
color: var(--sd-accent);
text-decoration: underline;
text-decoration-thickness: 1px;
text-decoration-color: color-mix(in srgb, var(--sd-accent) 38%, transparent);
text-underline-offset: 2px;
transition: color var(--sd-ease), text-decoration-color var(--sd-ease);
}
main.main-content a:hover{
color: var(--sd-accent-hover);
text-decoration-color: currentColor;
}

main.main-content h1,
main.main-content h2,
main.main-content h3,
main.main-content h4,
main.main-content h5,
main.main-content .chapterHead,
main.main-content .likechapterHead,
main.main-content .sectionHead,
main.main-content .subsectionHead{
font-family: var(--sd-font-display);
text-transform: none;
color: var(--sd-ink);
line-height: 1.15;
letter-spacing: -0.01em;
}

.sd-chapter-byline{
font-family: var(--sd-font-ui);
font-size: .85rem;
color: var(--sd-ink-soft);
margin: -.4em 0 1.2em;
}
.sd-chapter-byline a{ color: inherit; text-decoration-color: var(--sd-rule, #E5DCCB); }
.sd-chapter-byline a:hover{ color: var(--sd-accent); }

.sd-author-bio{ max-width: 60ch; color: var(--sd-ink-soft); }

.sd-popular-topics{ margin: 2.5rem 0; }
.sd-topics-list{ display: flex; flex-wrap: wrap; gap: .6rem; }
.sd-topics-list .sd-topic{
display: inline-block;
padding: .45em .9em;
border: 1px solid var(--sd-rule, #E5DCCB);
border-radius: 999px;
background: var(--sd-card, #fff);
color: var(--sd-ink);
font-family: var(--sd-font-ui);
font-size: .92rem;
text-decoration: none;
}
.sd-topics-list .sd-topic:hover{
border-color: var(--sd-accent);
color: var(--sd-accent);
}

main.main-content h1.chapterHead,
main.main-content h1.likechapterHead,
main.main-content h2.chapterHead,
main.main-content h2.likechapterHead{
font-size: clamp(2rem, 1.5rem + 1.6vw, 2.8rem);
font-weight: 600;
text-transform: none;
margin: .2em 0 .7em;
}
main.main-content h2.sectionHead,
main.main-content h3.sectionHead{
font-size: 1.6rem; font-weight: 600;
margin: 2.2em 0 .6em; scroll-margin-top: 1.2rem;
}
main.main-content h3.subsectionHead,
main.main-content h4.subsectionHead{
font-size: 1.22rem; font-weight: 650;
margin: 1.8em 0 .5em; scroll-margin-top: 1.2rem;
}

main.main-content h1.chapterHead .titlemark,
main.main-content h2.chapterHead .titlemark{
display: block;
font-family: var(--sd-font-ui);
font-weight: 700;
font-size: .8rem;
letter-spacing: .14em;
text-transform: uppercase;
color: var(--sd-accent);
margin-bottom: .35em;
}
main.main-content h1.chapterHead .titlemark::before,
main.main-content h2.chapterHead .titlemark::before{ content: "Chapter "; }

main.main-content h2.sectionHead .titlemark,
main.main-content h3.sectionHead .titlemark,
main.main-content h3.subsectionHead .titlemark,
main.main-content h4.subsectionHead .titlemark{
color: var(--sd-accent);
font-variant-numeric: tabular-nums;
margin-right: .5rem;
}

main.main-content .permalink{
color: var(--sd-ink-soft);
opacity: 0;
transition: opacity var(--sd-ease);
}
main.main-content .sectionHead:hover .permalink,
main.main-content .subsectionHead:hover .permalink{ opacity: .65; }

main.main-content blockquote{
margin: 1.4em 0;
padding: 1.05rem 1.3rem;
background: var(--sd-accent-soft);
border-left: 3px solid var(--sd-accent);
border-radius: 0 var(--sd-radius) var(--sd-radius) 0;
color: var(--sd-ink);
}
main.main-content blockquote p{ margin: 0; }
main.main-content blockquote p + p{ margin-top: .7em; }

.sd-callout{
margin: 1.4em 0; padding: 1rem 1.2rem 1rem 3rem;
position: relative; border-radius: var(--sd-radius);
background: var(--sd-surface-2); border: 1px solid var(--sd-hairline);
}
.sd-callout::before{
position: absolute; left: 1rem; top: .95rem; font-size: 1.1rem; line-height: 1;
}
.sd-callout--tip{ background: var(--sd-tip-bg); border-color: color-mix(in srgb, var(--sd-tip) 30%, transparent); }
.sd-callout--tip::before{ content: "💡"; }
.sd-callout--warn{ background: var(--sd-warn-bg); border-color: color-mix(in srgb, var(--sd-warn) 30%, transparent); }
.sd-callout--warn::before{ content: "⚠️"; }
.sd-callout--science{ background: var(--sd-science-bg); border-color: color-mix(in srgb, var(--sd-science) 30%, transparent); }
.sd-callout--science::before{ content: "🔬"; }

main.main-content ul.itemize,
main.main-content ol.enumerate,
main.main-content ul, main.main-content ol{ padding-left: 1.4em; }
main.main-content li{ margin: .35em 0; }
main.main-content ul.itemize li::marker{ color: var(--sd-accent); }
main.main-content dl.description dt{ font-weight: 700; }

main.main-content figure.figure,
main.main-content figure.float,
main.main-content div.figure{
background: var(--sd-surface);
border: 1px solid var(--sd-hairline);
border-radius: var(--sd-radius);
padding: 14px;
margin: 1.8em 0;
box-shadow: var(--sd-shadow-sm);
}
main.main-content figure img,
main.main-content .figure img{ border-radius: 6px; }
main.main-content figcaption.caption{
font-family: var(--sd-font-serif);
font-style: italic;
font-size: .9rem;
line-height: 1.5;
color: var(--sd-ink-soft);
margin-top: .85em;
text-align: left;
}
main.main-content figcaption.caption .id{
font-style: normal;
font-weight: 700;
color: var(--sd-accent);
}

main.main-content table.tabular,
main.main-content .table table{
width: 100%;
border-collapse: collapse;
font-size: .96rem;
margin: 1.4em 0;
}

.sd-table-scroll{ overflow-x: auto; max-width: 100%; margin: 1.4em 0; }
.sd-table-scroll > table.tabular{ margin: 0; }
@media screen and (min-width: 57rem){

body{ grid-template-columns: 15rem minmax(0, 1fr); }
main.main-content, main.titlepage, div.footnotes{ min-width: 0; }
}
main.main-content table.tabular td,
main.main-content table.tabular th{
border: 1px solid var(--sd-hairline);
padding: .5rem .7rem;
text-align: left;
vertical-align: top;
}
main.main-content table.tabular tr:nth-child(even) td{ background: var(--sd-surface-2); }
main.main-content table.tabular th{
background: var(--sd-accent-soft);
font-family: var(--sd-font-ui);
font-weight: 700;
}

main.main-content figure.texsource,
main.main-content figure.shellcommand,
main.main-content figure.htmlsource,
main.main-content figure.luasource,
main.main-content figure.textsource{
background: var(--sd-surface-2);
border: 1px solid var(--sd-hairline);
border-radius: var(--sd-radius);
padding: 1rem 1.1rem;
margin: 1.4em 0;
overflow: auto;
}
main.main-content figure pre.listings,
main.main-content pre{ font-family: var(--sd-font-mono); font-size: .9rem; line-height: 1.55; }

div.footnotes{
border-top: 1px solid var(--sd-hairline);
margin-top: 2.5rem;
padding-top: 1rem;
font-size: .88rem;
color: var(--sd-ink-soft);
max-width: var(--sd-measure);
}
.footnote-mark a{ color: var(--sd-accent); text-decoration: none; }

.sd-readtime{
font-family: var(--sd-font-ui);
font-size: .72rem;
font-weight: 600;
letter-spacing: .08em;
text-transform: uppercase;
color: var(--sd-ink-soft);
margin: -.4em 0 1.6em !important;
display: flex; align-items: center; gap: .4em;
}

.sd-chapter-toc{
margin: 1.4em 0 2em;
background: var(--sd-surface-2);
border: 1px solid var(--sd-hairline);
border-radius: var(--sd-radius);
font-family: var(--sd-font-ui);
}
.sd-chapter-toc summary.sd-chapter-toc-title{
display: flex; align-items: center; gap: .6rem;
margin: 0; padding: .85rem 1.25rem;
font-family: var(--sd-font-display);
font-size: .76rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase;
color: var(--sd-ink-soft);
cursor: pointer; list-style: none; user-select: none;
}
.sd-chapter-toc summary.sd-chapter-toc-title::-webkit-details-marker{ display: none; }

.sd-chapter-toc summary.sd-chapter-toc-title::after{
content: ""; margin-left: auto;
width: .55em; height: .55em; flex: 0 0 auto;
border-right: 2px solid var(--sd-accent); border-bottom: 2px solid var(--sd-accent);
transform: rotate(45deg) translateY(-15%);
transition: transform var(--sd-ease);
}
.sd-chapter-toc details[open] summary.sd-chapter-toc-title::after{ transform: rotate(225deg) translateY(15%); }
.sd-chapter-toc summary.sd-chapter-toc-title:hover{ color: var(--sd-accent); }
.sd-chapter-toc-list{ list-style: none; margin: 0; padding: .1rem 1.25rem 1rem; }
.sd-chapter-toc-list li{ margin: 0; }

.sd-chapter-toc .sd-chapter-toc-list a{
display: flex; align-items: baseline; gap: .5em;
padding: .28rem 0;
color: var(--sd-ink); text-decoration: none; font-size: .92rem; line-height: 1.45;
}
.sd-chapter-toc .sd-chapter-toc-list a:hover{ color: var(--sd-accent); text-decoration: underline; text-underline-offset: 2px; }
.sd-ct-num{ color: var(--sd-accent); font-weight: 700; font-variant-numeric: tabular-nums; font-size: .82rem; flex: 0 0 auto; }
.sd-ct-sub{ padding-left: 1.5rem; }
.sd-chapter-toc .sd-ct-sub a{ font-size: .86rem; color: var(--sd-ink-soft); }
@media (max-width: 768px){

.sd-chapter-toc summary.sd-chapter-toc-title{ padding: 1rem 1.1rem; }
.sd-chapter-toc-list{ padding: .1rem 1.1rem 1rem; }
.sd-chapter-toc .sd-chapter-toc-list a{ padding: .55rem 0; }
}

nav.crosslinks-bottom{
display: flex; justify-content: space-between; gap: .8rem;
margin-top: 2.5rem; padding-top: 1.5rem;
border-top: 1px solid var(--sd-hairline);
}
nav.crosslinks-bottom a.prev,
nav.crosslinks-bottom a.next{
display: flex; flex-direction: column; gap: .15rem;
flex: 0 1 auto; min-width: 0; max-width: 48%;
font-family: var(--sd-font-ui);
font-weight: 600; font-size: .92rem;
border: 1px solid var(--sd-hairline);
border-radius: var(--sd-radius);
background: var(--sd-surface);
color: var(--sd-ink);
padding: .7rem 1rem;
text-decoration: none;
transition: border-color var(--sd-ease), color var(--sd-ease), transform var(--sd-ease);
}
nav.crosslinks-bottom a.next{ margin-left: auto; text-align: right; align-items: flex-end; }

nav.crosslinks-bottom a.prev:not(:has(.sd-xl-dir))::before{ content: "← "; color: var(--sd-accent); }
nav.crosslinks-bottom a.next:not(:has(.sd-xl-dir))::after{ content: " →"; color: var(--sd-accent); }
.sd-xl-dir{
font-size: .68rem; font-weight: 700;
letter-spacing: .12em; text-transform: uppercase;
color: var(--sd-ink-soft);
}
a.prev .sd-xl-dir::before{ content: "← "; color: var(--sd-accent); }
a.next .sd-xl-dir::after{ content: " →"; color: var(--sd-accent); }

.sd-xl-title{
min-width: 0; max-width: 100%;
overflow-wrap: break-word;
hyphens: manual;
text-wrap: balance;
line-height: 1.35;
}
nav.crosslinks-bottom a:hover{
border-color: var(--sd-accent); color: var(--sd-accent);
transform: translateY(-1px);
}

nav.TOC.menu{ font-family: var(--sd-font-ui); }
.logo{
display: block;
font-family: var(--sd-font-display) !important;
font-weight: 600;
color: var(--sd-ink) !important;
font-size: .92rem !important;
line-height: 1.15;
text-wrap: balance;
padding: 2px 6px 10px;
letter-spacing: 0;
}

.menu-arrow{ display: none !important; }

@media (min-width: 769px){
nav.TOC.menu{ align-self: flex-start; padding: 4px 4px 24px; }
}

.menu-group:has(.home-link){ display: none; }


nav.TOC .menu-inner{
border: 0 !important; border-radius: 0 !important;
background: transparent !important; box-shadow: none !important; overflow: visible !important;
}
nav.TOC .menu-group{ margin: 0 !important; }
nav.TOC .menu-entry{
border-radius: 7px !important; margin: 0;
transition: background var(--sd-ease), box-shadow var(--sd-ease);
}

nav.TOC .menu-entry:has(.sectionToc),
nav.TOC .menu-entry:has(.subsectionToc){ display: none !important; }

nav.TOC .chapterToc > a{
display: flex; align-items: baseline; gap: .55rem;
padding: 6px 10px; border-radius: 7px;
color: var(--sd-ink); font-weight: 600; font-size: 16px; line-height: 1.3;
text-decoration: none;
transition: color var(--sd-ease), background var(--sd-ease);
}
nav.TOC .chapterToc > a .link_text{ font-size: inherit; }
nav.TOC .chapter_number{
flex: 0 0 24px; text-align: right;
margin-right: 0;
color: var(--sd-accent); font-weight: 700; font-variant-numeric: tabular-nums; font-size: 13px;
}
nav.TOC .link_text{ min-width: 0; }

nav.TOC .menu-group:not(:has(.chapter_number)) .chapterToc > a{
padding-left: calc(10px + 24px + .55rem);
}

nav.TOC .menu-group:not(.selected) .chapterToc > a:hover{
background: var(--sd-surface-2);
box-shadow: inset 0 0 0 1px var(--sd-hairline);
color: var(--sd-ink);
}

nav.TOC .menu-group.selected .chapterToc > a{
background: var(--sd-accent-soft);
background: color-mix(in srgb, var(--sd-accent) 8%, transparent);
box-shadow: inset 3px 0 0 var(--sd-accent);
color: var(--sd-accent); font-weight: 700;
}

nav.TOC .sd-toc-head{
margin: 0; padding: 16px 10px 5px;
font-family: var(--sd-font-display); font-weight: 600;
font-size: .72rem; letter-spacing: .14em; text-transform: uppercase;
color: var(--sd-ink-soft);
}
nav.TOC .menu-group.sd-section-start{ border-top: 1px solid var(--sd-hairline); margin-top: 2px !important; }
nav.TOC .sd-toc-head--first{ padding-top: 6px; }
nav.TOC .sd-toc-head--first + .menu-group.sd-section-start{ border-top: 0; margin-top: 0 !important; }

nav.TOC .sd-toc-head--actions{ margin-top: 14px; padding-top: 14px; border-top: 2px solid var(--sd-hairline); }
nav.TOC .sd-toc-head--actions + .menu-group.sd-section-start{ border-top: 0; margin-top: 0 !important; }

nav.TOC .menu-group:has(a[href*=".pdf"]) .chapterToc > a,
nav.TOC .menu-group:has(a[href*=".epub"]) .chapterToc > a,
nav.TOC .menu-group:has(a[href*="github"]) .chapterToc > a{
color: var(--sd-ink-soft); font-weight: 600; font-size: 15px;
}
nav.TOC .menu-group:has(a[href*=".pdf"]) .chapter_number,
nav.TOC .menu-group:has(a[href*=".epub"]) .chapter_number,
nav.TOC .menu-group:has(a[href*="github"]) .chapter_number{ flex: 0 0 auto; font-size: .95rem; color: inherit; }

nav.TOC .menu-group:has(a[href*="hardcover"]){ margin-top: 4px !important; }
nav.TOC .menu-group:has(a[href*="hardcover"]) .chapterToc > a{
background: var(--sd-accent); border-radius: var(--sd-radius); font-weight: 700;
box-shadow: 0 8px 18px -12px color-mix(in srgb, var(--sd-accent) 70%, transparent);
}
nav.TOC .menu-group:has(a[href*="hardcover"]) .link_text,
nav.TOC .menu-group:has(a[href*="hardcover"]) .chapter_number{ color: var(--sd-on-accent) !important; }
nav.TOC .menu-group:has(a[href*="hardcover"]) .chapterToc > a:hover{ background: var(--sd-accent-hover); box-shadow: none; }
nav.TOC .menu-group:has(a[href*="kofi"], a[href*="breadco.de/support"]){ margin-top: 4px !important; }
nav.TOC .menu-group:has(a[href*="kofi"], a[href*="breadco.de/support"]) .chapterToc > a{
border: 1.5px solid var(--sd-accent); border-radius: var(--sd-radius);
padding-block: calc(6px - 1.5px); font-weight: 700;
}
nav.TOC .menu-group:has(a[href*="kofi"], a[href*="breadco.de/support"]) .link_text,
nav.TOC .menu-group:has(a[href*="kofi"], a[href*="breadco.de/support"]) .chapter_number{ color: var(--sd-accent) !important; }
nav.TOC .menu-group:has(a[href*="kofi"], a[href*="breadco.de/support"]) .chapterToc > a:hover{ background: var(--sd-accent-soft); }

nav.TOC .chapterToc > a:focus-visible{ outline: 2px solid var(--sd-focus); outline-offset: 2px; border-radius: 7px; }
nav.TOC .menu-group:has(a[href*="hardcover"]) .chapterToc > a:focus-visible{ outline-color: var(--sd-on-accent); outline-offset: -3px; }


.sd-search{ position: relative; margin: 0 0 14px; }
.sd-search-trigger{ display: none; }

nav.TOC .sd-search-input{
display: block;
width: 100%; box-sizing: border-box;
font-family: var(--sd-font-ui); font-size: .92rem;
color: var(--sd-ink);
background: var(--sd-surface);
border: 1px solid var(--sd-hairline);
border-radius: var(--sd-radius);
padding: .55rem .7rem .55rem 2rem;
}
.sd-search-input::placeholder{ color: var(--sd-ink-soft); }
.sd-search-input:focus{ outline: none; border-color: var(--sd-accent); }
.sd-search-icon{
position: absolute; left: .65rem; top: 50%; transform: translateY(-50%);
width: 15px; height: 15px; color: var(--sd-ink-soft); pointer-events: none;
}
.sd-search-kbd{
position: absolute; right: .55rem; top: 50%; transform: translateY(-50%);
font-family: var(--sd-font-mono); font-size: .7rem;
color: var(--sd-ink-soft);
border: 1px solid var(--sd-hairline); border-radius: 5px;
padding: .05rem .35rem; pointer-events: none;
}
.sd-search-results{
position: absolute; z-index: 9997; left: 0; right: 0; top: calc(100% + 6px);
background: var(--sd-surface);
border: 1px solid var(--sd-hairline);
border-radius: var(--sd-radius);
box-shadow: var(--sd-shadow-md);
max-height: 60vh; overflow-y: auto;
display: none; padding: 4px;
}
.sd-search-results.open{ display: block; }
.sd-result{
display: block; text-decoration: none; color: var(--sd-ink);
padding: .5rem .6rem; border-radius: 7px; font-family: var(--sd-font-ui);
}

nav.TOC .sd-result, nav.TOC .sd-result:visited{ color: var(--sd-ink); }
.sd-result:hover, .sd-result.sd-active{ background: var(--sd-accent-soft); }
.sd-result-title{ font-weight: 700; font-size: .85rem; }
.sd-result-crumb{ font-size: .72rem; color: var(--sd-accent); margin-bottom: 2px; }
.sd-result-excerpt{ font-size: .78rem; color: var(--sd-ink-soft); line-height: 1.4; }
.sd-result mark{ background: var(--sd-accent-soft); color: inherit; padding: 0 1px; }
.sd-search-empty{ padding: .7rem; font-family: var(--sd-font-ui); font-size: .82rem; color: var(--sd-ink-soft); }

main.main-content.sd-home{ max-width: 60rem; }
.sd-hero{
display: grid;
grid-template-columns: minmax(0, 1fr) clamp(140px, 26%, 190px);
gap: 2rem; align-items: center;
margin: .5rem 0 2.5rem;
}
.sd-hero-text{ min-width: 0; }
.sd-eyebrow{
font-family: var(--sd-font-ui); font-weight: 700;
font-size: .78rem; letter-spacing: .14em; text-transform: uppercase;
color: var(--sd-accent); margin: 0 0 .6rem !important;
}
.sd-hero-title{
font-family: var(--sd-font-display) !important;
font-weight: 600 !important;
font-size: clamp(1.9rem, 1.3rem + 1.6vw, 2.5rem) !important;
line-height: 1.08 !important; letter-spacing: -0.02em;
text-transform: none !important;
margin: 0 0 .5rem !important; color: var(--sd-ink);
}
.sd-hero-lead{
font-family: var(--sd-font-serif); font-size: 1.18rem; line-height: 1.55;
color: var(--sd-ink-soft); margin: 0 0 .7rem !important;
}

.sd-byline{
font-family: var(--sd-font-ui); font-size: .82rem;
color: var(--sd-ink-soft); margin: 0 0 1.4rem !important;
}
.sd-byline a{
color: var(--sd-ink); font-weight: 600;
text-decoration: underline; text-decoration-color: var(--sd-hairline);
text-underline-offset: 2px;
white-space: nowrap;
}
.sd-byline a:hover{ color: var(--sd-accent); text-decoration-color: currentColor; }
.sd-hero-actions{ display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; }
.sd-hero-cover{ display: block; }
.sd-hero-cover img{
width: 100%; height: auto; border-radius: var(--sd-radius);
box-shadow: var(--sd-shadow-md); border: 1px solid var(--sd-hairline);
transition: transform var(--sd-ease);
cursor: pointer;
}

main a[href$=".html"] img{ cursor: pointer; }
.sd-hero-cover:hover img{ transform: translateY(-3px) rotate(-.6deg); }
.sd-btn{
display: inline-flex; align-items: center; gap: .45rem;
box-sizing: border-box;
font-family: var(--sd-font-ui); font-weight: 700; font-size: .9rem;
padding: .6rem 1.1rem; border-radius: 50px; text-decoration: none !important;
border: 2px solid transparent; cursor: pointer; white-space: nowrap;
transition: transform var(--sd-ease), box-shadow var(--sd-ease), background var(--sd-ease), color var(--sd-ease);
}
.sd-btn-primary{
background: var(--sd-accent); color: var(--sd-on-accent) !important;
box-shadow: 0 8px 20px -8px color-mix(in srgb, var(--sd-accent) 75%, transparent);
}
.sd-btn-primary:hover{ background: var(--sd-accent-hover); transform: translateY(-2px); }
.sd-btn-ghost{
border-color: var(--sd-ink); color: var(--sd-ink) !important; background: transparent;
}
.sd-btn-ghost:hover{ border-color: var(--sd-accent); color: var(--sd-accent) !important; }
.sd-section{ margin: 2.8rem 0; }
.sd-section-title{
font-family: var(--sd-font-display) !important; font-weight: 600 !important;
font-size: 1.7rem !important; text-transform: none !important;
margin: 0 0 1.2rem !important; color: var(--sd-ink);
}

.sd-ask-loafy{
display: flex; align-items: center; gap: 1.4rem;
background: var(--sd-accent-soft);
border: 1px solid color-mix(in srgb, var(--sd-accent) 22%, transparent);
border-radius: var(--sd-radius-lg);
padding: 1.3rem 1.6rem; margin: 0 0 2.8rem;
}
.sd-loafy-mascot{
width: 92px; height: auto; flex: 0 0 auto;
filter: drop-shadow(0 6px 10px rgba(120, 60, 0, .22));
}
.sd-ask-loafy-title{
font-family: var(--sd-font-display) !important; font-weight: 600 !important;
font-size: 1.3rem !important; text-transform: none !important;
margin: 0 0 .35rem !important; color: var(--sd-ink);
}
.sd-ask-loafy-body p{ margin: 0 0 1rem; color: var(--sd-ink-soft); font-family: var(--sd-font-serif); }
@media (max-width: 768px){
.sd-ask-loafy{ flex-direction: column; text-align: center; gap: .8rem; padding: 1.3rem; }

.sd-ask-loafy .sd-btn{ width: 100%; max-width: 420px; margin-inline: auto; justify-content: center; }
}
.sd-chapter-grid{
display: grid; grid-template-columns: repeat(auto-fill, minmax(225px, 1fr)); gap: 1rem;
}
.sd-card{
display: flex; flex-direction: column; gap: .35rem;
background: var(--sd-surface); border: 1px solid var(--sd-hairline);
border-radius: var(--sd-radius); padding: 1.1rem 1.2rem;
text-decoration: none !important; color: var(--sd-ink);
transition: transform var(--sd-ease), box-shadow var(--sd-ease), border-color var(--sd-ease);
}
.sd-card:hover{ transform: translateY(-3px); box-shadow: var(--sd-shadow-md); border-color: var(--sd-accent); }
.sd-card-num{
font-family: var(--sd-font-ui); font-weight: 800; font-size: .76rem;
letter-spacing: .1em; color: var(--sd-accent);
}
.sd-card-title{ font-family: var(--sd-font-display); font-weight: 600; font-size: 1.12rem; }
.sd-card-desc{ font-family: var(--sd-font-serif); font-size: .92rem; color: var(--sd-ink-soft); line-height: 1.45; }
.sd-download-grid{ display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: .7rem; }
.sd-dl{
display: flex; align-items: center; gap: .7rem;
background: var(--sd-surface); border: 1px solid var(--sd-hairline);
border-radius: var(--sd-radius); padding: .8rem 1rem;
text-decoration: none !important; color: var(--sd-ink); font-family: var(--sd-font-ui);
transition: border-color var(--sd-ease), transform var(--sd-ease);
}
.sd-dl:hover{ border-color: var(--sd-accent); transform: translateY(-2px); }
.sd-dl-ico{ display: inline-flex; color: var(--sd-accent); flex: 0 0 auto; }
.sd-dl-ico svg{ width: 22px; height: 22px; }

.sd-dl-buy{ border-color: color-mix(in srgb, var(--sd-accent) 45%, transparent); background: var(--sd-accent-soft); }
.sd-dl-buy .sd-dl-label{ color: var(--sd-accent); }
.sd-dl-buy .sd-dl-sub{ color: var(--sd-ink-soft); }
.sd-dl-label{ font-weight: 700; font-size: .92rem; }
.sd-dl-sub{ display: block; font-weight: 400; font-size: .76rem; color: var(--sd-ink-soft); }


main.main-content .sd-hero-lead, main.main-content .sd-card-desc,
main.main-content .sd-ask-loafy-body p,
main.main-content .sd-eyebrow{ hyphens: manual; }
.sd-eyebrow .sd-nowrap{ white-space: nowrap; }

.sd-home .videoWrapper{
padding: 0; height: auto; aspect-ratio: 16 / 9;
border-radius: var(--sd-radius); overflow: hidden; box-shadow: var(--sd-shadow-sm);
}
.sd-watch-link{ margin: .8rem 0 0; font-family: var(--sd-font-ui); font-size: .85rem; }
.sd-watch-link a{
color: var(--sd-ink-soft); font-weight: 600;
text-decoration: underline; text-decoration-color: var(--sd-hairline);
text-underline-offset: 2px;
}
.sd-watch-link a:hover{ color: var(--sd-accent); text-decoration-color: currentColor; }

body:has(main.sd-home) #reading-progress-container{ display: none !important; }

.sd-footer{
margin-top: 2.2rem; padding-top: 1.1rem;
border-top: 1px solid var(--sd-hairline);
}
.sd-footer p{
margin: 0;
font-family: var(--sd-font-ui); font-size: .78rem; line-height: 1.8;
color: var(--sd-ink-soft); text-align: center; text-wrap: balance;
}
.sd-footer a{
color: var(--sd-ink-soft); text-decoration: underline;
text-decoration-color: var(--sd-hairline); text-underline-offset: 2px;
}
.sd-footer a:hover{ color: var(--sd-accent); text-decoration-color: currentColor; }

#reading-progress-bar{ background: linear-gradient(90deg, var(--sd-accent), var(--sd-accent-hover)) !important; }

@media (max-width: 768px){
main.main-content{
border: none; border-radius: 0; box-shadow: none;
padding: 1.5rem 1.25rem 2.25rem; max-width: 100%;
}
main.main-content.sd-home{ max-width: 100%; }
.sd-hero{ grid-template-columns: 1fr; gap: 1.3rem; }
.sd-hero-cover{ max-width: 240px; }

.sd-hero-actions{ flex-direction: column; align-items: stretch; max-width: 420px; }

.sd-hero-actions .sd-btn{ width: 100%; justify-content: center; white-space: normal; }
div.footnotes{ max-width: 100%; }

nav.TOC.menu{
position: sticky; top: 0; z-index: 50;
background: var(--sd-header-bg);
min-height: 56px; box-sizing: border-box;
padding: 6px 10px 6px 16px;
}
.logo{
color: #fff !important; flex: 1;
padding: 12px 0;
font-size: 1.05rem !important;
}

nav.TOC .menu-items{
position: fixed; z-index: 60;
top: 56px; left: 0; right: 0; bottom: 0;
width: auto;
background: var(--sd-bg);
border-top: 1px solid var(--sd-hairline);
overflow-y: auto;
overscroll-behavior: contain;
-webkit-overflow-scrolling: touch;
box-sizing: border-box;
padding: 12px 14px calc(28px + env(safe-area-inset-bottom, 0px));
}
#toggle-menu:checked ~ .menu-items{ animation: sd-menu-in .22s cubic-bezier(.05,.7,.1,1); }

body:has(#toggle-menu:checked){ overflow: hidden; }

nav.TOC .chapterToc > a{ padding: 13px 10px; border-radius: 9px; }
nav.TOC .sd-toc-head{ padding: 18px 10px 7px; }
nav.TOC .menu-group:has(a[href*="kofi"], a[href*="breadco.de/support"]) .chapterToc > a{ padding-block: calc(13px - 1.5px); }

nav.TOC .sd-search{ margin: 4px 0 12px; }
nav.TOC .sd-search-input{ font-size: 16px; padding: .7rem .7rem .7rem 2.1rem; }
.sd-search-kbd{ display: none; }

nav.TOC .dark-mode-toggle{ padding: 14px 10px; min-height: 48px; font-size: 13.5px; }

nav.TOC .hamb{ padding: 7px; margin-right: -7px; }

.sd-search-trigger{
display: inline-flex; align-items: center; justify-content: center;
width: 44px; height: 44px; margin-right: 2px;
background: transparent; border: 0; color: #fff; cursor: pointer; border-radius: 8px;
}
.sd-search-trigger svg{ width: 22px; height: 22px; }
.sd-search-trigger:hover{ background: rgba(255,255,255,.12); }

body:has(#toggle-menu:checked) #loafy-chat-button,
body:has(#toggle-menu:checked) #back-to-top,
body:has(#toggle-menu:checked) #reading-progress-container{ display: none !important; }


#back-to-top{ display: none !important; }

main.main-content table.tabular{ font-size: .85rem; }
main.main-content table.tabular td,
main.main-content table.tabular th{ padding: .45rem .55rem; }
main.main-content div.tabular,
main.main-content .table{ scrollbar-width: thin; overscroll-behavior-x: contain; }

main.main-content span.lofToc,
main.main-content span.lotToc{
display: block;
padding: .45rem 0 .45rem 2.6rem;
text-indent: -2.6rem;
line-height: 1.5;
}
main.main-content span.lofToc + br,
main.main-content span.lotToc + br{ display: none; }

main.main-content dl.description dd,
main.main-content dl.thebibliography dd{ margin-left: 1.4rem; }

nav.crosslinks-bottom a.prev,
nav.crosslinks-bottom a.next{ flex: 1 1 0; max-width: none; }
}
@keyframes sd-menu-in{
from{ opacity: 0; transform: translateY(-10px); }
}

@media (hover: none){
main.main-content .permalink{ opacity: .4; padding: .25em .4em; }
}

@media (prefers-reduced-motion: reduce){
*, *::before, *::after{
transition: none !important;
animation: none !important;
}
}
/* ==== snippet:back-to-top ==== */
#back-to-top {
position: fixed !important;
bottom: 96px !important;
right: 26px !important;
top: auto !important;
left: auto !important;
width: 44px;
height: 44px;
border-radius: 50%;
background: var(--sd-surface);
color: var(--sd-ink);
border: 1px solid var(--sd-hairline);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
box-shadow: var(--sd-shadow-md);
opacity: 0;
visibility: hidden;
transition: opacity 0.3s, visibility 0.3s, background 0.2s, color 0.2s, border-color 0.2s;
z-index: 9998;
}
#back-to-top.visible {
opacity: 1;
visibility: visible;
}
#back-to-top:hover {
background: var(--sd-accent);
color: var(--sd-on-accent);
border-color: var(--sd-accent);
}
@media (max-width: 600px) {
#back-to-top {
bottom: 84px !important;
right: 18px !important;
width: 42px;
height: 42px;
}
}
/* ==== snippet:dark-mode ==== */
.dark-mode-toggle{
display:flex; align-items:center; justify-content:center; gap:8px;
width:100%; box-sizing:border-box;
background:transparent; color:var(--sd-ink-soft);
font-family:var(--sd-font-ui); font-size:12.5px; font-weight:600;
padding:14px 10px 4px; margin:16px 0 0;
border:0; border-top:1px solid var(--sd-hairline); border-radius:0;
cursor:pointer; transition:color .2s;
}
.dark-mode-toggle:hover{ color:var(--sd-accent); }
.dark-mode-toggle svg{ width:16px; height:16px; flex-shrink:0; }
.dark-mode-toggle .sun-icon{ display:none; }
.dark-mode-toggle .moon-icon{ display:inline; }
[data-theme="dark"] .dark-mode-toggle .sun-icon{ display:inline; }
[data-theme="dark"] .dark-mode-toggle .moon-icon{ display:none; }
/* ==== snippet:image-lightbox ==== */
#lightbox-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.9);
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s, visibility 0.3s;
z-index: 10001;
cursor: zoom-out;
}
#lightbox-overlay.active {
opacity: 1;
visibility: visible;
}
#lightbox-close {
position: absolute;
top: 20px;
right: 20px;
background: none;
border: none;
color: white;
font-size: 40px;
cursor: pointer;
opacity: 0.7;
transition: opacity 0.2s;
line-height: 1;
padding: 10px;
}
#lightbox-close:hover {
opacity: 1;
}
#lightbox-image {
max-width: 94vw;
max-height: 88vh;
width: auto;
height: auto;
box-sizing: border-box;
object-fit: contain;
background: transparent;
border-radius: 6px;
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.5);
transform: scale(0.96);
transition: transform 0.3s;
cursor: default;
}

#lightbox-image.lb-diagram {
background: #fff;
padding: clamp(18px, 3.5vw, 48px);
}
#lightbox-overlay.active #lightbox-image {
transform: scale(1);
}
#lightbox-caption {
color: white;
margin-top: 16px;
font-size: 14px;
opacity: 0.8;
text-align: center;
max-width: 80%;
}

.content img,
article img,
.chapter img,
main img {
cursor: zoom-in;
transition: opacity 0.2s;
}
.content img:hover,
article img:hover,
.chapter img:hover,
main img:hover {
opacity: 0.9;
}
/* ==== snippet:lofi-button ==== */
#loafy-chat-button {
position: fixed !important;
bottom: 24px !important;
right: 24px !important;
top: auto !important;
left: auto !important;
background: linear-gradient(135deg, var(--sd-accent) 0%, #F59E0B 100%);
color: #fff;
font-family: var(--sd-font-ui);

padding: 12px 26px 12px 86px;
border-radius: 50px;
cursor: pointer;
display: inline-flex;
align-items: center;
box-shadow: 0 8px 20px -6px rgba(217, 112, 10, 0.7);
transition: transform 0.2s ease, box-shadow 0.2s ease;
z-index: 9999;
font-family: 'Open Sans', sans-serif;
font-weight: 700;
font-size: 16px;
text-decoration: none;
}
#loafy-chat-button:hover {
transform: translateY(-2px);
box-shadow: 0 12px 26px -8px rgba(217, 112, 10, 0.85);
color: #fff;
text-decoration: none;
}

.loafy-icon {
position: absolute;
left: 8px;
bottom: 0;
height: 60px;
width: auto;
object-fit: contain;
filter: drop-shadow(0 5px 5px rgba(120, 60, 0, 0.35));
transition: transform 0.2s ease;
pointer-events: none;
}
#loafy-chat-button:hover .loafy-icon {
transform: translateY(-3px) rotate(-4deg);
}
.loafy-text {
font-size: 1em;
white-space: nowrap;
}
@media (max-width: 600px) {
#loafy-chat-button {
bottom: 16px;
right: 16px;
padding: 0;
width: 66px;
height: 54px;
justify-content: center;
}
.loafy-text {
display: none;
}
.loafy-icon {
left: 50%;
transform: translateX(-50%);
bottom: 2px;
height: 56px;
}
}
/* ==== snippet:page-padding ==== */
.main-content,
main.main-content {
padding-bottom: 50px !important;
}

.book-content {
padding-bottom: 50px !important;
}
/* ==== snippet:perf-overrides ==== */
picture { display: contents; }

picture + figcaption { margin-top: 1em; }
/* ==== snippet:reading-position ==== */
.sd-restart{
display: block; margin-top: .5rem;
font-family: var(--sd-font-ui); font-size: .8rem; text-align: center;
color: var(--sd-ink-soft) !important;
text-decoration: underline; text-decoration-color: var(--sd-hairline);
text-underline-offset: 2px;
}
.sd-restart:hover{ color: var(--sd-accent) !important; text-decoration-color: currentColor; }
/* ==== snippet:reading-progress ==== */
#reading-progress-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 4px;
background: rgba(0, 0, 0, 0.1);
z-index: 10000;
}
#reading-progress-bar {
height: 100%;
width: 0%;
background: linear-gradient(90deg, var(--sd-accent), var(--sd-accent-hover));
transition: width 0.1s ease-out;
}

[data-theme="dark"] #reading-progress-container {
background: rgba(255, 255, 255, 0.1);
}
/* ==== snippet:support-box ==== */
is the single source of truth for both.
NOTE: the cover <img> below is intentionally bare — customize.rb's
optimize_images wraps it in <picture> with the .webp source at build time. -->
<style>
.support-box.sb-shelf {
display: grid;
grid-template-columns: 224px 1fr;
margin: 44px 0 24px;
padding: 0;
border: 1px solid var(--sd-hairline);
border-radius: var(--sd-radius-lg);
background: var(--sd-surface);
box-shadow: var(--sd-shadow-sm);
overflow: hidden;
}

.sb-shelf .sb-nook {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-end;
padding: 28px 24px 30px;
background:
radial-gradient(130% 100% at 50% 24%,
color-mix(in srgb, var(--sd-accent) 38%, transparent), transparent 72%),
var(--sd-header-bg);
}

.sb-shelf .sb-nook::after {
content: "";
position: absolute;
left: 0; right: 0; bottom: 0; height: 16px;
background: linear-gradient(color-mix(in srgb, #fff 13%, var(--sd-header-bg)),
color-mix(in srgb, #000 30%, var(--sd-header-bg)));
border-top: 1px solid color-mix(in srgb, #fff 26%, transparent);
}
.sb-shelf .sb-cover {
position: relative; z-index: 1;
display: block;
width: 142px;
margin-bottom: 14px;
transform: perspective(700px) rotateY(-10deg);
transition: transform var(--sd-ease);
}
.sb-shelf .sb-cover:hover { transform: perspective(700px) rotateY(-4deg) translateY(-3px); }
.sb-shelf .sb-cover img {
display: block; width: 100%; height: auto;
border-radius: 5px 2px 2px 5px;
box-shadow: 16px 18px 28px -8px rgba(0,0,0,.6), 0 2px 6px rgba(0,0,0,.45);
}

.sb-shelf .sb-cover::after {
content: "";
position: absolute;
top: 3px; bottom: 3px; right: -5px; width: 5px;
border-radius: 0 2px 2px 0;
background: repeating-linear-gradient(to bottom, #f6f0e3 0 2px, #d6cdb9 2px 3px);
}

.sb-shelf .sb-cover::before {
content: "";
position: absolute; inset: 0; z-index: 1;
border-radius: 5px 2px 2px 5px;
background: linear-gradient(100deg, rgba(255,255,255,.16) 4%, transparent 38%);
pointer-events: none;
}

.sb-shelf .sb-tag {
position: relative; z-index: 1;
margin-bottom: -10px;
padding: 3px 9px 2px;
border-radius: 2px;
background: var(--sd-bg);
color: var(--sd-ink-soft);
font: 600 10px/1.3 var(--sd-font-mono);
letter-spacing: .12em;
text-transform: uppercase;
box-shadow: 0 1px 3px rgba(0,0,0,.45);
}

.sb-shelf .sb-pitch { align-self: center; padding: 28px; }
.sb-shelf .sb-eyebrow {
margin: 0 0 7px;
font: 700 11px/1.2 var(--sd-font-ui);
letter-spacing: .15em;
text-transform: uppercase;
color: var(--sd-accent);
}
.sb-shelf .sb-title {
margin: 0 0 9px;
font-family: var(--sd-font-display);
font-size: 1.75rem; font-weight: 600; line-height: 1.12;
color: var(--sd-ink);
}
.sb-shelf .sb-title em { font-style: italic; color: var(--sd-accent); }
.sb-shelf .sb-copy {
margin: 0 0 18px;
max-width: 42ch;
font-family: var(--sd-font-serif);
font-size: 15px; line-height: 1.55;
color: var(--sd-ink-soft);
text-wrap: balance;
-webkit-hyphens: none; hyphens: none;
}
.sb-shelf .sb-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; }
.sb-shelf .sb-btn {
display: inline-flex; align-items: center; justify-content: center;
min-height: 46px;
padding: 11px 26px;
border-radius: 999px;
background: var(--sd-accent);
color: var(--sd-on-accent) !important;
font: 700 15px/1 var(--sd-font-ui);
text-decoration: none !important;
box-shadow: var(--sd-shadow-sm);
transition: background var(--sd-ease), transform var(--sd-ease);
}
.sb-shelf .sb-btn:hover { background: var(--sd-accent-hover); transform: translateY(-1px); }
.sb-shelf .sb-donate {
display: inline-flex; align-items: center;
min-height: 44px;
font: 600 14px/1 var(--sd-font-ui);
color: var(--sd-accent) !important;
text-decoration: underline;
text-underline-offset: 3px;
text-decoration-color: color-mix(in srgb, var(--sd-accent) 45%, transparent);
}
.sb-shelf .sb-donate:hover { text-decoration-color: var(--sd-accent); }

.sb-shelf .sb-signoff {
margin: 14px 0 0;
font-family: var(--sd-font-serif);
font-style: italic;
font-size: 13.5px;
color: var(--sd-ink-soft);
}

@media (max-width: 560px) {
.support-box.sb-shelf { grid-template-columns: 1fr; }
.sb-shelf .sb-nook { padding: 26px 20px 28px; }
.sb-shelf .sb-cover { width: 124px; }
.sb-shelf .sb-pitch { padding: 24px 20px 22px; text-align: center; }
.sb-shelf .sb-copy { margin-left: auto; margin-right: auto; }
.sb-shelf .sb-actions { flex-direction: column; gap: 4px; }
.sb-shelf .sb-btn { width: 100%; box-sizing: border-box; }
}