﻿*:where(:not(html,iframe,canvas,img,svg,video,audio):not(svg *,symbol *)){all:unset;display:revert}*,*::before,*::after{box-sizing:border-box}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}a,button{cursor:revert}ol,ul,menu,summary{list-style:none}img{max-inline-size:100%;max-block-size:100%}table{border-collapse:collapse}input,textarea{-webkit-user-select:auto}textarea{white-space:revert}meter{-webkit-appearance:revert;appearance:revert}:where(pre){all:revert;box-sizing:border-box}::placeholder{color:unset}:where([hidden]){display:none}:where([contenteditable]:not([contenteditable=false])){-moz-user-modify:read-write;-webkit-user-modify:read-write;overflow-wrap:break-word;-webkit-line-break:after-white-space;-webkit-user-select:auto}:where([draggable=true]){-webkit-user-drag:element}:where(dialog:modal){all:revert;box-sizing:border-box}::-webkit-details-marker{display:none}@font-face{font-display:swap;font-family:"IBM Plex Sans Condensed";font-style:normal;font-weight:600;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Sans-Condensed/fonts/complete/woff2/IBMPlexSansCondensed-SemiBold.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Serif";font-style:normal;font-weight:450;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Serif/fonts/complete/woff2/IBMPlexSerif-Text.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Serif";font-style:italic;font-weight:450;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Serif/fonts/complete/woff2/IBMPlexSerif-TextItalic.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Serif";font-style:normal;font-weight:700;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Serif/fonts/complete/woff2/IBMPlexSerif-Bold.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Serif";font-style:italic;font-weight:700;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Serif/fonts/complete/woff2/IBMPlexSerif-BoldItalic.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Sans";font-style:normal;font-weight:300;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Light.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Sans";font-style:normal;font-weight:400;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Regular.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Sans";font-style:italic;font-weight:400;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Italic.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Sans";font-style:normal;font-weight:450;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Text.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Sans";font-style:italic;font-weight:450;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-TextItalic.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Sans";font-style:normal;font-weight:600;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-SemiBold.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Sans";font-style:italic;font-weight:600;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-SemiBoldItalic.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Sans";font-style:normal;font-weight:700;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Bold.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Sans";font-style:italic;font-weight:700;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-BoldItalic.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Mono";font-style:normal;font-weight:400;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Regular.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Mono";font-style:italic;font-weight:400;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Italic.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Mono";font-style:normal;font-weight:700;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Bold.woff2") format("woff2")}@font-face{font-display:swap;font-family:"IBM Plex Mono";font-style:italic;font-weight:700;src:url("//cdn.jsdelivr.net/gh/ibm/plex/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-BoldItalic.woff2") format("woff2")}.fa{text-rendering:auto;display:inline-block;font-weight:300}@font-face{font-family:"FontAwesome-subset";src:url("/media/fonts/fa/FontAwesome-subset.ttf?hiub9z") format("truetype"),url("/media/fonts/fa/FontAwesome-subset.woff?hiub9z") format("woff"),url("/media/fonts/fa/FontAwesome-subset.svg?hiub9z#FontAwesome-subset") format("svg");font-weight:normal;font-style:normal;font-display:block}.fa{font-family:"FontAwesome-subset" !important;speak:never;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-coffee:before{content:"\e936"}.fa-chevron-circle-left:before{content:"\e915"}.fa-chevron-circle-right:before{content:"\e916"}.fa-chevron-down:before{content:"\e917"}.fa-chevron-left:before{content:"\e918"}.fa-chevron-right:before{content:"\e919"}.fa-angle-down:before{content:"\e91a"}.fa-archive:before{content:"\e91b"}.fa-camera:before{content:"\e91c"}.fa-bars:before{content:"\e91d"}.fa-key:before{content:"\e906"}.fa-fingerprint:before{content:"\e90b"}.fa-location-circle:before{content:"\e90e"}.fa-compass:before{content:"\e90f"}.fa-phone:before{content:"\e910"}.fa-envelope:before{content:"\e911"}.fa-globe-africa:before{content:"\e912"}.fa-globe-americas:before{content:"\e913"}.fa-globe-asia:before{content:"\e914"}.fa-flickr:before{content:"\e900"}.fa-github-square:before{content:"\e901"}.fa-linkedin:before{content:"\e902"}.fa-mastodon:before{content:"\e903"}.fa-bookmark:before{content:"\e905"}.fa-external-link-square:before{content:"\e907"}.fa-paper-plane:before{content:"\e908"}.fa-rss-square:before{content:"\e909"}.fa-share-alt-square:before{content:"\e90a"}.fa-tag:before{content:"\e90c"}.fa-tags:before{content:"\e90d"}.fa-broadcast-tower:before{content:"\e904"}.fa-calendar-light:before{content:"\e91e"}.fa-discord:before{content:"\e91f"}.fa-microblog:before{content:"\e920"}.fa-film-canister-light:before{content:"\e921"}.fa-cabinet-filing-light:before{content:"\e922"}.fa-quote-left-light:before{content:"\e923"}.fa-sticky-note-light:before{content:"\e924"}.fa-newspaper-light:before{content:"\e925"}.fa-comment-lines-light:before{content:"\e926"}.fa-comment-light:before{content:"\e927"}.fa-sd-card-light:before{content:"\e928"}.fa-images-light:before{content:"\e929"}.fa-image-light:before{content:"\e92a"}.fa-newspaper-duotone .path1:before{content:"\e92b";color:#000;opacity:.4}.fa-newspaper-duotone .path2:before{content:"\e92c";margin-left:-1.125em;color:#000}.fa-comment-duotone:before{content:"\e92d"}.fa-sticky-note-duotone .path1:before{content:"\e92e";color:#000;opacity:.4}.fa-sticky-note-duotone .path2:before{content:"\e92f";margin-left:-.875em;color:#000}.fa-image-polaroid-duotone .path1:before{content:"\e930";color:#000;opacity:.4}.fa-image-polaroid-duotone .path2:before{content:"\e931";margin-left:-.875em;color:#000}.fa-bookmark-duotone .path1:before{content:"\e932";color:#000;opacity:.4}.fa-bookmark-duotone .path2:before{content:"\e933";margin-left:-.75em;color:#000}.fa-quote-left-duotone .path1:before{content:"\e934";color:#000;opacity:.4}.fa-quote-left-duotone .path2:before{content:"\e935";margin-left:-1em;color:#000}.fa-code-branch:before{content:"\e937"}.fa-code-merge:before{content:"\e938"}.fa-code:before{content:"\e939"}.theme-darkest{color:#0a0a0a}.theme-darker{color:#333}.theme-dark{color:dimgray}.theme-darkest50{color:rgba(10,10,10,.5)}.theme-light{color:#bbb}.theme-darker40{color:rgba(30,30,30,.4)}.theme-lighter{color:#eee}.theme-lightest{color:#fff}.theme-link{color:#c42127}.theme-darkest-bg{background-color:#0a0a0a}.theme-darker-bg{background-color:#333}.theme-dark-bg{background-color:dimgray}.theme-darkest50-bg{background-color:rgba(10,10,10,.5)}.theme-light-bg{background-color:#bbb}.theme-darker40-bg{background-color:rgba(30,30,30,.4)}.theme-lighter-bg{background-color:#eee}.theme-lightest-bg{background-color:#fff}.theme-link-bg{background-color:#c42127}*{box-sizing:border-box}html{font-size:62.5%;}body{margin:0;padding:0;font-size:2.3rem;line-height:1.45;background-color:#eee;color:#333}body,article.article .content,article.note .content,.font-serif{font-family:"IBM Plex Serif",serif;font-weight:450}body.dark-bg,div.body.dark-bg{background-color:#0a0a0a;color:#bbb}h1,h2,h3,h4,h5,h6{font-family:"IBM Plex Sans Condensed",-system-ui,-apple-system,sans-serif;font-weight:600}footer,.post-time,figcaption,div.archive,div.blognav,.collection-list li.archive-link,.article-list .quote,.article-list .bookmark,.content-container .sidebar,#now .attribution,.font-sansserif{font-family:"IBM Plex Sans",-system-ui,-apple-system,sans-serif;font-weight:400}pre,code,.font-code{font-family:"IBM Plex Mono",monospace}h1,h2,h3,h4{margin:1.414em 0 .5em;line-height:1.2em;color:#333}h1{font-size:2.5em;line-height:1em}h2{font-size:1.5em}.dark-bg h1,.dark-bg h2,.dark-bg h3,.dark-bg h4{color:#eee}h1{margin-top:.5em}p{margin-block-start:1em;margin-block-end:1em;margin-bottom:1.3em}a{color:#c42127;text-decoration:underline}.dark-bg a{color:#c42127}em{font-style:italic}strong{font-weight:bold}small,.font-small,article footer,nav.page-nav,nav.menu,body>footer{font-size:.8em}dl{margin-block-end:1em}.content-container,.content-container.normal{max-width:100rem}.content-container.full{max-width:100%}.content-container.narrow{max-width:85rem}.content-container{--content-container-multiplier: calc(60rem - 100%);display:flex;flex-flow:row wrap;justify-content:space-between;margin-left:auto;margin-right:auto;padding-left:.5em;padding-right:.5em}.content-container.columns{--content-container-columns-column-gap: 3rem;column-gap:var(--content-container-columns-column-gap)}body>footer.content-container{justify-content:start;column-gap:1rem}body>footer .footer-item{flex-grow:0;flex-basis:min-content}body>footer .footer-item.copyright{flex:1 1;text-align:right}#frontpage .content-container.columns .flex-item-50{min-width:calc(50% - var(--content-container-columns-column-gap))}.flex-item{flex-basis:calc(var(--content-container-multiplier)*999);flex-grow:1;width:100%}.flex-item-25{flex-grow:2.5}.flex-item-30{flex-grow:3}.flex-item-33{flex-grow:3.33}.flex-item-40{flex-grow:4}.flex-item-50{flex-grow:5}.flex-item-60{flex-grow:6}.flex-item-70{flex-grow:7}.flex-item-100{flex-grow:10;min-width:100%}article li{list-style-type:disc}article ul{padding-left:1.2em}body>header{padding-top:.5em;padding-bottom:.5em}body>footer{margin:3em 0 2em 0;color:#bbb}body.dark-bg>footer,div.body.dark-bg>footer{color:dimgray}body>footer a,body.dark-bg>footer a,div.body.dark-bg>footer a{color:inherit}body>footer a:hover{color:#0a0a0a}body.dark-bg>footer a:hover,div.body.dark-bg>footer a:hover{color:#fff}body>footer{border-top:1px solid;padding-top:1em}section{margin-top:1em;margin-bottom:2em}figure{margin:0;padding:0}article>figure{margin-top:1em}figure img{width:100%;height:auto}figure figcaption{margin-top:-.3em;font-style:italic;font-size:.8em;color:dimgray}.inline.icon{width:1em;margin-right:.3em;vertical-align:-.1em}blockquote{border-left:.3em solid dimgray;font-style:italic;margin-left:.2em;padding:.2em 0 .3em 1em}blockquote p:first-child{margin-top:0}blockquote p:last-child{margin-bottom:0}pre{margin:0 0 1em 0}pre,code,pre code,textarea.pubkey{font-size:.8em}pre{border:1px dotted #333;padding:.4em .6em;overflow:auto;border-radius:.3em;tab-size:4}pre::-webkit-scrollbar{-webkit-appearance:none;width:7px;height:7px}pre::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgba(10,10,10,.5)}.fullpage .image,.banner .image,.banner picture img{display:block;opacity:1;z-index:-1;position:absolute;left:0px;top:0px;width:100vw;height:100%;background-size:cover;}.banner picture img{object-fit:cover;object-position:center center}.banner{position:relative;height:500px;overflow-x:hidden;overflow-y:hidden}.banner .head-title{position:relative;height:100%}.banner .head-title .title{position:absolute;bottom:1em}.banner .head-title h1{margin-bottom:0}.banner+.content-container p:first-child{margin-top:3em}.content-container .sidebar{color:dimgray;font-size:.8em;line-height:1.6em}.content-container .sidebar a{color:inherit}.content-container .sidebar a:hover{color:#0a0a0a}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(#0a0a0a, 0);border:0}.shell{background-color:#333;color:#eee;white-space:pre-line;display:block;width:100%}.shell .shell-comment{color:#bbb}textarea.pubkey{width:100%;display:block;white-space:pre-line;border-radius:.3em;border:1px dotted #333;padding:.4em .6em;overflow:auto}.taxonomy-term-list a{margin-right:.5em}li>.li-icon-bullet{display:inline-block;width:1.8em;margin-left:-1.93em;text-align:right;padding-right:.6em}ul.li-icon-bullet{margin-left:1.2em}.collection-list li{margin-bottom:.2em}.collection-list .metadata:not(:nth-child(2)){margin-left:1em}.collection-list .post-type-icon,.collection-list .metadata{font-size:.8em;color:dimgray}.collection-list .metadata>*{margin-right:.5em}.collection-list li.archive-link{margin-top:.7em}.null-icon{background-color:#c42127;width:1em;height:1em;display:inline-block}article a.u-author{display:hidden}nav.page-nav{display:flex;flex-flow:row wrap;justify-content:space-between;width:100%}.breadcrumbs{display:flex;flex-wrap:wrap;column-gap:.4em}.breadcrumbs,.menutoggle,.menutoggle::after{font-family:"IBM Plex Mono",monospace}.breadcrumbs .logotype{display:inline-block;line-height:1;text-transform:uppercase;color:#0a0a0a;margin-left:.2em}.dark-bg .breadcrumbs .logotype,.breadcrumbs.dark-bg .logotype{color:#fff}.breadcrumbs .crumb.root img.logo[src="/favicon.svg"]{object-fit:contain;object-position:-2.5px 3px;width:20px}nav.page-nav .menutoggle,nav.page-nav .menutoggle a{color:#333}.dark-bg nav.page-nav .menutoggle,nav.page-nav .menutoggle.dark-bg{color:#fff}nav.page-nav input.menutoggle{appearance:initial;border:0;margin:0;padding:0;outline:none;width:2rem;z-index:1;text-align:center;cursor:pointer}nav.page-nav input.menutoggle::after{content:"≡";display:block;width:100%;height:100%}nav.page-nav input.menutoggle:checked::after{content:"×"}nav.menu{--nav-menu-gap: 3rem;--nav-menu-row-gap: 1em;--nav-menu-display: flex;display:var(--nav-menu-display);flex-wrap:wrap;column-gap:var(--nav-menu-gap);row-gap:var(--nav-menu-row-gap);width:100%;flex:0 0 100%;font-family:"IBM Plex Mono",monospace;font-size:1em}nav.menu.bottom{margin-bottom:var(--nav-menu-row-gap)}nav.menu.top{padding-top:.5em;border-top:1px solid #bbb;display:none}.dark-bg nav.menu.top,.dark-bg nav.menu.top>a{color:#fff}nav.page-nav input.menutoggle:checked~nav.menu.top{display:var(--nav-menu-display)}nav.menu .nav-group{flex-basis:calc(var(--content-container-multiplier)*999);flex-grow:1;max-width:max-content;min-width:calc(20% - var(--nav-menu-gap))}nav.menu .nav-group.gallery{min-width:calc(70% - var(--nav-menu-gap));max-width:100%}nav.menu .nav-group.about{min-width:calc(30% - var(--nav-menu-gap));max-width:100%}nav.page-nav nav.menu{margin-top:1rem}nav ul.nav-group{list-style-type:none;padding:0}nav .nav-group{display:block}nav .nav-group>:first-child{font-weight:bold}nav .menu.top{justify-content:right}nav .menu.top .nav-group{min-width:auto}nav .top .nav-group>:first-child{font-weight:inherit;color:#0a0a0a}nav .top .nav-group,.dark-bg nav.menu.top .nav-group li a{color:#fff}@media (hover: hover){nav.menu.top .nav-group li a{text-decoration:none;border-bottom:1px solid rgba(0,0,0,0);transition:border-bottom-color .4s ease-in-out}nav.menu.top .nav-group li a:hover{border-bottom-color:inherit}}#error .article-list article{margin:0;margin-bottom:.6em}#error .article-list h1,#error .article-list p{display:inline}#error .article-list h1{font-size:1em}#error .article-list .current+.archived{margin-top:2em}.slideshow .slide,.slideshow .slide.next{display:none}.slideshow .slide.current{display:block}.slideshow .controls button{border:0;background:inherit;padding:0;height:1em;font-size:1.3em}.slideshow .controls button+button{margin-left:.1em}.slideshow .controls:hover{opacity:1}.dark-bg .slideshow .controls,.dark-bg .slideshow .controls button,.slideshow .dark-bg.controls,.slideshow .dark-bg.controls button{color:#fff}.slideshow .slide .main{position:absolute;top:5em;right:3em;margin-left:3em;max-width:30em;font-family:"IBM Plex Sans",-system-ui,-apple-system,sans-serif;text-align:right;color:#000}.dark-bg .slideshow .slide .main,.dark-bg .slideshow .slide .main h1{color:#fff}#about .contact-list,.sidebar-list{padding:0}#about .contact-list li,.sidebar-list li{list-style-type:none;margin-bottom:.2em}.no-bullets{padding-left:0}.no-bullets li{list-style-type:none}.hex-string .word{margin-right:.3em}#about div.me{background-color:#eee;border-radius:10px;margin-top:-8em;height:0;width:80%;padding-bottom:80%;position:relative}#about div.me img{display:block;width:100%;border-radius:10px;position:absolute;top:50%;left:50%;margin:-50% 0 0 -50%}#about .sidebar .name{font-size:1.3em;display:block;color:dimgray;text-decoration:none}#about .sidebar .tag{display:block;font-style:italic;margin-top:-1.6em}#about .sidebar .social{font-size:1.2em}#now .attribution{font-size:.5em;font-size:.5em;position:absolute;bottom:.3em;right:.3em;background-color:rgba(255,255,255,.5);border-radius:.5em;padding:.2em .5em}#now .attribution,#now .attribution a{color:#0a0a0a}#now .attribution .mapbox-logo{vertical-align:middle}div.blognav{margin-top:2em;width:100%}div.blognav .feedback,div.blognav .feedback a{color:#bbb}div.blognav .feedback{font-style:italic}div.blognav .fa-li{text-align:left;width:1em;margin:0;left:-1.6em;top:.05em}div.blognav .fa-ul{margin:.5em 1.6em}div.blognav,div.blognav a{color:#333}div.blognav div.related{margin-top:2em}article.quote div.content,.collection-list .post.quote,#frontpage .quote{font-style:italic;font-weight:300}article.quote p.author{padding-left:1.5em}article{width:100%;margin-top:0em}article div.header-image{height:15em;background-size:cover;overflow:hidden;content:"";display:block;border-radius:1rem;position:relative;margin-bottom:2em}.article-list article h2{margin-top:0}.article-list article+article{margin-top:3em}.article-list article div.header-image h2{position:absolute;bottom:0;padding:0 .5em}.article-list article div.header-image{height:11em}article h1 a,article h2 a{color:inherit}article h1{margin-bottom:0}article header{margin-bottom:3em}.article-list article header{margin-bottom:inherit}article header a{text-decoration:none}article.bookmark header a{text-decoration:underline}article.quote blockquote{border:none;padding-left:inherit}article.quote .content p:first-child:before,#frontpage .article-list .quote a:before{content:open-quote}article.quote .content p:last-child:after,#frontpage .article-list .quote a:after{content:close-quote}article .quote .author{color:#000}article footer,article footer a{color:#bbb}article footer{margin-top:2em}article footer p{margin-bottom:.5em;margin-top:0em}dl.key-value-table{display:grid;grid-template-columns:1em auto;gap:0 .5em;grid-auto-rows:auto}dl.key-value-table dt{grid-column-start:1}dl.key-value-table dd{grid-column-start:2;margin-inline-start:0px;overflow:hidden}dl.key-value-twoline dt{color:dimgray}dl.key-value-twoline dd{margin-inline-start:0px;margin-bottom:.5em}dd a.extlink{width:100%;overflow:hidden;text-overflow:ellipsis;display:inline-block;white-space:nowrap}