.h-blobfolio_title{--bg:transparent;transition:var(--t-fg)}.h-blobfolio_title:hover,.h-blobfolio_title:active,.h-blobfolio_title:focus{--fg:var(--h-fg,#00abc0)}.h_content{position:absolute;top:0;left:0}.h-blobfolio_nav{position:absolute;bottom:0;left:0}.info-box_link,.info-box_links,.footer_title,#footer,.h-blobfolio_tab,.h-blobfolio_icon,.h-blobfolio_icons,.h-blobfolio{justify-content:center;align-items:center;display:flex}:root{--sans:Ubuntu,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--mono:SFMono-Regular,Menlo,Monaco,Consolas,Fira Mono,Liberation Mono,Courier New,monospace;--gap:90px;--margin:30px;--nudge:10px;--t-bg:background .5s ease;--t-fg:color .5s ease;--t-border:border .5s ease;--t-opacity:opacity .5s ease;--bg:white;--fg:#333;--h-bg:#ff3596;--h-fg:#00abc0;--shadow:white}*,:after,:before{vertical-align:baseline;box-sizing:border-box;font:inherit;border:0;border-radius:0;outline:0;margin:0;padding:0}html{min-height:100vh;scroll-behavior:smooth;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}body{min-width:350px;min-height:100vh;color:#333;font-family:var(--sans);font-variant:normal;letter-spacing:0;text-transform:none;background-color:#fff;font-size:1.125rem;font-style:normal;font-weight:400;line-height:1;overflow-x:hidden}a{color:inherit;cursor:pointer;-webkit-text-decoration-skip:objects;touch-action:manipulation;text-decoration:none}a>*,a:before,a:after{pointer-events:none}abbr[title]{cursor:help;border-bottom:0;text-decoration:underline dotted}b,strong{font-weight:700}blockquote{border:1px solid #ccc;border-width:1px 5px;margin-left:2em;margin-right:2em;padding:1em;font-size:1.525rem;font-weight:300}code{font-family:var(--mono);font-size:.875rem;font-weight:400!important}p>code,li>code,div>code{color:#00abc0}del,strike{text-decoration:line-through}em,i{font-style:italic}h1,h2,h3,h4,h5,h6{text-align:left;font-weight:200;display:block}h1{font-size:2.625rem}h2{font-size:2rem}h3,h4,h5,h6{font-size:1rem;font-weight:700}bar-chart,i-con,i-mg{display:block}img,svg{width:100%;height:auto;display:block}svg:not(:root){overflow:hidden}ol{list-style:decimal}ul{list-style:disc}ol,ul{padding-left:2em}li{display:list-item}li+li{margin-top:.5em}pre{overflow-x:auto}pre code{overflow-wrap:normal;white-space:pre}sub,sup{font-size:80%}sub{vertical-align:sub}sup{vertical-align:super}table{border-collapse:collapse;border-bottom:1px solid #9b59b6}th,td{text-align:left;border-top:1px solid #9b59b6;border-left:1px solid #9b59b64d;padding:15px}th:first-child,td:first-child{border-left-color:#9b59b6}th:last-child,td:last-child{border-right:1px solid #9b59b6}th{color:#9b59b6;font-size:.875rem;font-weight:700}*+figure,*+blockquote,*+ol,*+p,*+pre,*+table,*+ul{margin-top:1em}*+h1,*+h2,*+h3,*+h4,*+h5,*+h6{margin-top:2em}.fg-black{color:#333}.fg-blue{color:#00abc0}.fg-green{color:#2ecc71}.fg-grey{color:#ccc}.fg-orange{color:#e67e22}.fg-pink{color:#ff3596}.fg-purple{color:#9b59b6}.fg-red{color:#e74c3c}.fg-teal{color:#1abc9c}.fg-white{color:#fff}.fg-yellow{color:#fff200}.hide{width:1px;height:1px;opacity:0;pointer-events:none;position:fixed;top:0;left:-100vw;overflow:hidden}.splat{position:var(--splat,fixed);inset:0}.xh-fg{color:var(--fg);transition:var(--t-fg)}.xh-fg:hover,.xh-fg:active,.xh-fg:focus{color:var(--h-fg)}.xh-bg{background-color:var(--bg);transition:var(--t-bg)}.xh-bg:hover,.xh-bg:active,.xh-bg:focus{background-color:var(--h-bg)}.xh-fg.xh-bg{transition:var(--t-bg),var(--t-fg)}.xt-shadow{text-shadow:var(--shadow)1px 1px 5px,var(--shadow)1px -1px 5px,var(--shadow)-1px 1px 5px,var(--shadow)-1px -1px 5px}.wrapper{width:100%;max-width:var(--wrap-width,900px);padding:0 var(--margin);margin:0 auto}.link,.wysiwyg a{color:var(--fg,#ff3596);transition:var(--t-fg);font-weight:700}.link[href^=http\:],.wysiwyg a[href^=http\:]{color:var(--fg-bad,#e74c3c)}.link:hover,.wysiwyg a:hover,.link:active,.wysiwyg a:active,.link:focus,.wysiwyg a:focus{color:var(--h-fg)}.wysiwyg{letter-spacing:.025em;line-height:1.5}.wysiwyg :first-child{margin-top:0!important}.wysiwyg :last-child{margin-bottom:0!important}.wysiwyg img,.wysiwyg i-mg{margin:1.5em 0;display:block}.wysiwyg a{--fg:#ff3596;--h-fg:#00abc0}.wysiwyg>code{color:#00abc0}.wysiwyg bar-chart{margin:3em 0;font-size:1.125rem}.wysiwyg *+figure,.wysiwyg *+blockquote,.wysiwyg *+ol,.wysiwyg *+p,.wysiwyg *+pre,.wysiwyg *+table,.wysiwyg *+ul{margin-top:1.25em}#header{--h-height:680px;width:100%;height:100vh;max-height:var(--h-height);opacity:0;transition:var(--t-opacity);position:relative;overflow:hidden}body.is-loaded #header{opacity:1}body.compact-header #header{--h-height:400px}.h_content{width:100%;height:100vh;max-height:var(--h-height);overflow:hidden}#header-marker{width:100%;height:1px;pointer-events:none;position:absolute;bottom:50px;left:0}.h-burger{top:var(--nudge);right:calc(var(--nudge) + 10px);width:40px;height:40px;z-index:9999;display:none;position:absolute}.h-burger_dot{width:10px;height:10px;transition:top .5s ease,left .5s ease,width .5s ease,height .5s ease,var(--t-bg);background-color:#ff3596;border-radius:50%;position:absolute}.h-burger_dot:nth-child(1){top:0;left:30px}.h-burger_dot:nth-child(2){top:15px;left:30px}.h-burger_dot:nth-child(3){top:30px;left:30px}.h-burger_dot:nth-child(4){top:0;left:30px}.h-burger_dot:nth-child(5){top:30px;left:30px}.h-burger:hover .h-burger_dot,.h-burger:active .h-burger_dot,.h-burger:focus .h-burger_dot{background-color:#00abc0}body.showing-mobile .h-burger .h-burger_dot:nth-child(1){left:0}body.showing-mobile .h-burger .h-burger_dot:nth-child(2){width:20px;height:20px;top:10px;left:10px}body.showing-mobile .h-burger .h-burger_dot:nth-child(5){left:0}.h-mobile{opacity:0;pointer-events:none;z-index:9999;display:none}.h-mobile_links{opacity:0;transition:var(--opacity);flex-flow:column;justify-content:center;align-items:center;display:flex}.h-mobile_link{text-align:center;transition:var(--t-fg),var(--t-border);border:1px solid #ccc;padding:10px 20px;font-size:1.125rem;font-weight:700;display:block;position:relative}.h-mobile_link:hover,.h-mobile_link:active,.h-mobile_link:focus{color:#ff3596;border-color:#9b59b6}.h-mobile_link+.h-mobile_link{margin-top:20px}.h-mobile_link+.h-mobile_link:before{content:"";width:1px;height:20px;border-right:1px solid #ccc;position:absolute;top:-21px;left:50%}.h-mobile_link.about{margin-bottom:20px}.h-mobile_link.about:before{content:"";width:calc(100% - 20px);height:20px;border-left:1px solid #ccc;border-right:1px solid #ccc;position:absolute;top:calc(100% + 1px);left:10px}.h-mobile_link.contact{margin-top:40px}.h-mobile_link_cluster{flex-flow:row;justify-content:center;align-items:flex-start;display:flex}.h-mobile_link_cluster2+.h-mobile_link_cluster2{margin-left:20px}.h-mobile_link2{--h-fg:#333;text-align:center;font-weight:700;display:block}.h-mobile_link2.email{--fg:#ff3596;margin:3em 0 1em}.h-mobile_link2.phone{--fg:#1abc9c}.h-mobile:before{content:"";opacity:0;transition:var(--t-opacity);z-index:-1;background-color:#fff;position:fixed;inset:0}body.showing-mobile .h-mobile{opacity:1;pointer-events:auto}body.showing-mobile .h-mobile_links{opacity:1}body.showing-mobile .h-mobile:before{opacity:1;transform:scale(1)}.h-blobfolio>i-mg{--fit:cover;--position:center;--splat:absolute;z-index:-1}.h-blobfolio_title{--width:600px;--h-fg:#ff3596;display:block}.h-blobfolio_cta{margin:var(--margin)0 calc(var(--margin)*2);color:#9b59b6;text-align:center;font-size:1.125rem;font-weight:700}.h-blobfolio_cta p+p{margin-top:.5em}.h-blobfolio_cta p:before,.h-blobfolio_cta p:after{color:#00abc0}.h-blobfolio_cta p:before{content:"(";margin-right:.25em}.h-blobfolio_cta p:after{content:")";margin-left:.25em}.h-blobfolio_nav{width:100%;height:50px;z-index:9999;background-color:#333333e6}.h-blobfolio_nav_wrapper{--wrap-width:1100px}body.is-sticky .h-blobfolio_nav{position:fixed;top:0;bottom:auto}.h-blobfolio_icon{--h-bg:#333;width:30px;height:30px;margin:0 5px}.h-blobfolio_icon.github{--bg:#00abc0}.h-blobfolio_icon.mail{--bg:#9b59b6}.h-blobfolio_icon.rss{--bg:#e67e22}.h-blobfolio_icon.rust{--bg:#1abc9c}.h-blobfolio_icon.wp{--bg:#ff3596}.h-blobfolio_icon i-con{--width:20px;--fg:white;--bg:transparent;--h-bg:transparent}.h-blobfolio_tabs{flex-flow:row;justify-content:flex-end;align-items:center;display:flex}.h-blobfolio_tabs>.h-blobfolio_icons{margin-right:auto}.h-blobfolio_tabs .h-blobfolio_icon{--fg:#ddd;--h-fg:white;--bg:transparent;--h-bg:#333;width:auto;height:50px;margin:0;padding:10px}.h-blobfolio_tabs .h-blobfolio_icon.github{--h-bg:#00abc0}.h-blobfolio_tabs .h-blobfolio_icon.mail{--h-bg:#9b59b6}.h-blobfolio_tabs .h-blobfolio_icon.rss{--h-bg:#e67e22}.h-blobfolio_tabs .h-blobfolio_icon.rust{--h-bg:#1abc9c}.h-blobfolio_tabs .h-blobfolio_icon.wp{--h-bg:#ff3596}.h-blobfolio_tabs .h-blobfolio_icon.b{--h-bg:#ff3596;display:none}.h-blobfolio_tabs .h-blobfolio_icon.up{--h-bg:#1abc9c;opacity:0;pointer-events:none;transition:var(--t-fg),var(--t-bg),var(--t-opacity)}body.is-sticky .h-blobfolio_tabs .h-blobfolio_icon.up{opacity:1;pointer-events:auto}.h-blobfolio_tabs .h-blobfolio_icon i-con{--width:15px}.h-blobfolio_tab{--fg:#ddd;--h-fg:white;--bg:transparent;--h-bg:#1abc9c;height:50px;letter-spacing:.1em;text-transform:lowercase;padding:0 20px;font-size:.875rem;font-weight:700}.h-blobfolio_tab:nth-child(2n){--bg:#333}.h-blobfolio_tab.shh,.h-blobfolio_tab.stuff{--h-bg:#9b59b6}.h-blobfolio_tab.blog{--h-bg:#00abc0}.h-blobfolio_tab.is-active{--fg:var(--h-fg);--bg:var(--h-bg)}body.compact-header .h-blobfolio .h-blobfolio_inner>.h-blobfolio_icons{display:none}body.compact-header .h-blobfolio .h-blobfolio_cta{margin-bottom:0}#footer{padding:var(--gap)0;letter-spacing:.05em;font-size:.875rem;font-weight:700;position:relative}#footer>i-mg{--fit:cover;--position:top center;--splat:absolute;z-index:-1}#footer .copy:before{content:"©";display:inline-block;transform:rotate(180deg)translate(-10%,-12%)}.footer_title{--fg:white;--bg:#00abc0;--h-bg:#ff3596;width:100px;height:100px;border-radius:50%}.footer_title i-con{--width:60px;--fg:white;--bg:transparent;--h-bg:transparent}.footer_copyright{width:260px;margin:0 var(--margin)0 0;text-align:right;line-height:1.3}.footer_privacy{width:300px;margin:0 0 0 var(--margin);text-align:left;line-height:1.3}#article{margin-top:var(--gap);margin-bottom:var(--gap)}#article h1,#article h2,#article h3{line-height:1.25}#article h1:first-child{max-width:600px;text-align:center;margin:0 auto 2em}#article *+.code-toolbar{margin-top:1em}#article ul.columns{column-count:3;column-gap:calc(var(--margin)*2);display:inline-block}#article ul.columns li{break-inside:avoid}.info-box{width:275px;margin:0 0 calc(var(--margin)*2)calc(var(--margin)*2);padding:var(--margin);float:right;border:1px solid #ccc;font-size:.875rem}.info-box_title{flex-flow:row;justify-content:space-between;align-items:center;display:flex}.info-box_name{font-weight:700}.info-box_platforms{flex-flow:row;justify-content:flex-end;align-items:center;display:flex}.info-box_platform{--width:30px;margin-left:10px}.info-box_meta{width:100%;border:0;margin-top:15px}.info-box_row:nth-child(2n)>td,.info-box_row:nth-child(2n)>th{background-color:#f0f0f0}.info-box_key{color:#333;text-align:right;padding:10px;border:0!important}.info-box_value{padding:10px 10px 10px 0;border:0!important}.info-box_links{margin-top:25px}.info-box_link{width:40px;height:40px;color:#fff!important;transition:var(--t-bg)!important}.info-box_link.repo{background-color:#00abc0}.info-box_link.download{background-color:#ff3596}.info-box_link:hover,.info-box_link:active,.info-box_link:focus{background-color:#333}.info-box_link>i-con{--width:30px;--fg:white;--bg:transparent}.info-box_link+.info-box_link{margin-left:10px}.post-box{--fg:#ff3596;--h-fg:#00abc0;--wrap-width:600px;width:100%;margin-bottom:var(--gap);line-height:1.4;font-family:var(--mono);font-size:.875rem}.post-box_image{--fit:cover;position:relative}.post-box_name{--fg:#ff3596;--h-fg:#00abc0;font-family:var(--sans);font-size:1.375rem}.post-box_meta{width:100%}.post-box_links{flex-flow:wrap;justify-content:flex-start;align-items:flex-start;display:flex}.post-box_link{margin:0 .5em 0 0}.post-box_link:after{content:";";color:#ccc;pointer-events:none}@media only screen and (max-width:74.9375em){.wysiwyg h1{font-size:2rem}.wysiwyg h2{font-size:1.75rem}}@media only screen and (max-width:67.4375em){.h-blobfolio_tabs{justify-content:center}.h-blobfolio_tabs>.h-blobfolio_icons{display:none}}@media only screen and (max-width:48.6875em){#footer{flex-direction:column}.footer_privacy{display:none}.footer_copyright{width:auto;text-align:center;order:1;margin:15px 0}}@media only screen and (max-width:43.6875em){body.showing-mobile{overflow:hidden}#header{--h-height:400px;width:100%}body.compact-header #header{--h-height:300px}.h-burger{display:block}.h-mobile{flex-flow:column;justify-content:center;align-items:center;display:flex}.h-blobfolio_nav{width:100%;opacity:0;pointer-events:none;transition:var(--t-opacity)}body.is-sticky .h-blobfolio_nav{opacity:1;pointer-events:auto}.h-blobfolio_tab{display:none}.h-blobfolio_tabs>.h-blobfolio_icons{width:100%;display:flex}.h-blobfolio_tabs>.h-blobfolio_icons>.h-blobfolio_icon{display:none}.h-blobfolio_tabs>.h-blobfolio_icons>.h-blobfolio_icon.up,.h-blobfolio_tabs>.h-blobfolio_icons>.h-blobfolio_icon.b,.h-blobfolio_tabs>.h-blobfolio_icons>.h-blobfolio_icon.mail{display:flex}.h-blobfolio_tabs>.h-blobfolio_icons>.h-blobfolio_icon.up{margin-left:auto}.h-blobfolio_title{--width:300px}.wysiwyg h1{font-size:1.5rem}.wysiwyg h2{font-size:1.25rem}.info-box{width:100%;max-width:400px;float:none;margin:0 auto}}@media only screen and (max-width:28.0625em){:root{--gap:60px;--margin:20px}}@media only screen and (max-width:21.8125em){body{overflow-x:scroll}}