@font-face{font-family:"PT Serif";font-style:normal;font-weight:400;font-display:swap;src:local(""),url(/wp-content/fonts/PTSerif-Regular.woff2) format("woff2")}@font-face{font-family:"PT Serif";font-style:italic;font-weight:400;font-display:swap;src:local(""),url(/wp-content/fonts/PTSerif-Italic.woff2) format("woff2")}@font-face{font-family:"PT Serif";font-style:normal;font-weight:700;font-display:swap;src:local(""),url(/wp-content/fonts/PTSerif-Bold.woff2) format("woff2")}@font-face{font-family:"PT Serif";font-style:italic;font-weight:700;font-display:swap;src:local(""),url(/wp-content/fonts/PTSerif-BoldItalic.woff2) format("woff2")}@font-face{font-family:"Source Code Pro";font-style:normal;font-weight:400;font-display:swap;src:local(""),url(/wp-content/fonts/source-code-pro-v18-latin-regular.woff2) format("woff2")}:root{--og-padding:2rem;--og-padding-minus:-2rem}body{font-family:-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;font-size:1rem;margin:0 var(--og-padding);background-color:#fff;color:#454545;box-sizing:border-box}@media (max-width:800px){:root{font-size:12px;--og-padding:1rem;--og-padding-minus:-1rem}}img{max-width:100%}.h1,h1{font-family:"PT Serif",serif;font-size:4rem;position:relative;display:block;max-width:1000px;line-height:1.5;font-weight:400}h2,h3{font-family:"PT Serif",serif;margin-top:3em;position:relative;font-weight:400}.h2,h2{font-size:2rem}h3{font-size:1.8rem}a,a:visited{color:#dc143c;text-decoration:none;border-bottom:1px dashed #dc143c}a:focus,a:hover{border-bottom:2px solid #dc143c}.aspect{position:relative;width:100%;height:0;margin:1em 0;overflow:hidden}.aspect.ratio-16-to-9{padding-bottom:56.25%}.aspect.ratio-4-to-3{padding-bottom:75%}.aspect>*{position:absolute;top:0;left:0;width:100%;height:100%}.connect{margin-top:4rem;font-family:var(--main-font)}.blue{font-size:1.2rem;font-family:var(--main-font)}.wrapper{position:relative;margin:0 auto 3rem;max-width:75ch;width:100%}.wrapper-wide{position:relative;margin:0 auto 3rem;max-width:1200px;width:100%}.website{font-size:12rem;font-family:PT-Serif,serif}.main-frame{margin-top:3rem}.me{filter:grayscale(100%);border-radius:50%;box-shadow:0 0 20px rgba(0,0,0,.1)}.masthead{display:flex;justify-content:space-between;align-items:center;margin:3rem 0}.content-wrapper{margin:6rem 0;padding-top:6rem;display:grid;grid-gap:3rem;grid-template-columns:repeat(auto-fill,minmax(410px,1fr));border-top:1px dashed #aaa}.content-wrapper h2{margin-top:0}@media (max-width:1150px){.website{font-size:10rem}.masthead h1{font-size:3rem}}@media (max-width:1000px){.website{font-size:8rem}.masthead h1{font-size:2.5rem}}@media (max-width:1000px){.website{font-size:6rem}.masthead h1{font-size:2rem}}@media (max-width:900px){.me{width:300px}.content-wrapper{display:block}}@media (max-width:700px){.me{width:200px}}@media (max-width:600px){.me{display:none}}.breadcrumbs{display:block}.breadcrumbs a{color:#888484;border:none;font-weight:500;text-decoration:none}.breadcrumbs a:hover{color:#dc143c;background-color:transparent}.breadcrumbs a:after{content:" > ";margin:0 .2rem;color:#a09999}.meta{display:flex;justify-content:space-between;color:#878787;font-family:"PT Serif",serif;position:relative}.meta::after{content:"";display:block;width:100%;padding:0 var(--og-padding);margin:0 var(--og-padding-minus);height:1px;background-color:#aaa;position:absolute}.meta-item{background-color:#fff}.article-meta-highlight{display:block;font-size:1rem}.article-list-category-link,.article-list-category-link:visited{color:#dc143c}.nav{max-width:1200px;position:relative;width:100%;margin:0 auto;padding:2rem 0;display:flex;justify-content:space-between}.nav a{text-decoration:none}a.logo{color:#454545;font-weight:600;border:none}a.logo:hover,a.logo:visited{background-color:transparent}.navbar{display:flex;margin:0;padding:0;list-style:none}.navbar-link,.navbar-link:visited{padding:0 0 .5rem;margin:0 1rem;display:block;color:#a3a3a3;border-bottom:4px solid transparent}.navbar-link.active,.navbar-link:hover{background-color:transparent;color:#454545;border-bottom:4px solid #454545}.navbar-link.active{border-color:#dc143c}.navbar-button{display:none}.footer-area{max-width:1200px;width:100%;font-size:.8rem;margin:0 auto 2rem;position:relative;padding-top:2rem;border-top:1px dashed #aaa}.footer-link{margin-right:2ch}.meta{display:flex;justify-content:space-between;color:#878787;font-family:"PT Serif",serif;position:relative}.meta::after{content:"";display:block;width:100%;padding:0 var(--og-padding);margin:0 var(--og-padding-minus);height:1px;background-color:#aaa;position:absolute}.meta-item{background-color:#fff}.article-meta-highlight{display:block;font-size:1rem}.article-list-category-link,.article-list-category-link:visited{color:#dc143c}.toc-list-item.active{font-weight:700}.book-nav{display:flex;justify-content:flex-end;margin-top:3rem;font-size:1.1rem}.img-holder img{box-shadow:0 0 15px 0 rgba(0,0,0,.3)}.img-holder img.no-frame{box-shadow:none}.img-holder{margin-top:3rem;margin-bottom:3rem}.img-holder figcaption{font-style:italic}table{border-collapse:collapse;text-align:left;width:auto}td,th{padding:.75rem 1.2rem}th{font-weight:700}thead th{border-bottom:1px solid #000}.pdf{aspect-ratio:16/9;width:calc(100% - 3.5rem);max-width:1000px;position:relative}.pdf-frame{display:flex;justify-content:space-between;align-items:center;max-width:1200px;width:100%;position:relative;margin:0 auto;border-bottom:1px solid #aaa}.pdf-title{font-weight:700}.pdf-canvas{position:relative;text-align:center;width:100%;overflow:hidden}.pre-load{position:absolute;left:0;top:0;bottom:0;right:0;display:flex;justify-content:center;align-items:center;gap:2rem;flex-flow:column}.pdf-arrow{color:#454545;background:0 0;appearance:none;border:none;font-size:1rem;display:block;width:1.5rem;text-align:center}@media (min-width:1200px){.pdf-arrow{font-size:2rem;width:3rem}}.pdf-arrow[disabled]{opacity:0}#loadpdf[disabled]{filter:grayscale(1)}.page-counter{position:relative;margin:0 auto;width:120px;text-align:center;padding:.5rem;margin-bottom:-2rem;z-index:3}.page-counter[hidden]{opacity:0}.page-counter-wrapper{border:1px solid #ccccf3;background-color:#fef9f9;border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top:0;display:inline;padding:.5rem}:not(pre)>code{font-size:1.2rem;font-weight:700;color:#333}h2>code,h3>code{font-size:inherit;font-family:"PT Serif",serif;font-weight:400}h2>code::after,h2>code::before,h3>code::after,h3>code::before{content:"`"}.direct-link{opacity:0;position:absolute;left:-1.2em}.direct-link:focus,:hover>.direct-link{opacity:1;border-bottom:none}.e-content{max-width:70ch;width:100%;font-family:"PT Serif",-apple-system;color:#555;font-size:1.3rem;line-height:1.8em;grid-area:content}.e-content ol,.e-content ul{padding-left:1.2em}.e-content li{margin-bottom:.7em}.e-content img[src$=svg]{margin:2em auto;position:relative;display:block}.e-content blockquote{border-left:3px solid #ddd;padding-left:1em;margin:1.5em 0;font-style:italic}.e-content blockquote p{padding:.4rem}ul.article-list{padding:0;margin:0;list-style-type:none}.article-list-item{padding:0;margin:2rem 0;line-height:1.9}.article-meta-highlight{display:block;font-size:1rem}.article-list-category-link,.article-list-category-link:visited{color:#dc143c}.article-list-link{font-size:1.3rem;font-family:var(--main-font)}.list-year:first-child{margin-top:0}.talk-list{list-style-type:none}.talk-list-item{position:relative}.talk-list-item:before{content:"";width:10px;height:13px;border-bottom:1px dotted #999;border-left:1px dotted #999;position:absolute;left:-.9rem;top:.24rem}.book-wrapper{font-family:"PT Serif",-apple-system;color:#555;font-size:1.3rem;line-height:1.8em}.book-wrapper .teaser-item{display:grid;grid-gap:2rem;grid-template-columns:1fr 250px;align-items:center;margin-bottom:2rem}@media (max-width:800px){.book-wrapper .teaser-item{grid-template-columns:1fr}.book-cover{max-width:300px;margin:0 auto}}.book-wrapper .teaser-item h2{margin-top:0}.book-cover{box-shadow:0 0 10px rgba(0,0,0,.1)}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}code{font-family:"Source Code Pro";font-size:1.1rem}code[class*=language-],pre[class*=language-]{background:#272b33;color:#aab1bf;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:2;-o-tab-size:2;tab-size:2;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{background:#3e4450;color:inherit;text-shadow:none}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection{background:#3e4450;color:inherit;text-shadow:none}:not(pre)>code[class*=language-]{padding:.2em .3em;border-radius:.3em;white-space:normal}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}.token.cdata,.token.comment,.token.prolog{color:#5b6270}.token.doctype,.token.entity,.token.punctuation{color:#aab1bf}.token.atrule,.token.attr-name,.token.boolean,.token.class-name,.token.constant,.token.number{color:#d19965}.token.keyword{color:#c578dd}.token.deleted,.token.important,.token.property,.token.symbol,.token.tag{color:#df6b75}.token.attr-value,.token.attr-value>.token.punctuation,.token.builtin,.token.char,.token.inserted,.token.regex,.token.selector,.token.string{color:#97c279}.token.function,.token.operator,.token.variable{color:#61afef}.token.url{color:#56b5c2}.token.attr-value>.token.punctuation.attr-equals,.token.special-attr>.token.attr-value>.token.value.css{color:#aab1bf}.language-css .token.selector{color:#df6b75}.language-css .token.property{color:#aab1bf}.language-css .token.function,.language-css .token.url>.token.function{color:#56b5c2}.language-css .token.url>.token.string.url{color:#97c279}.language-css .token.atrule .token.rule,.language-css .token.important{color:#c578dd}.language-javascript .token.operator{color:#c578dd}.language-javascript .token.template-string>.token.interpolation>.token.interpolation-punctuation.punctuation{color:#be5046}.language-json .token.operator{color:#aab1bf}.language-json .token.null.keyword{color:#d19965}.language-markdown .token.url,.language-markdown .token.url-reference.url>.token.string,.language-markdown .token.url>.token.operator{color:#aab1bf}.language-markdown .token.url>.token.content{color:#61afef}.language-markdown .token.url-reference.url,.language-markdown .token.url>.token.url{color:#56b5c2}.language-markdown .token.blockquote.punctuation,.language-markdown .token.hr.punctuation{color:#5b6270;font-style:italic}.language-markdown .token.code-snippet{color:#97c279}.language-markdown .token.bold .token.content{color:#d19965}.language-markdown .token.italic .token.content{color:#c578dd}.language-markdown .token.list.punctuation,.language-markdown .token.strike .token.content,.language-markdown .token.strike .token.punctuation,.language-markdown .token.title.important>.token.punctuation{color:#df6b75}.token.bold{font-weight:700}.token.comment,.token.italic{font-style:italic}.token.entity{cursor:help}.token.namespace{opacity:.8}.token.token.cr:before,.token.token.lf:before,.token.token.space:before,.token.token.tab:not(:empty):before{color:hsla(220,14%,71%,.15);text-shadow:none}.line-highlight.line-highlight{background:hsla(220,100%,80%,.04)}.line-highlight.line-highlight:before,.line-highlight.line-highlight[data-end]:after{background:#393f4a;color:#aab1bf;padding:.1em .6em;border-radius:.3em;box-shadow:0 2px 0 0 rgba(0,0,0,.2)}pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows>span:hover:before{background-color:hsla(220,100%,80%,.04)}.command-line .command-line-prompt,.line-numbers.line-numbers .line-numbers-rows{border-right-color:hsla(220,14%,71%,.15)}.command-line .command-line-prompt>span:before,.line-numbers .line-numbers-rows>span:before{color:#626d82}pre.diff-highlight>code .token.token.deleted:not(.prefix),pre>code.diff-highlight .token.token.deleted:not(.prefix){background-color:hsla(353,100%,66%,.15)}pre.diff-highlight>code .token.token.deleted:not(.prefix) ::-moz-selection,pre.diff-highlight>code .token.token.deleted:not(.prefix)::-moz-selection,pre>code.diff-highlight .token.token.deleted:not(.prefix) ::-moz-selection,pre>code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection{background-color:hsla(353,95%,66%,.25)}pre.diff-highlight>code .token.token.deleted:not(.prefix) ::selection,pre.diff-highlight>code .token.token.deleted:not(.prefix)::selection,pre>code.diff-highlight .token.token.deleted:not(.prefix) ::selection,pre>code.diff-highlight .token.token.deleted:not(.prefix)::selection{background-color:hsla(353,95%,66%,.25)}pre.diff-highlight>code .token.token.inserted:not(.prefix),pre>code.diff-highlight .token.token.inserted:not(.prefix){background-color:hsla(137,100%,55%,.15)}pre.diff-highlight>code .token.token.inserted:not(.prefix) ::-moz-selection,pre.diff-highlight>code .token.token.inserted:not(.prefix)::-moz-selection,pre>code.diff-highlight .token.token.inserted:not(.prefix) ::-moz-selection,pre>code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection{background-color:hsla(135,73%,55%,.25)}pre.diff-highlight>code .token.token.inserted:not(.prefix) ::selection,pre.diff-highlight>code .token.token.inserted:not(.prefix)::selection,pre>code.diff-highlight .token.token.inserted:not(.prefix) ::selection,pre>code.diff-highlight .token.token.inserted:not(.prefix)::selection{background-color:hsla(135,73%,55%,.25)}pre[class*=language-]{position:relative;margin:var(--og-padding) var(--og-padding-minus);overflow:auto;width:100%;padding:var(--og-padding);border-radius:.5rem}@media (max-width:800px){pre[class*=language-]{margin:1rem -1rem;padding:1rem}}.token.comment{color:#3d9456}