:root{--ns-font-sans-serif:"Inter",system-ui,-apple-system,"Segoe UI",roboto,"Helvetica Neue",arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--ns-code-font-family:ui-monospace,sfmono-regular,consolas,"Liberation Mono",menlo,monospace;--ns-body-font-family:var(--ns-font-sans-serif);--ns-body-font-weight:400;--ns-body-line-height:1.5;--ns-reset-line-height:1.15;--ns-black:#000;--ns-white:#fff;--ns-body-color:#3b3c36;--ns-body-bg:#fffff0;--ns-link-color:var(--ns-body-color);--svg-fill:var(--ns-body-color);--nav-border:var(--ns-body-color);--img-border:var(--ns-body-color);--blogroll-ribbon-bg:#c62828;--skip-bg-light:#fff;--skip-bg-dark:#121212;--skip-color-light:#007bff;--skip-color-dark:#17a2b8;--ns-max-width:calc(var(--space-3xl) * 7);--step--2:clamp(0.7813rem, 0.7747rem + 0.0326vw, 0.8rem);--step--1:clamp(0.9375rem, 0.9158rem + 0.1087vw, 1rem);--step-0:clamp(1.125rem, 1.0815rem + 0.2174vw, 1.25rem);--step-1:clamp(1.35rem, 1.2761rem + 0.3696vw, 1.5625rem);--step-2:clamp(1.62rem, 1.5041rem + 0.5793vw, 1.9531rem);--step-3:clamp(1.944rem, 1.771rem + 0.8651vw, 2.4414rem);--step-4:clamp(2.3328rem, 2.0827rem + 1.2504vw, 3.0518rem);--step-5:clamp(2.7994rem, 2.4462rem + 1.7658vw, 3.8147rem);--space-3xs:clamp(0.3125rem, 0.3125rem + 0vw, 0.3125rem);--space-2xs:clamp(0.5625rem, 0.5408rem + 0.1087vw, 0.625rem);--space-xs:clamp(0.875rem, 0.8533rem + 0.1087vw, 0.9375rem);--space-s:clamp(1.125rem, 1.0815rem + 0.2174vw, 1.25rem);--space-m:clamp(1.6875rem, 1.6223rem + 0.3261vw, 1.875rem);--space-l:clamp(2.25rem, 2.163rem + 0.4348vw, 2.5rem);--space-xl:clamp(3.375rem, 3.2446rem + 0.6522vw, 3.75rem);--space-2xl:clamp(4.5rem, 4.3261rem + 0.8696vw, 5rem);--space-3xl:clamp(6.75rem, 6.4891rem + 1.3043vw, 7.5rem);--space-3xs-2xs:clamp(0.3125rem, 0.2038rem + 0.5435vw, 0.625rem);--space-2xs-xs:clamp(0.5625rem, 0.4321rem + 0.6522vw, 0.9375rem);--space-xs-s:clamp(0.875rem, 0.7446rem + 0.6522vw, 1.25rem);--space-s-m:clamp(1.125rem, 0.8641rem + 1.3043vw, 1.875rem);--space-m-l:clamp(1.6875rem, 1.4049rem + 1.413vw, 2.5rem);--space-l-xl:clamp(2.25rem, 1.7283rem + 2.6087vw, 3.75rem);--space-xl-2xl:clamp(3.375rem, 2.8098rem + 2.8261vw, 5rem);--space-2xl-3xl:clamp(4.5rem, 3.4565rem + 5.2174vw, 7.5rem);--space-s-l:clamp(1.125rem, 0.6467rem + 2.3913vw, 2.5rem);--vt-duration-fast:200ms;--vt-duration-normal:300ms;--vt-duration-slow:400ms;--vt-easing-ease-out:cubic-bezier(0.22, 1, 0.36, 1);--vt-easing-ease-in:cubic-bezier(0.4, 0, 1, 1);--vt-easing-smooth:cubic-bezier(0.33, 1, 0.68, 1)}html[data-theme=light]{--ns-body-color:#3b3c36;--ns-body-bg:#fffff0}html[data-theme=dark]{--ns-body-bg:#3b3c36;--ns-body-color:#fffff0}*,::after,::before{box-sizing:border-box}html{line-height:var(--ns-reset-line-height);tab-size:4}body{margin:0;font-family:var(--ns-body-font-family);font-weight:var(--ns-body-font-weight);line-height:var(--ns-body-line-height);color:var(--ns-body-color);background-color:var(--ns-body-bg)}b,strong{font-weight:900}.strike{text-decoration:line-through}code,kbd,pre,samp{font-family:var(--ns-code-font-family);font-size:1em}small{font-size:var(--step--1)}sub,sup{font-size:var(--step--2);line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25rem}sup{top:-0.5rem}dl,ol,ul{margin-block:0 1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}button,input,optgroup,select,textarea{font-family:inherit;font-size:var(--step-0);line-height:var(--ns-reset-line-height);margin:0}[type=button],[type=reset],[type=submit],button{appearance:auto}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{appearance:none}::-webkit-file-upload-button{appearance:auto;font:inherit}summary{display:list-item}.grecaptcha-badge,.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border-width:0}#skip-link{position:absolute;top:-90px;left:0;width:100%;z-index:9;padding:var(--space-3xs) var(--space-s-m);font-size:var(--step-2);font-weight:700;text-decoration:none;transition:top .3s ease-out}html[data-theme=light] #skip-link{color:var(--skip-color-light);background:var(--skip-bg-light)}html[data-theme=dark] #skip-link{color:var(--skip-color-dark);background:var(--skip-bg-dark)}#skip-link:focus{top:0}:focus-visible{outline:currentcolor solid 0.1rem;outline-offset:0.1rem;border-radius:0.1rem}a{color:var(--ns-link-color);text-decoration:underline}a:not([href],[class]),a:not([href],[class]):hover{color:inherit;text-decoration:none}header{padding:0;border-bottom:1px dotted var(--nav-border)}header nav{position:relative;margin-inline:var(--space-s-m)}header a{font-weight:700}.theme-container{position:absolute;bottom:50%;right:0;width:20px;height:20px;margin-bottom:-10px;background:0 0;border:0;display:block}.theme-container svg{position:absolute;margin:-10px 0 0 -5px}.theme-container:hover svg{fill:var(--ns-body-color);cursor:pointer}html[data-theme=dark] .icon-moon,html[data-theme=light] .icon-sun{display:none}html[data-theme=dark] .icon-sun,html[data-theme=light] .icon-moon{display:block}html[data-theme=dark] .icon-sun{color:var(--ns-body-color)}.nav-menu{margin:var(--space-s-m) 0;padding:0}.nav-menu li{list-style:none;text-align:left}.nav-menu li:first-child{display:block}.nav-menu a{text-decoration:none;color:inherit;font-size:var(--step-0);display:block;width:90%;padding:var(--space-3xs-2xs) 0}.nav-menu a.logo{padding:0;font-weight:900;text-decoration:none;display:initial}.nav-menu a.logo span{vertical-align:super;display:inline-block}.nav-menu a.logo svg{margin-top:0.3rem}.nav-menu svg{fill:var(--svg-fill)}.nav-menu a:not(.logo):hover{cursor:pointer;text-decoration:none;color:var(--ns-body-bg);padding-left:0.2rem;margin-left:-0.2rem}html[data-theme] .nav-menu a:not(.logo):hover{background:linear-gradient(90deg,var(--ns-body-color) 0,var(--ns-body-color) 41%,var(--ns-body-bg) 100%)}.nav-menu a.active:hover{text-decoration:underline}footer,main{padding-inline:var(--space-s-m)}main{clear:both;max-width:var(--ns-max-width)}@layer base{:where(main){font-size:var(--step-0)}:where(main) :is(h3,h4,h5,h6){margin-block:var(--space-m) var(--space-s);overflow-wrap:anywhere;text-wrap:balance}:where(main) h3{font-size:var(--step-3)}:where(main) h4{font-size:var(--step-2)}:where(main) h5{font-size:var(--step-1)}:where(main) h6{font-size:var(--step-0)}:where(main) p{margin-block:var(--space-s)}}main h1{font-size:var(--step-5);margin:var(--space-m-l) 0;line-height:var(--ns-reset-line-height)}main .e-content h2{font-size:var(--step-4)}main p{margin:var(--space-s) 0;font-size:var(--step-0)}main ol li,main p strong,main ul li{font-size:var(--step-0)}main p.job-date{margin-top:calc(var(--space-s) * -1)}main a{text-decoration:underline}footer a:hover,main a:hover{text-decoration:none}main blockquote{margin:0;padding:var(--space-s-m) 0;border-left:5px solid var(--ns-body-color)}main blockquote p{margin:0 0 0 var(--space-m);font-style:italic}main ul{padding-left:var(--space-s-m)}main hr{border:none;border-bottom:1px dotted var(--nav-border);margin:var(--space-s-m) calc(var(--space-s-m) * -1)}main li code,main p code{overflow-wrap:anywhere;white-space:pre-wrap;max-width:100%;display:inline-block;vertical-align:top}main table{border-collapse:collapse;width:100%;text-align:left}main table td,main table th{padding:var(--space-3xs-2xs) 0 var(--space-3xs-2xs) var(--space-3xs-2xs)}html[data-theme] main table{border:1px solid var(--ns-body-color)}html[data-theme] main table thead{font-weight:900;background-color:var(--ns-body-color);color:var(--ns-body-bg)}html[data-theme] main table thead th{border-right:1px solid var(--ns-body-bg)}html[data-theme] main table tbody td:last-of-type,html[data-theme] main table thead th:last-child{border-right:0}html[data-theme] main table tbody td{border-bottom:1px solid var(--ns-body-color);border-right:1px solid var(--ns-body-color)}html[data-theme] main table tbody tr:last-child td{border-bottom:0}picture img{max-inline-size:100%;block-size:auto;inline-size:auto;border:1px solid var(--img-border)}.figure{margin:var(--space-m) 0}.fig-caption{margin-top:var(--space-3xs);font-size:var(--step--2)}.iframe-container{border:1px solid var(--img-border);overflow:hidden;padding-top:56.25%;position:relative;margin:var(--space-s-m) 0}.iframe-container iframe{position:absolute;top:0;left:0;border:0;width:100%;height:100%}.post-metadata{list-style:none;overflow:auto;padding:0;margin-left:0.1rem}.post-metadata li{float:left;font-size:var(--step--1);margin-right:var(--space-3xs)}.postlist{list-style:none;padding:0}.postlist li{margin-bottom:var(--space-m-l)}.postlist time{font-size:var(--step--1);display:block;font-style:italic}.postlist p{font-size:var(--step-0);margin:var(--space-3xs-2xs) 0}.postlist a{line-height:var(--ns-reset-line-height);font-size:var(--step-3);display:inline-block;text-decoration:none;font-weight:700;padding:var(--space-3xs-2xs);margin-left:calc(var(--space-3xs-2xs) * -1)}html[data-theme] .postlist a.postlist-link:hover{color:var(--ns-body-bg);background:var(--ns-body-color)}.postlist .postlist-tags{overflow:auto;padding:0;margin:var(--space-3xs-2xs) 0}.postlist .postlist-tags li{margin-bottom:0;list-style:none;float:left;margin-right:var(--space-3xs)}.postlist .postlist-tags li:last-of-type{margin:0}.postlist .postlist-tags li a{font-weight:100;display:inline;margin:0;padding:0;font-size:var(--step--1);text-decoration:underline}.postlist .postlist-tags li a:hover{text-decoration:none}.tags-list{padding:0 0 var(--space-m-l);margin:0;list-style:none}.links-nextprev{margin:0 calc(var(--space-s-m) * -1);display:flex;align-items:flex-end;justify-content:space-between;padding:0;border-bottom:1px dotted var(--nav-border)}.links-nextprev li{list-style:none;display:inline-flex}.links-nextprev li:only-child{width:100%}.links-nextprev li:only-child a{display:inline-block;padding-bottom:0.3rem}.links-nextprev li.next{justify-content:flex-end;text-align:right}.links-nextprev li.prev a{padding-left:var(--space-s)}.links-nextprev li.next a{padding-right:var(--space-s)}.links-nextprev li.next:only-child a{text-align:right}.links-nextprev li.prev:only-child a{text-align:left}.links-nextprev li span[aria-hidden]{font-weight:700;font-size:var(--step-2);margin-top:-0.5rem}.links-nextprev li a{font-weight:700;font-size:var(--step-0);color:var(--ns-body-color);display:flex;align-items:center;text-decoration:none}.links-nextprev li a:hover{background-color:var(--ns-body-color);color:var(--ns-body-bg)}.links-nextprev li:first-child span{margin-right:var(--space-3xs)}.links-nextprev li:first-child a{padding-right:var(--space-s)}.links-nextprev li:last-child span{margin-left:var(--space-3xs)}.links-nextprev li:last-child a{padding-left:var(--space-s)}.dual-list{padding-left:0;list-style:none;margin-bottom:0}.dual-list li:last-child p{margin-bottom:0}.dual-list h2{font-size:var(--step-1);margin:0 0 var(--space-s-m)}.dual-gallery-list,.dual-post-meta{list-style:none;padding-left:0}.dual-gallery-list li{margin-bottom:var(--space-s-m)}.dual-gallery-list li:last-of-type{margin-bottom:0}.dual-post-meta strong{text-transform:capitalize}.dual-post-meta strong::after{content:":"}.dual-list img{width:100%;height:auto;max-width:600px;object-fit:cover;border:1px solid var(--img-border)}@supports (display:grid){.dual-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-s-m)}.blogroll-wrapper{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-s-m)}}.blogroll-wrapper article{position:relative;padding:var(--space-s);border:1px solid var(--img-border)}.blogroll-wrapper article h2{margin-bottom:var(--space-s);font-size:var(--step-1)}.blogroll-wrapper article p{font-size:var(--step--2);margin:var(--space-s) 0}.blogroll-wrapper .favicon{width:40px;height:40px;border:1px solid var(--img-border);background:var(--ns-white)}.blogroll-wrapper article.no-favicon .favicon{background:url("/img/blogroll-construction.gif") 0 0/39px auto}.ribbon{position:absolute;top:0;right:0;background:var(--blogroll-ribbon-bg);color:var(--ns-white);padding:var(--space-3xs) var(--space-s);font-size:var(--step--1);font-weight:700;transform-origin:top right;box-shadow:0 2px 5px rgb(0,0,0,30%)}html[data-theme=dark] ::placeholder{color:var(--ns-black)}html[data-theme=light] ::placeholder{color:var(--ns-white)}.contact-page-label{display:block;font-weight:900}html[data-theme] .contact-page-input,html[data-theme] .contact-page-textarea{border:1px solid var(--ns-body-bg);background-color:var(--ns-body-color);display:block;margin-bottom:var(--space-s-m);width:100%;padding:var(--space-s-m)}#fs-frm fieldset{border:0;width:95%;margin:0;padding:0}#fs-frm label,#webmention-form label{font-size:var(--step--1);display:block;font-weight:900}#fs-frm .spm{display:none}#fs-frm button,#fs-frm input,#fs-frm textarea,#webmention-form button,#webmention-form input,#webmention-form textarea{width:100%;margin:var(--space-3xs) 0 var(--space-s-m);font-size:var(--step--2);padding:var(--space-3xs-2xs)}#fs-frm input:focus-visible,#fs-frm textarea:focus,#fs-frm textarea:focus-visible,#webmention-form input:focus-visible{outline-color:var(--ns-body-color)}#fs-frm button[type=submit],#webmention-form input[type=submit]{cursor:pointer;margin-bottom:0;border:1px solid var(--ns-body-color)}.required::after{content:"*";margin-left:calc(var(--space-3xs) * .5)}html[data-theme=light] .required::after{color:#20211e}html[data-theme=dark] .required::after{color:#d0dfcb}html[data-theme] #fs-frm button[type=submit],html[data-theme] #webmention-form input[type=submit]{background-color:var(--ns-body-color);color:var(--ns-body-bg)}html[data-theme] #fs-frm button[type=submit]:focus,html[data-theme] #fs-frm button[type=submit]:focus-visible,html[data-theme] #fs-frm button[type=submit]:hover,html[data-theme] #webmention-form input[type=submit]:focus,html[data-theme] #webmention-form input[type=submit]:focus-visible,html[data-theme] #webmention-form input[type=submit]:hover{background-color:var(--ns-body-bg);color:var(--ns-body-color);border-color:var(--ns-body-color)}html[data-theme=dark] #fs-frm ::placeholder,html[data-theme=dark] #webmention-form ::placeholder{color:var(--ns-body-bg)}html[data-theme=light] #fs-frm ::placeholder,html[data-theme=light] #webmention-form ::placeholder{color:var(--ns-body-color)}.giscus{padding:var(--space-s-m);max-width:var(--ns-max-width)}html[data-theme=dark] .giscus{padding-bottom:0}summary#comments-button{width:100%;margin:0;cursor:pointer;text-align:center;display:block;font-weight:700;font-size:var(--step-0);padding:var(--space-2xs) 0;border-bottom:1px dotted var(--nav-border)}html[data-theme=light] #comments-button{background-color:var(--ns-body-bg);color:var(--ns-body-color)}html[data-theme=dark] #comments-button:hover,html[data-theme=light] #comments-button:hover{background-color:var(--ns-body-color);color:var(--ns-body-bg)}#comments-button::before{margin-right:var(--space-3xs);content:"✎"}#detailsElement{max-width:var(--ns-max-width)}summary::-webkit-details-marker{display:none}.webmentions{max-width:var(--ns-max-width);padding:0 var(--space-s-m) var(--space-s-m);border-bottom:1px dotted var(--nav-border)}.response .url{overflow-wrap:break-word}footer{padding-block:var(--space-m-l)}footer p{margin:0 0 var(--space-3xs-2xs);font-size:var(--step--2)}footer a:hover{text-decoration:none}.header-anchor{font-size:var(--step-0)}nav a.active{text-decoration:underline}code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgb(0,0,0,30%);font-family:Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;overflow-wrap:normal;line-height:1.5;tab-size:4;hyphens:none}pre[class*=language-]{padding:1em;margin:0.5em 0;overflow:auto;border-radius:0.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{padding:0.1em;border-radius:0.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8292a2}.token.punctuation{color:#f8f8f2}.token.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}@media (width <= 768px){main ol li,main ul li{overflow-wrap:anywhere;hyphens:auto}main li code{max-width:calc(100vw - var(--space-s-m) - var(--space-s-m) - var(--space-s-m));box-sizing:border-box}main ol,main ul{overflow-x:hidden}}.nav-toggle{display:none}@view-transition{navigation:auto}::view-transition-old(root){animation-duration:var(--vt-duration-normal);animation-timing-function:var(--vt-easing-ease-out);will-change:opacity}::view-transition-new(root){animation-duration:var(--vt-duration-normal);animation-timing-function:var(--vt-easing-ease-in);will-change:opacity}::view-transition-old(header){animation-duration:var(--vt-duration-fast);animation-timing-function:var(--vt-easing-smooth);will-change:opacity,transform}::view-transition-new(header){animation-duration:var(--vt-duration-fast);animation-timing-function:var(--vt-easing-smooth);will-change:opacity,transform}::view-transition-old(main){animation-duration:var(--vt-duration-slow);animation-timing-function:var(--vt-easing-ease-out);will-change:opacity}::view-transition-new(main){animation-duration:var(--vt-duration-slow);animation-timing-function:var(--vt-easing-ease-in);will-change:opacity}::view-transition-old(footer){animation-duration:var(--vt-duration-fast);animation-timing-function:var(--vt-easing-smooth);will-change:opacity}::view-transition-new(footer){animation-duration:var(--vt-duration-fast);animation-timing-function:var(--vt-easing-smooth);will-change:opacity}@supports (-moz-appearance:none){::view-transition-group(footer),::view-transition-group(header),::view-transition-group(main),::view-transition-group(root){transform:translateZ(0);backface-visibility:hidden;perspective:1000px}::view-transition-new(root),::view-transition-old(root){animation-duration:250ms;animation-timing-function:ease}::view-transition-new(header),::view-transition-old(header){animation-duration:150ms}::view-transition-new(main),::view-transition-old(main){animation-duration:.3s;animation-timing-function:ease}::view-transition-new(footer),::view-transition-old(footer){animation-duration:150ms}}::view-transition-new(skip-link),::view-transition-old(skip-link){animation:none}.theme-container,html[data-theme]{view-transition-name:none}@media (prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-new(*),::view-transition-old(*){animation-duration:0s!important;animation-delay:0s!important}}