ul{list-style-type:"-  "}body>section{margin:0;padding:1rem 0;background-color:#fff}section>article{margin:0 auto;max-width:60rem;padding:0 1.15rem}body>footer{background-color:#f7f7f7;display:flex;flex-flow:wrap-reverse;justify-content:space-between;overflow-x:auto;padding:0 1.15rem}body>footer ul{display:inline-block;flex:none;margin:0;padding:0}body>footer li{display:inline-block;list-style:none;vertical-align:middle}body>footer a{display:inline-block;opacity:1;padding:0 0;text-decoration:none;font-style:italic}body>footer a,body>footer p{color:#444;font-family:ibm plex mono,monospace;font-size:.6rem;line-height:3em;margin:0}body>footer a:hover{text-decoration:underline}article{margin-bottom:4rem}article h1,article>h2,article>h3,article h4,article>h5,article>h6,article ol,article p,article ul,article pre{margin-left:auto;margin-right:auto;max-width:40rem}article img,article video{display:block;height:auto;margin-left:auto;margin-right:auto;max-width:100%}article .inline{height:1.75em;vertical-align:bottom;display:inline-block}article table{font-family:ibm plex mono,monospace;margin:2em auto;max-width:100%}article table a:after{padding-left:0}article .tables{display:flex;flex-flow:row wrap;justify-content:space-between;margin:2em auto}article .tables table{margin:0 1rem}article table td,article table th{padding:0 .5rem}article .links{display:flex;flex-wrap:wrap;justify-content:center;margin:.75em -1.5em}article .links a{margin:.75em 1.5em}article .links svg{color:#333;height:2em}hr{border:0;margin:3em auto;max-width:50%}hr::before{content:"...";display:block;font-weight:700;letter-spacing:1em;text-align:center}html{font-family:ibm plex serif,serif;font-size:5.625vw;font-weight:400}@media(min-width:320px){html{font-size:18px}}@media(min-width:1024px){html{font-size:20px}}@media print{html{font-size:14px;background-color:#fff!important}nav,footer,audio{display:none!important}}a{color:#000;transition:opacity 250ms ease;text-decoration:none}a:focus,a:hover{opacity:.8}article{line-height:1.75em}article ol,article p,article ul,article pre{margin-top:.5em;margin-bottom:2em}article a{font-style:italic}article a:after{content:"↗";padding-left:.1em}article a.noafter:after{content:"";padding-left:0}article li{padding-left:.25em}article ul li::marker{font-weight:500}h1,h2,h3,h4{font-family:alegreya sans,sans-serif;line-height:1.2em;margin-top:2em;margin-bottom:0}h1{line-height:1em}h4{opacity:.8}article>header{margin-bottom:2em}header h1{font-size:2em;margin-top:1em}header h4{font-size:1.2rem;font-weight:400;margin-top:.25em;opacity:.5;margin-bottom:1em}blockquote{max-width:40rem;margin-left:auto;padding-left:1em;margin-right:auto;font-style:italic;border-left:.125em solid #333}blockquote em,blockquote i{font-style:normal}aside blockquote{font-size:1.6em;line-height:1.4em;border:none;margin:2em auto;opacity:.8;padding:0 1em}aside{margin-bottom:2em}kbd{background-color:#f7f7f7;border:1px solid rgba(0,0,0,.3);border-radius:.2em;box-shadow:inset 0 1px rgba(255,255,255,.12),inset 0 -2px rgba(0,0,0,.15);display:inline-block;font-family:ibm plex mono,monospace;font-size:80%;line-height:1.5;margin:0 .2em;min-width:1em;padding:.125em .5em;text-align:center;white-space:nowrap}.author{font-family:ibm plex mono,monospace;font-size:.8em;line-height:1.5em;margin:1.5em auto;max-width:40rem}.author .avatar{background-color:#666;border:none;border-radius:50%;color:transparent;float:left;height:48px;margin-right:.5em;overflow:hidden;position:relative;vertical-align:middle;width:48px}.author .avatar::before{content:"";border-radius:50%;box-shadow:inset 0 0 0 1px rgba(0,0,0,.35),inset 0 0 0 2px rgba(255,255,255,.1),inset 0 2px rgba(255,255,255,.45),inset 0 -2px rgba(255,255,255,.15),0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);height:100%;position:absolute;width:100%}nav .avatar{background-color:#666;border:none;border-radius:50%;color:transparent;float:left;height:2.9em;margin-right:.5em;overflow:hidden;position:relative;vertical-align:middle;width:2.9em}nav .avatar::before{content:"";border-radius:50%;box-shadow:inset 0 0 0 1px rgba(0,0,0,.35),inset 0 0 0 2px rgba(255,255,255,.1),inset 0 2px rgba(255,255,255,.45),inset 0 -2px rgba(255,255,255,.15),0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);height:100%;position:absolute;width:100%}nav .avatar img{height:2.9em;width:2.9em}.author a{color:inherit;opacity:1;text-decoration:none;font-style:normal}.author a:after{content:"";padding-left:0}.author a:hover{color:#000;text-decoration:underline}.author .name{font-weight:500;opacity:.8}.author .description{opacity:.67}.author .description::before{content:" : "}.author time{opacity:.8;font-size:.9em;line-height:1em}.author .read-time::before{display:inline-block;margin:0 .25em;content:" · "}code{background-color:#f7f7f7;border-radius:.25em;font-family:ibm plex mono,monospace;padding:.2em}.featured{border-radius:.5rem;color:inherit;display:block;font-size:0;opacity:1;padding:1rem;text-decoration:none;font-style:normal;transition:background-color 250ms ease,color 250ms ease}a.featured:hover{background:#f7f7f7}.featured header{margin-top:1em;display:inline-block;font-size:1rem;padding-left:1em;vertical-align:middle;width:100%}@media(min-width:600px){.featured header{width:50%}}@media(min-width:800px){.featured header{width:33.33%}}.featured header h2{margin-top:0}.featured header h3{font-weight:400;margin-top:.25em;opacity:.5;margin-bottom:1em}.featured header .author{max-width:100%}.featured .featured-image{background-color:#f7f7f7;background-origin:border-box;background-position:50%;background-size:cover;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;box-shadow:inset 0 0 0 1px rgba(255,255,255,5%),inset 0 1px rgba(255,255,255,.2),inset 0 -1px rgba(255,255,255,.1),0 1px 3px rgba(0,0,0,5%),0 1px 2px rgba(0,0,0,.1);display:inline-block;height:320px;margin-bottom:1rem;overflow:hidden;position:relative;vertical-align:middle;width:100%}@media(min-width:600px){.featured .featured-image{margin-bottom:0;width:50%}}@media(min-width:800px){.featured .featured-image{width:calc(66.66% - .66rem)}}.featured .featured-image img{left:50%;max-width:100%;position:absolute;top:50%;transform:translate(-50%,-50%)}@media(min-width:800px){.latest{font-size:0;margin-top:2rem}.latest .featured{padding:1rem}.latest .featured:nth-child(n+2){display:inline-block;vertical-align:top;width:33.33%}.latest .featured:nth-child(n+2) header{font-size:.8rem;padding:0;width:100%}.latest .featured:nth-child(n+2) header h4{margin-top:-1em}.latest .featured:nth-child(n+2) .featured-image{height:200px;margin-bottom:.5rem;width:100%}}figure{font-size:0;margin:2rem 0;position:relative;text-align:center}article figure p{max-width:100%}figure *{margin:0;max-width:100%}figure img,figure video{display:inline;transition:transform 250ms ease;vertical-align:middle}figure img:active,figure img:focus,figure video:active,figure video:focus{outline:none;position:relative;z-index:1}figure.embed{margin-left:auto;margin-right:auto;max-width:100%;padding-top:56.25%;position:relative;width:40rem}figure.embed iframe{border:none;height:100%;left:0;position:absolute;top:0;width:100%}figure figcaption{font-family:alegreya sans,sans-serif;font-size:.8rem;margin:1em auto 4em;opacity:.67;text-align:center}figure.third img,figure.third video{cursor:zoom-in;margin:1%;max-width:31.33%}figure.third img:focus,figure.third video:focus{cursor:zoom-out}figure.third img:nth-child(3n+1):active,figure.third img:nth-child(3n+1):focus,figure.third video:nth-child(3n+1):active,figure.third video:nth-child(3n+1):focus{transform:translateX(100%)scale(3)}figure.third img:nth-child(3n+2):active,figure.third img:nth-child(3n+2):focus,figure.third video:nth-child(3n+2):active,figure.third video:nth-child(3n+2):focus{transform:translateX(0)scale(3)}figure.third img:nth-child(3n+3):active,figure.third img:nth-child(3n+3):focus,figure.third video:nth-child(3n+3):active,figure.third video:nth-child(3n+3):focus{transform:translateX(-100%)scale(3)}figure.half img,figure.half video{cursor:zoom-in;margin:1%;max-width:48%}figure.half img:focus,figure.half video:focus{cursor:zoom-out}figure.half img:nth-child(odd):active,figure.half img:nth-child(odd):focus,figure.half video:nth-child(odd):active,figure.half video:nth-child(odd):focus{transform:translateX(50%)scale(2)}figure.half img:nth-child(even):active,figure.half img:nth-child(even):focus,figure.half video:nth-child(even):active,figure.half video:nth-child(even):focus{transform:translateX(-50%)scale(2)}figure.full-bleed img,figure.full-bleed video{left:50%;max-width:100vw;position:relative;transform:translateX(-50%);width:100vw}figure.constrained img,figure.constrained video{width:40rem}figure.circle img,figure.circle video{border-radius:50%}figure.card img,figure.card video{background-color:#f7f7f7;box-shadow:0 0 0 1px rgba(0,0,0,5%),0 3px 3px rgba(0,0,0,.22)}body>header{color:#f7f7f7;fill:#f7f7f7}body>header nav{background-color:#333;display:flex;font-size:0;justify-content:space-between;overflow-x:auto;padding:0 .5rem 0 0}body>header nav ul{display:inline-block;flex:none;margin:0;padding:0}body>header nav li{display:inline-block;list-style:none;vertical-align:middle}body>header nav a.first{padding-left:.25em;font-style:italic;font-family:alegreya sans,sans-serif}body>header nav a.active{font-weight:500}body>header nav a{color:#f7f7f7;display:inline-block;font-family:ibm plex mono,monospace;font-size:.85rem;line-height:2.9em;opacity:1;padding:.25rem .65rem;text-decoration:none;white-space:nowrap}body>header nav a:hover{opacity:.7}body>header nav span{color:#f7f7f7;display:inline-block;font-family:ibm plex mono,monospace;font-size:.85rem;line-height:2.9em;opacity:1;padding:.25rem .65rem;white-space:nowrap}body>header nav form{padding:.7rem .2rem;font-size:.85rem}body>header nav form input[type=search]{font-family:ibm plex mono,monospace;outline:none;background-color:#222;border:1px solid #00000020;border-radius:.3em;box-shadow:inset 0 1px 1px #00000010;color:#f7f7f7;padding:6px 6px 6px 1.4rem;width:300px;background-image:url(search.svg);background-position:0;background-repeat:no-repeat;background-size:contain}body>header nav form svg{position:absolute;margin:.4rem .3rem;z-index:255;fill:#f7f7f7}body>header nav svg{height:1em}body>header nav svg *{fill:inherit}body>header nav .logomark{line-height:0}body>header nav .logomark svg{height:auto}body>header nav.secondary{background:0 0;flex-wrap:wrap;padding:.5rem}body>header nav.secondary a{background-color:#fffc;color:#555;font-size:.7rem;padding:0 .65rem}body>header nav.secondary span{background-color:#fffc;color:#444;font-size:.7rem;padding:0 .65rem}body>header nav.secondary svg{background-color:#fffc;height:16px;fill:#555;margin:.4rem .3rem;position:absolute}aside.tags{margin:1em auto;max-width:40rem}.tag{background-color:#f7f7f7;border-radius:.25em;color:#222;display:inline-block;font-family:ibm plex mono,monospace;font-size:.75em;line-height:2em;margin:.125em;padding:0 .5em;text-decoration:none;font-style:normal}a.tag:after{content:"";padding-left:0}*{box-sizing:border-box}body,html{color:#333;fill:#333;margin:0;overflow-x:hidden}.blossom{background:repeat url(/blossom.png)}html{background-color:#f7f7f7}svg{fill:inherit}nav.pagination{font-size:0;margin:2rem auto;text-align:center}nav.pagination a{display:inline-block;font-size:1rem;font-family:alegreya sans,sans-serif;padding:1em}nav.pagination a.next::after{content:" »"}nav.pagination a.previous::before{content:"« "}.center{margin-left:auto;margin-right:auto;text-align:center}.button{border:1px solid;border-radius:.25em;font-family:ibm plex mono,monospace;padding:.5em 1em;text-decoration:none}pre{-webkit-text-size-adjust:none;background-color:#f7f7f7;border-radius:.25em;font-family:ibm plex mono,monospace;padding:.5em;line-height:1.2;overflow-x:auto}pre>code{padding:0}.hidden{display:none}button,select,.button{-webkit-appearance:none;-moz-appearance:none;appearance:none;user-select:auto;background-color:#f7f7f7;background-image:-webkit-gradient( linear,left top,left bottom,from(transparent),color-stop(50%,transparent),to(rgba(0,0,0,4%)) );background-image:-webkit-linear-gradient( top,transparent,transparent 50%,rgba(0,0,0,4%) );background-image:-o-linear-gradient( top,transparent,transparent 50%,rgba(0,0,0,4%) );background-image:linear-gradient( to bottom,transparent,transparent 50%,rgba(0,0,0,4%) );border:1px solid rgba(0,0,0,.2);border-radius:3px;-webkit-box-shadow:inset 0 0 0 1px rgba(255,255,255,5%),inset 0 1px 0 0 rgba(255,255,255,.45),inset 0 -1px 0 0 rgba(255,255,255,.15),0 1px 0 0 rgba(255,255,255,.15);box-shadow:inset 0 0 0 1px rgba(255,255,255,5%),inset 0 1px rgba(255,255,255,.45),inset 0 -1px rgba(255,255,255,.15),0 1px rgba(255,255,255,.15);color:#333;cursor:pointer;font-family:ibm plex mono,monospace;font-size:16px;margin:24px;outline:none;padding:16px 32px;text-align:center;text-decoration:none;text-shadow:0 1px rgba(255,255,255,.4);-webkit-transition:all 100ms ease-in;-o-transition:all 100ms ease-in;transition:all 100ms ease-in}button,.button{display:inline-block}button:focus,.button:focus{border-color:rgba(156,156,156,.8);-webkit-box-shadow:inset 0 0 0 1px rgba(255,255,255,5%),inset 0 1px 0 0 rgba(255,255,255,.45),inset 0 -1px 0 0 rgba(255,255,255,.15),0 3px 6px rgba(128,128,128,.16),0 3px 6px rgba(128,128,128,.23);box-shadow:inset 0 0 0 1px rgba(255,255,255,5%),inset 0 1px rgba(255,255,255,.45),inset 0 -1px rgba(255,255,255,.15),0 3px 6px rgba(128,128,128,.16),0 3px 6px rgba(128,128,128,.23);text-decoration:none}button:active,.button:active,button.active,.button.active{background-color:rgba(0,0,0,5%);background-image:none;border-color:rgba(0,0,0,.25);-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,5%),0 1px 0 0 rgba(255,255,255,.3);box-shadow:inset 0 0 0 1px rgba(0,0,0,5%),0 1px rgba(255,255,255,.3)}::selection{background-color:rgba(0,0,0,.1);color:#222;text-shadow:none}.primary ::selection,.primary::selection{background-color:rgba(255,255,255,.1);color:#f7f7f7;text-shadow:none}.gap{margin-right:.65rem}.hint{text-decoration:underline dotted}.warning{background-color:#f7f7f7;border-radius:.25em;color:#222;font-family:ibm plex mono,monospace;padding:1em 1.5em}h1 a.anchor,h2 a.anchor,h3 a.anchor,h4 a.anchor,h5 a.anchor,h6 a.anchor{opacity:0;text-decoration:none;font-style:normal;margin-left:.5em;font-family:ibm plex mono,monospace}h1 a.anchor:after,h2 a.anchor:after,h3 a.anchor:after,h4 a.anchor:after,h5 a.anchor:after,h6 a.anchor:after{content:"#";padding-left:0}h1:hover a.anchor,h2:hover a.anchor,h3:hover a.anchor,h4:hover a.anchor,h5:hover a.anchor,h6:hover a.anchor{opacity:.5}h1:hover a.anchor:hover,h2:hover a.anchor:hover,h3:hover a.anchor:hover,h4:hover a.anchor:hover,h5:hover a.anchor:hover,h6:hover a.anchor:hover,h1:hover a.anchor:focus,h2:hover a.anchor:focus,h3:hover a.anchor:focus,h4:hover a.anchor:focus,h5:hover a.anchor:focus,h6:hover a.anchor:focus{opacity:.4}