@font-face{font-family:noto sans;src:url(/fonts/noto-sans-latin.woff2)format('woff2');font-weight:400 600;font-style:normal;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:noto sans;src:url(/fonts/noto-sans-italic-latin.woff2)format('woff2');font-weight:400;font-style:italic;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:noto sans mono;src:url(/fonts/noto-sans-mono-latin.woff2)format('woff2');font-weight:400 600;font-style:normal;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:noto sans symbols;src:url(/fonts/noto-sans-symbols-arrows.woff2)format('woff2');font-weight:400 600;font-style:normal;unicode-range:U+2190,U+2192}*,*::before,*::after{box-sizing:border-box}:root{--mono:"Noto Sans Mono", "Noto Sans Symbols", ui-monospace,
            SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono",
            monospace;--sans:"Noto Sans", "Noto Sans Symbols", verdana, sans-serif;--marker-indent:1.55rem;interpolate-size:allow-keywords}html,body{margin:0;padding:0;font-family:var(--sans);font-size:1rem;background-color:var(--g);color:var(--mid)}a{color:var(--mid)}a:hover{color:var(--i)}#page{display:grid;grid-template-columns:clamp(12rem,20vw,17rem)minmax(0,1fr);grid-template-rows:auto 1fr auto;row-gap:1.75rem;min-height:100vh}#leftcol{grid-column:1;grid-row:1/3;display:grid;grid-template-rows:subgrid;min-width:0;background:var(--rail);border-right:1px solid var(--rl);padding:2rem 1.4rem 2rem 1.6rem;position:relative}#leftcol::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:var(--brand)}#maincol{grid-column:2;grid-row:2;min-width:0;--measure:38rem;--gutter:2.5rem;max-width:calc(var(--measure) + var(--gutter) * 2);padding:0 var(--gutter)var(--gutter);line-height:1.7;color:var(--mid)}.copyright{grid-column:1/-1;grid-row:3;color:var(--soft);font-size:.75rem;text-align:center;padding:1em 0}.copyright p{margin:0}.copyright a{color:var(--soft)}:root{--spectrum:linear-gradient(90deg,
        #D50000 0 14.2857%,  #E65100 0 28.5714%, #F9A825 0 42.8571%,
        #43A047 0 57.1429%,  #00ACC1 0 71.4286%, #1E88E5 0 85.7143%,
        #8E24AA 0)}#header{container-type:inline-size;grid-row:1}#header .wordmark{margin:0;font-family:var(--mono);font-size:clamp(.9rem,10.25cqw,1.9rem);font-weight:600;line-height:1.2}#header .wordmark a{display:inline-block;color:var(--i);text-decoration:none}#header .wordmark a::after{content:"";display:block;height:max(3px,.15em);margin-top:.28em;background:var(--spectrum)}#header .shebang{color:var(--soft);font-weight:400}#header .byline{margin:.45rem 0 0;font-size:.8rem;line-height:1.3;color:var(--soft)}#menu{grid-row:2;font-size:.9rem}#menu ul{margin:0;padding:0 0 .6rem;list-style:none;line-height:1.5}#menu .tagcloud{display:flex;flex-wrap:wrap;gap:.3rem;margin:0;padding:.15rem 0 .1rem}.tagcloud-all{margin:.55rem 0 .7rem;font-size:.8rem}#menu .tagcloud-all a{display:inline;color:var(--soft);border-left:0;padding:0}#menu .tagcloud-all a:hover{color:var(--i)}#menu a{color:var(--mid);display:block;text-decoration:none;border-left:2px solid transparent;padding:.12rem 0 .12rem .5em}#menu a:hover{color:var(--i);border-left-color:var(--brand)}.menusection{border-bottom:1px solid var(--rl)}.menusection:last-child{border-bottom:0}details.menusection>summary{display:flex;align-items:center;justify-content:space-between;gap:.5rem;list-style:none;cursor:pointer;padding:.45rem 0}h2.menuheader{margin:0;padding:0;font-family:var(--mono);font-size:.9rem;font-weight:500;color:var(--i)}.menusection[open]>summary h2.menuheader{font-weight:600}details.menusection>summary::after{content:"+";color:var(--soft);font-family:var(--mono);line-height:1}details.menusection[open]>summary::after{content:"\2212";color:var(--i)}details.post{border-top:1px solid var(--rl)}details.post:first-of-type{border-top:0}details.post>summary{display:flex;align-items:baseline;gap:.7rem;list-style:none;cursor:pointer;padding:.9rem 0 .5rem}details.post>summary::before{content:"+";color:var(--soft);font-family:var(--mono);font-size:.85rem;line-height:1;width:.85rem;flex:none}details.post[open]>summary::before{content:"\2212";color:var(--i)}details.post[open]>summary .contentheader{text-decoration:underline;text-decoration-color:var(--brand);text-decoration-thickness:3px;text-underline-offset:5px}details.post>summary::-webkit-details-marker,details.menusection>summary::-webkit-details-marker{display:none}details.post::details-content,details.menusection::details-content{block-size:0;overflow:hidden;transition:block-size 200ms ease,content-visibility 200ms allow-discrete}details.post[open]::details-content,details.menusection[open]::details-content{block-size:auto}@media(prefers-reduced-motion:reduce){details.post::details-content,details.menusection::details-content{transition:none}}#maincol a{color:var(--i)}#maincol a:hover{border-bottom:1px dashed var(--i);text-decoration:none}#maincol :is(h1,h2,h3,h4,h5,h6):not(.contentheader){color:var(--i);font-family:var(--sans);font-weight:500;margin:1.3rem 0 .4rem}#maincol h1:not(.contentheader){font-size:1.2rem}#maincol h2:not(.contentheader){font-size:1.1rem}#maincol h3:not(.contentheader){font-size:1rem}#maincol h4:not(.contentheader),#maincol h5:not(.contentheader),#maincol h6:not(.contentheader){font-size:.95rem;font-weight:600}.contentheader{margin:0;padding:0;font-family:var(--sans);font-size:1.4rem;font-weight:600;line-height:1.3;color:var(--i)}details.post>summary .contentheader{cursor:pointer}details.post:first-of-type>summary{padding-top:0}details.menusection:first-of-type>summary{padding-top:.52rem}#maincol>.contentheader,#maincol>.content{padding-inline-start:var(--marker-indent)}#maincol>.contentheader{margin-bottom:.5rem}details.post .content{padding-inline-start:var(--marker-indent)}.content{padding-bottom:1.1rem}#maincol p{font-size:.95rem;line-height:1.7;margin:0 0 .85rem}#maincol p:last-child{margin-bottom:0}#maincol ul,#maincol ol{font-size:.95rem;line-height:1.7}label{background-color:inherit;font-size:.9em;font-weight:500}code,.inline-code{margin:0;font-family:var(--mono)}.small{font-size:.8em}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}blockquote{position:relative;background-color:var(--rail);border:1px solid var(--rl);padding:1.1rem 1.5rem 1.1rem 3rem;margin:1.4rem 0}blockquote::before{content:"\201C";position:absolute;left:.5rem;top:.35rem;color:var(--soft);font-size:2.4rem;line-height:1;pointer-events:none}blockquote p{color:var(--mid)}blockquote cite{display:block;text-align:right;color:var(--soft);font-size:.8rem;margin:.6rem 0 0}blockquote cite:before{content:"\2014 "}.alignright{float:right}img.alignright{padding:4px;margin:0 0 2px 7px}.avatar{float:right;margin:0 5px 5px;height:256px;width:256px}#profile-avatar>img{padding:1em}figure{margin:0}figure.captioned{text-align:center;padding-top:4px;margin:10px;border:1px solid var(--rl);border-radius:3px;background:var(--rail);clear:both}figure.captioned img{margin:0;padding:0;border:0}figure.captioned figcaption{color:var(--soft);font-size:.7rem;line-height:1.4;padding:0 4px 5px;margin:0}pre,.highlight{overflow-x:auto;max-width:100%}img,iframe,object{max-width:100%}.read-more-link{font-family:var(--mono);font-size:.8rem;margin-top:.9rem}.read-more-link a{color:var(--i);text-decoration:none;border-bottom:2px solid var(--brand);padding-bottom:1px}#maincol .read-more-link a:hover{color:var(--i);background:0 0;border-bottom:2px dashed var(--i)}.postinfotext{color:var(--soft);font-family:var(--mono);font-size:.75rem;line-height:1.7;font-weight:500;border-top:1px solid var(--rl);border-bottom:1px solid var(--rl);padding:.45rem 0;margin:1rem 0 0}.postinfotext a{color:var(--soft);text-decoration:none}.postinfotext a:hover{color:var(--i)}.permalink,.permalink a{margin:0;padding:0;color:var(--soft);font-family:var(--mono);font-size:.75rem;font-weight:500;text-decoration:none}.post-tags a,#menu .tagcloud a{--ctl-edge:1px;display:inline-block;font-family:var(--mono);font-size:.72rem;font-weight:500;line-height:1;border:var(--ctl-edge)solid var(--brand);border-radius:3px;color:var(--mid);padding:.29em .45em .31em;text-decoration:none}.post-tags a{margin-right:.3em}#maincol .post-tags a:hover,#menu .tagcloud a:hover,#maincol .navigation a:hover{background:0 0;color:var(--i);font-weight:600;border-style:dashed;border-color:var(--i);border-width:var(--ctl-edge)}.term-index{list-style:none;margin:1.2rem 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));column-gap:2rem;font-size:.9rem}.term-index li{display:flex;align-items:baseline;justify-content:space-between;gap:.75em;border-bottom:1px solid var(--rl);padding:.25rem 0}.term-count{color:var(--soft);font-family:var(--mono);font-size:.75rem;font-variant-numeric:tabular-nums}.navigation{display:flex;align-items:center;justify-content:space-between;gap:1em;border-top:2px solid var(--brand);padding-top:1em;margin-top:1.8rem;font-family:var(--mono);font-size:.8rem;font-weight:500}.navigation a{--ctl-edge:2px;display:inline-block;line-height:1;border:var(--ctl-edge)solid var(--brand);border-radius:4px;color:var(--i);padding:.66em .8em .68em;text-decoration:none}.navigation .pageof{color:var(--soft);font-variant-numeric:tabular-nums}.styleswitch{cursor:pointer;background:0 0;border:0;padding:0;margin:0;font:inherit;color:inherit;text-align:left}.styleswitch:hover{color:var(--i)}@media(max-width:45rem){#page{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto;row-gap:0}#leftcol{grid-column:1;grid-row:1;display:block;border-right:0;border-bottom:1px solid var(--rl);padding:1.5rem 1rem 1rem 1.2rem}#header{margin-bottom:1.25rem}#maincol{grid-column:1;grid-row:2;padding:1.5rem 1rem 2rem}.copyright{grid-row:3}.alignright,.avatar,figure.captioned{float:none;width:auto;max-width:100%;margin-inline:0}}@media print{#leftcol{display:none}#page{display:block}#maincol{padding:0}}