*{box-sizing:border-box}body{font-family:Avenir,Montserrat,Corbel,"URW Gothic",source-sans-pro,sans-serif;font-size:18px;font-weight:normal;line-height:1.2em;margin:0;padding:0}@media only screen and (min-width: 2000px){body{font-size:27px}}@media(prefers-color-scheme: dark){body{background:#000;color:#fff}}p{margin-block-start:1.4em;margin-block-end:1.4em}a{color:#3873cd}a:hover{color:#8aace1}a:visited{color:#ea1c00}code{border-radius:.15em;padding:.02em .2em}h1,h2,h3{letter-spacing:-0.04em;font-weight:600;line-height:1}h1,h2,h3,h4,h5,h6{margin:1.2em 0 .7em 0;font-family:Seravek,"Gill Sans Nova",Ubuntu,Calibri,"DejaVu Sans",source-sans-pro,sans-serif;clear:both}main{max-width:38em;margin:0 auto;padding:1em}main img,main figure,main video{max-width:100%}blockquote{position:relative;z-index:0;margin:0;padding-left:1em;font-style:italic;border-left:4px solid #3873cd}pre{line-height:1.2em;white-space:pre-wrap}sup,sub{vertical-align:baseline;position:relative;top:-0.4em}sub{top:.4em}hr{width:100%;border-radius:1px;border:1px solid #b2c9ec}@media(prefers-color-scheme: dark){hr{border-color:#162f56}}label{display:block;margin:.3em 0;font-weight:bold}input,textarea{width:100%;padding:1.3em;margin-bottom:.5em;font-size:18px;border:1px solid #d3d3d3;border-radius:.25em}button{padding:.75em 1.5em;background:#3873cd;color:#fff;font-size:1em;border:none;border-radius:.25em}mark{background:#b2c9ec}figure{margin:0;background:#eff4fb}@media(prefers-color-scheme: dark){figure{background:#0b192e}}@media only screen and (min-width: 769px){figure.right{max-width:50%;float:right;margin-left:1em}figure.left{max-width:50%;float:left;margin-right:1em}figure.dual,figure.two-up{display:grid;grid-template-columns:auto auto}figure.dual figcaption,figure.two-up figcaption{grid-column:1/-1}figure.thirds,figure.three-up{display:grid;grid-template-columns:auto auto auto}figure.thirds figcaption,figure.three-up figcaption{grid-column:1/-1}figure img{display:block;margin:0 auto}figure.iphone img{max-height:50vh}}figure figcaption p:first-child{margin-top:0}figure figcaption p:last-child{margin-bottom:0}figure figcaption:not(:empty){padding:1em;background:rgba(211,211,211,.2);border-radius:.2em}.sidebar,figure.sidebar{position:relative;float:right;clear:right;width:50%;margin-right:-60%;margin-top:0;margin-bottom:1.96rem}.main_navigation a,a.blog__header{display:block;color:#3873cd;text-decoration:none}.main_navigation a:visited,a.blog__header:visited{color:#3873cd}nav.main_navigation{padding:1em}@media only screen and (max-width: 768px){nav.main_navigation{padding:0 1em}}@media only screen and (max-width: 768px){nav.main_navigation{display:flex;align-content:center}}@media only screen and (min-width: 769px){nav.main_navigation{display:grid;grid-template-columns:4em 34em;justify-content:center}}nav.main_navigation .avatar{display:flex;max-height:3.5em;margin-right:1em;align-items:center}@media only screen and (min-width: 769px){nav.main_navigation .avatar{margin-left:1em}}nav.main_navigation .avatar img{border-radius:50%;width:2em;height:2em;box-shadow:inset 0px 0px 10px #000}nav.main_navigation ul{margin:0;padding-left:0;list-style:none}nav.main_navigation ul a{width:100%;padding:1em}@media only screen and (max-width: 768px){nav.main_navigation ul a{padding:1em 1em 1em 3em}}nav.main_navigation ul a:hover{color:#000;text-decoration:underline;text-decoration-color:#ff9384;text-decoration-thickness:4px}@media(prefers-color-scheme: dark){nav.main_navigation ul a:hover{color:#fff}}nav.main_navigation ul a svg{width:1.2em;height:1.2em;vertical-align:text-top}@media(prefers-color-scheme: dark){nav.main_navigation ul a svg{fill:currentcolor}}@media only screen and (max-width: 768px){nav.main_navigation ul{display:none}}@media only screen and (min-width: 769px){nav.main_navigation ul a{width:auto}nav.main_navigation ul li{display:inline-block}}nav.main_navigation details summary{padding:1em;list-style:none}@media only screen and (min-width: 769px){nav.main_navigation details{display:none}}nav.main_navigation details[open]~ul{display:block}.navigation_toggle::-webkit-details-marker{display:none}footer{clear:both;padding:2em 0;text-align:center}.blog__hero{margin-top:2em}.blog__header{margin-bottom:2em}.blog__title{margin-top:1em;margin-bottom:0em;color:#000;font-weight:700;text-wrap:balance;text-decoration:underline;text-decoration-color:#b2c9ec;text-decoration-thickness:4px}@media(prefers-color-scheme: dark){.blog__title{color:#fff}}@media only screen and (min-width: 769px){.blog__title{font-size:2.7em}}.blog__date{font-size:.8em;font-style:italic}@media(prefers-color-scheme: dark){.blog__date{color:#b2c9ec}}.article__series{padding:.25em 1em;background:#eff4fb;border-radius:.25em;border:2px dashed #b2c9ec}@media(prefers-color-scheme: dark){.article__series{background:#0b192e}}.article__series:after{content:"";display:block;clear:both}.article__series .series__icon{float:left;padding-right:1em;width:5em}.article__list{padding:0;list-style:none}.article__list .blog__header{margin-bottom:0}.article__list>li{margin-bottom:1em}.blog__tags{display:grid;margin-top:.5em;grid-template-columns:1.75em auto;align-content:center}article .blog__tags{margin-top:1em}.blog__tags span{margin-top:.25em;text-align:center}.blog__tags ul{display:inline-block;margin:0;padding:0;list-style:none}.blog__tags ul li{display:inline-block;background:rgba(211,211,211,.2);border-radius:.2em}.blog__tags ul li a{text-decoration:none}.blog__tags li,.blog__tags>a{padding:.2em .5em;margin-block-end:.25em}.blog__tags>a{padding-left:0}@media(prefers-color-scheme: dark){.blog__tags a{color:#b2c9ec}}span.strike{text-decoration:line-through}.hidden{display:none}[v-cloak]{display:none}@media only screen and (max-width: 768px){.break{display:block}}.blog__changes{margin-top:2em;font-family:monospace}.blog__changes p{margin-block-start:.25em;margin-block-end:.25em}.blog__changes ul{margin:1em;padding-left:0;list-style:none}.blog__changes li{margin:.5em 0em 2em 0em}.blog__changes__date{font-size:.75em;font-style:italic}.blog__changes__title{margin-top:0;margin-bottom:.35em;font-weight:bold}.highlight .hll,code .hll{background-color:#dfe1e8}.highlight,code{background:#eff1f5;color:#2b303b}.highlight .c,code .c{color:#a7adba}.highlight .err,code .err{color:#bf616a}.highlight .k,code .k{color:#b48ead}.highlight .l,code .l{color:#d08770}.highlight .n,code .n{color:#2b303b}.highlight .o,code .o{color:#96b5b4}.highlight .p,code .p{color:#2b303b}.highlight .cm,code .cm{color:#a7adba}.highlight .cp,code .cp{color:#a7adba}.highlight .c1,code .c1{color:#a7adba}.highlight .cs,code .cs{color:#a7adba}.highlight .gd,code .gd{color:#bf616a}.highlight .ge,code .ge{font-style:italic}.highlight .gh,code .gh{color:#2b303b;font-weight:bold}.highlight .gi,code .gi{color:#a3be8c}.highlight .gp,code .gp{color:#a7adba;font-weight:bold}.highlight .gs,code .gs{font-weight:bold}.highlight .gu,code .gu{color:#96b5b4;font-weight:bold}.highlight .kc,code .kc{color:#b48ead}.highlight .kd,code .kd{color:#b48ead}.highlight .kn,code .kn{color:#96b5b4}.highlight .kp,code .kp{color:#b48ead}.highlight .kr,code .kr{color:#b48ead}.highlight .kt,code .kt{color:#ebcb8b}.highlight .ld,code .ld{color:#a3be8c}.highlight .m,code .m{color:#d08770}.highlight .s,code .s{color:#a3be8c}.highlight .na,code .na{color:#8fa1b3}.highlight .nb,code .nb{color:#2b303b}.highlight .nc,code .nc{color:#ebcb8b}.highlight .no,code .no{color:#bf616a}.highlight .nd,code .nd{color:#96b5b4}.highlight .ni,code .ni{color:#2b303b}.highlight .ne,code .ne{color:#bf616a}.highlight .nf,code .nf{color:#8fa1b3}.highlight .nl,code .nl{color:#2b303b}.highlight .nn,code .nn{color:#ebcb8b}.highlight .nx,code .nx{color:#8fa1b3}.highlight .py,code .py{color:#2b303b}.highlight .nt,code .nt{color:#96b5b4}.highlight .nv,code .nv{color:#bf616a}.highlight .ow,code .ow{color:#96b5b4}.highlight .w,code .w{color:#2b303b}.highlight .mf,code .mf{color:#d08770}.highlight .mh,code .mh{color:#d08770}.highlight .mi,code .mi{color:#d08770}.highlight .mo,code .mo{color:#d08770}.highlight .sb,code .sb{color:#a3be8c}.highlight .sc,code .sc{color:#2b303b}.highlight .sd,code .sd{color:#a7adba}.highlight .s2,code .s2{color:#a3be8c}.highlight .se,code .se{color:#d08770}.highlight .sh,code .sh{color:#a3be8c}.highlight .si,code .si{color:#d08770}.highlight .sx,code .sx{color:#a3be8c}.highlight .sr,code .sr{color:#a3be8c}.highlight .s1,code .s1{color:#a3be8c}.highlight .ss,code .ss{color:#a3be8c}.highlight .bp,code .bp{color:#2b303b}.highlight .vc,code .vc{color:#bf616a}.highlight .vg,code .vg{color:#bf616a}.highlight .vi,code .vi{color:#bf616a}.highlight .il,code .il{color:#d08770}@media(prefers-color-scheme: dark){/*! Base16 Ocean Dark by Chris Kempson; https://github.com/idleberg */.highlight,code,.highlight pre,code pre,.highlight table,code table{background:#2b303b;color:#eff1f5}.highlight .hll,code .hll{background-color:#4f5b66}.highlight .c,code .c{color:#65737e}.highlight .err,code .err{color:#bf616a}.highlight .k,code .k{color:#b48ead}.highlight .l,code .l{color:#d08770}.highlight .n,code .n,.highlight .h,code .h{color:#eff1f5}.highlight .o,code .o{color:#96b5b4}.highlight .p,code .p{color:#eff1f5}.highlight .cm,code .cm{color:#65737e}.highlight .cp,code .cp{color:#65737e}.highlight .c1,code .c1{color:#65737e}.highlight .cs,code .cs{color:#65737e}.highlight .gd,code .gd{color:#bf616a}.highlight .ge,code .ge{font-style:italic}.highlight .gh,code .gh{color:#eff1f5;font-weight:bold}.highlight .gi,code .gi{color:#a3be8c}.highlight .gp,code .gp{color:#65737e;font-weight:bold}.highlight .gs,code .gs{font-weight:bold}.highlight .gu,code .gu{color:#96b5b4;font-weight:bold}.highlight .kc,code .kc{color:#b48ead}.highlight .kd,code .kd{color:#b48ead}.highlight .kn,code .kn{color:#96b5b4}.highlight .kp,code .kp{color:#b48ead}.highlight .kr,code .kr{color:#b48ead}.highlight .kt,code .kt{color:#ebcb8b}.highlight .ld,code .ld{color:#a3be8c}.highlight .m,code .m{color:#d08770}.highlight .s,code .s{color:#a3be8c}.highlight .na,code .na{color:#8fa1b3}.highlight .nb,code .nb{color:#eff1f5}.highlight .nc,code .nc{color:#ebcb8b}.highlight .no,code .no{color:#bf616a}.highlight .nd,code .nd{color:#96b5b4}.highlight .ni,code .ni{color:#eff1f5}.highlight .ne,code .ne{color:#bf616a}.highlight .nf,code .nf{color:#8fa1b3}.highlight .nl,code .nl{color:#eff1f5}.highlight .nn,code .nn{color:#ebcb8b}.highlight .nx,code .nx{color:#8fa1b3}.highlight .py,code .py{color:#eff1f5}.highlight .nt,code .nt{color:#96b5b4}.highlight .nv,code .nv{color:#bf616a}.highlight .ow,code .ow{color:#96b5b4}.highlight .w,code .w{color:#eff1f5}.highlight .mf,code .mf{color:#d08770}.highlight .mh,code .mh{color:#d08770}.highlight .mi,code .mi{color:#d08770}.highlight .mo,code .mo{color:#d08770}.highlight .sb,code .sb{color:#a3be8c}.highlight .sc,code .sc{color:#eff1f5}.highlight .sd,code .sd{color:#65737e}.highlight .s2,code .s2{color:#a3be8c}.highlight .se,code .se{color:#d08770}.highlight .sh,code .sh{color:#a3be8c}.highlight .si,code .si{color:#d08770}.highlight .sx,code .sx{color:#a3be8c}.highlight .sr,code .sr{color:#a3be8c}.highlight .s1,code .s1{color:#a3be8c}.highlight .ss,code .ss{color:#a3be8c}.highlight .bp,code .bp{color:#eff1f5}.highlight .vc,code .vc{color:#bf616a}.highlight .vg,code .vg{color:#bf616a}.highlight .vi,code .vi{color:#bf616a}.highlight .il,code .il{color:#d08770}}.highlight,code{border-radius:.3em;font-size:.95em}pre code{display:block;padding:2em;font-size:.7em;overflow-wrap:break-word;white-space:pre-wrap}label{display:block}input:error,input:invalid{border:1px solid #ea1c00}[type=submit]:disabled,button:disabled{opacity:.5;cursor:not-allowed}.blog__webmention{margin:1em 0}.blog__webmention img{width:1em;height:1em;padding:0;margin-right:.25em;border-radius:50%;object-fit:contain}.blog__webmention p{margin:1.2em 0em 0em 0em}.webmention__author{vertical-align:baseline}.webmention__comment{position:relative;z-index:0;background:#eff4fb;padding:1em;margin-bottom:1em;border-radius:.25em}@media(prefers-color-scheme: dark){.webmention__comment{background:#0b192e}}.webmention__comment:after{width:2em;height:2em;content:"";background:#eff4fb;transform:rotate(45deg);position:absolute;bottom:-0.5em;left:1em;z-index:-1}@media(prefers-color-scheme: dark){.webmention__comment:after{background:#0b192e}}@media print{.main_navigation,.webmentions,.blog__changes,.no-print{display:none}body,h1,h2,h3,h4,.blog__title{color:#000}}.hide-from-visual{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.youtube-container{position:relative;aspect-ratio:16/9;padding-top:2em;overflow:hidden}.youtube-container iframe,.youtube-container object,.youtube-container embed{width:100%;height:100%;position:absolute;top:0;left:0}.primary{font-size:2em}.is-reply:before{content:"↺";display:inline-block;margin-right:.25em;font-size:1.4em;font-weight:400;font-family:monospace;color:#b2c9ec}.admonition{padding:1em;margin-top:2em;background:rgba(56,115,205,.1);border-left:1em solid #3873cd;border-radius:.25em}.admonition>p{margin:0}@media only screen and (min-width: 769px){.admonition .tldr,.admonition .summary{display:grid;grid-template-columns:auto auto;grid-column-gap:1em;align-items:center}}.admonition.chat_in,.admonition.chat_out{width:max-content;max-width:100%;padding:1em 1.5em;border-left:none;border-radius:2em;background:#3873cd}.admonition.chat_in .admonition__title,.admonition.chat_out .admonition__title{font-size:1em;font-style:italic}.admonition.chat_out{margin-left:auto;color:#fff;border-bottom-right-radius:.15em}.admonition.chat_in{background:#d3d3d3;color:#000;border-bottom-left-radius:.15em}.admonition:before,.admonition .admonition__title{font-size:2em;font-weight:800}.admonition.tldr:before{content:"tl;dr:"}.admonition.summary:before{content:"summary:"}.chat_in+.chat_in,.chat_out+.chat_out{margin-top:.25em;border-radius:.25em 2em 2em .25em}@media(prefers-color-scheme: dark){#search .pagefind-ui__drawer,#search .pagefind-ui__message{color:#fff !important;--pagefind-ui-text: #fff !important}}