:root{--black: #1d1e20;--red: #a35353;--green: #b4bc68;--yellow: #f1c675;--blue: #81a3bf;--magenta: #b394ba;--cyan: #8abeb7;--white: #c5c9c7;--dblue: #164aba;--bblack: #666666;--bred: #d44f53;--bgreen: #b8cb4a;--byellow: #e6c546;--bblue: #7aa6da;--bmagenta: #c297d9;--bcyan: #70c0b1;--bwhite: #eaebeb;--width: 950px;--width-left: 170px;--width-right: 782px;--mobile-bp: 768px;--ease-out-quart: cubic-bezier(.165, .84, .44, 1);--ease-out-cubic: cubic-bezier(.215, .61, .355, 1);text-rendering:optimizeSpeed}.skip-link{position:absolute;left:-9999px;top:0;z-index:9999;padding:8px 16px;background:var(--black);color:var(--white);text-decoration:none;font-family:monospace;font-size:14px}.skip-link:focus{left:8px;top:8px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.inner>h1{font-size:1.5em;margin:.83em 0}[id]{scroll-margin-top:20px}html,body{margin:0;padding:0;background-color:var(--blue);font-family:monospace;font-size:14px;font-weight:400;line-height:1.4;text-size-adjust:none;overflow-x:hidden;-webkit-font-smoothing:antialiased}body{min-height:100vh;display:grid;grid-template-rows:min-content 1fr min-content}#wrapper{display:flex;flex-direction:column;width:100%;align-items:center}footer,#head{width:var(--width)}footer{margin-top:-25px}footer>div{text-align:center}header{text-align:center;color:var(--black)}header>h1{margin-top:0}header>h3{margin-bottom:0}#content{width:var(--width);display:flex;align-items:stretch;margin-bottom:30px}#left{display:flex;min-width:150px;max-width:150px}#left>nav{display:block;width:100%;padding:15px 7px!important;height:calc(100% - 25px)}#logo{width:100%;display:block;top:0;margin:-25px auto -10px!important}#left ul,#left li{list-style:none;padding:0;margin:0;text-indent:0}.left-links{display:block;width:100%;margin:2px 0}#left-buttons{padding-bottom:10px!important}#left-buttons>li{text-align:center}#right{width:var(--width-right);min-width:var(--width-right);max-width:var(--width-right);display:flex;flex-direction:column;margin-left:25px}#main>div{margin-top:14px;max-height:calc(100% - 25px)!important;height:calc(100% - 25px)!important}#main{width:var(--width-right);flex:1;margin-bottom:0!important}#bottom{width:var(--width)}#touhous{margin-top:15px;display:flex;flex-direction:row-reverse;flex-wrap:nowrap;width:var(--width);text-align:right;overflow:hidden;text-overflow:clip;white-space:nowrap}.title{margin:0 auto 20px;text-align:center;font-size:35px}.subtitle{width:100%;text-align:left;font-size:20px;font-weight:500;text-justify:newspaper;margin-bottom:5px}.title_s{margin-bottom:3px;display:inline;background-image:linear-gradient(var(--black),var(--black));background-size:0% 1px;background-position:0 100%;background-repeat:no-repeat;transition:background-size .2s var(--ease-out-cubic)}a.nostyle.post-link{display:block}@media(hover:hover)and (pointer:fine){a.nostyle:hover .title_s{background-size:100% 1px}}.tags{display:inline}.table-name{width:5.5em;vertical-align:top}.code-comparison{table-layout:fixed;width:100%}code.comparison{font-size:14px!important}.image,.image-center{max-width:min(100%,calc(var(--width-right) - 4em - 2px));border-color:var(--black);border-width:13px;object-fit:contain}.image-center{display:block;margin-left:auto;margin-right:auto}.text{-webkit-hyphens:auto;hyphens:auto}.hoverable{text-decoration:none}a.btn-light{text-decoration:none;color:var(--red);transition:color .15s ease,background-color .15s ease}a.btn-light:focus,a.btn-light:hover{text-decoration:none;color:var(--white);background-color:var(--red)}a.btn-blue{text-decoration:none;color:var(--dblue);transition:color .15s ease,background-color .15s ease}a.btn-blue:focus,a.btn-blue:hover{color:var(--white);background-color:var(--dblue)}.left-links>li>a{display:block;width:100%;position:relative}@media(hover:hover)and (pointer:fine){.left-links>li>a:before{content:"> ";position:absolute;left:-1.2em;opacity:0;transition:opacity .12s ease,transform .12s var(--ease-out-cubic);transform:translate(-4px)}.left-links>li>a:hover:before{opacity:1;transform:translate(0)}}.projects-list{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.project-card{border:1px solid var(--bblack);padding:12px 14px;transition:border-color .18s ease,transform .18s var(--ease-out-cubic);animation:content-enter .4s var(--ease-out-quart) both}.project-card:nth-child(1){animation-delay:.1s}.project-card:nth-child(2){animation-delay:.18s}.project-card:nth-child(3){animation-delay:.26s}@media(hover:hover)and (pointer:fine){.project-card:hover{border-color:var(--dblue);transform:translate(3px)}}.project-header{margin-bottom:4px}.project-role{color:var(--bblack);font-size:13px}.project-summary{margin:6px 0;font-size:13px}.project-meta{margin-bottom:8px}.team2form-page{-webkit-hyphens:none;hyphens:none}.team2form-editor-label{display:block;margin:16px 0 6px;font-weight:700}.team2form-editor{display:block;width:100%;min-height:360px;box-sizing:border-box;border:1px solid var(--bblack);background:var(--bwhite);color:var(--black);font:inherit;line-height:1.35;padding:10px;resize:vertical;white-space:pre;overflow-wrap:normal;overflow-x:auto}.team2form-actions{display:flex;justify-content:flex-end;margin:10px 0 14px}.team2form-button{border:1px solid var(--bblack);background:var(--white);color:var(--dblue);cursor:pointer;font:inherit;font-weight:700;padding:6px 10px}.team2form-button:focus,.team2form-button:hover{background:var(--dblue);color:var(--white)}.team2form-button:disabled{color:var(--bblack);cursor:wait}.team2form-error{border:1px solid var(--red);color:var(--red);margin:12px 0;padding:8px 10px;overflow-wrap:anywhere}.team2form-results{margin-top:16px}.team2form-results h2{margin-bottom:8px}.team2form-team-list{display:flex;flex-direction:column;gap:10px}.team2form-team{border:1px solid var(--bblack);padding:10px 12px}.team2form-team-header{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.team2form-team-header h3{margin:0}.team2form-team-header span{color:var(--bblack)}.team2form-people{margin:8px 0 0;padding-left:20px}.team2form-search,.team2form-raw{margin-top:14px}.team2form-search pre,.team2form-raw pre{border:1px solid var(--bblack);background:var(--bwhite);color:var(--black);font:inherit;line-height:1.35;margin:6px 0 0;max-width:100%;overflow:auto;padding:10px}.project-tech{color:var(--bblack);font-size:12px}.project-links{display:flex;gap:12px}a.btn-badge{position:relative;display:inline-grid;grid-template-rows:auto auto;gap:1px;min-width:168px;padding:4px 8px 5px;text-decoration:none;color:#06111f;background:linear-gradient(180deg,#9fe1ff,#3490ff),repeating-linear-gradient(90deg,#ffffff2e 0 3px,#0000 3px 6px);border:1px solid #06111f;box-shadow:inset 1px 1px #ffffffb8,inset -1px -1px #05316e73,2px 2px #06111fcc;overflow:hidden;line-height:1;image-rendering:pixelated;text-shadow:1px 1px 0 rgba(255,255,255,.35);transition:transform .12s ease-out,box-shadow .12s ease-out,background-position .18s ease-out,filter .12s ease-out}a.btn-badge:before{content:"";position:absolute;inset:1px;background:linear-gradient(180deg,#ffffff52,#fff0 45%),repeating-linear-gradient(0deg,#ffffff14 0 1px,#0000 1px 3px);pointer-events:none}a.btn-badge:hover,a.btn-badge:focus{text-decoration:none;color:#06111f;will-change:transform;filter:saturate(1.08) brightness(1.03);transform:translateY(-1px);box-shadow:inset 1px 1px #fffc,inset -1px -1px #05316e7a,3px 3px #06111fd9}a.btn-badge:focus-visible{outline:1px dotted #06111f;outline-offset:2px}a.btn-badge:active{color:#06111f;transform:translate(1px,1px);box-shadow:inset 1px 1px #05316e73,inset -1px -1px #ffffff6b,1px 1px #06111fbf;transition:transform 0ms,box-shadow 0ms,filter 0ms}a.btn-badge .badge-title,a.btn-badge .badge-subtitle{position:relative;z-index:1;display:block}a.btn-badge .badge-title{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}a.btn-badge .badge-subtitle{font-size:9px;opacity:.88;letter-spacing:.03em}@media(prefers-reduced-motion:reduce){a.btn-badge,a.btn-badge:hover,a.btn-badge:active{transition:none;transform:none;filter:none}}.desktop-only{animation:ascii-appear .6s var(--ease-out-quart) both}@keyframes ascii-appear{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}#touhous img{transition:transform .2s var(--ease-out-cubic)}@media(hover:hover)and (pointer:fine){#touhous img:hover{transform:translateY(-4px)}}@media(hover:hover)and (pointer:fine){a.btn-light:active,a.btn-blue:active,a.nostyle:active{transform:scale(.97);transition:transform 0ms}}#main>.inner{animation:content-enter .4s var(--ease-out-quart) both;animation-delay:50ms}@keyframes content-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}#logo{transition:transform .25s var(--ease-out-cubic)}@media(hover:hover)and (pointer:fine){#logo:hover{transform:rotate(-3deg) scale(1.04)}}@media(prefers-reduced-motion:reduce){.desktop-only,#main>.inner,.title_s,.project-card,#touhous img,#logo,a.btn-light,a.btn-blue{animation:none;transition:none}}a.nostyle{color:var(--black);text-decoration:none}.box{box-shadow:11px 14px 0 var(--bblack);background-color:var(--white);position:relative}#content .box{align-self:stretch}.inner{border:1px solid var(--bblack);margin:15px 7px;padding:15px 20px;color:var(--black);box-sizing:border-box}#article-nav{width:100%}#article-nav td{width:50%;vertical-align:top}#article-nav td:nth-child(2){text-align:right}#article-nav h3{margin-top:0;margin-bottom:2px;text-decoration:none}#article-nav a{text-decoration:none;color:var(--black)}#article-nav div>a:hover{color:var(--bwhite)}#article-nav h3>a:hover{text-decoration:underline}h5{font-weight:lighter;font-style:italic}a.bigref{display:inline-block;font-size:2em;color:var(--dblue);text-decoration:none}a.bigref~h2{display:inline-block;line-break:strict}a.bigref~h2:after{display:block}a.ref{display:inline-block;font-size:1.17em;color:var(--dblue);margin-top:20px}a.ref~p{margin-top:5px}a.ref:hover{text-decoration:none;color:var(--white)!important;background-color:var(--dblue)!important}a.ref~h3{display:inline;line-break:strict;margin-bottom:0;margin-top:0;font-size:inherit;font-weight:700}a.ref~h3:after{display:block}.button{text-decoration:none}.button:before{content:"<"}.button:after{content:">"}article p{margin-bottom:3px}article ul{margin:0;list-style-type:none}article ul>li{text-indent:-15px}article ul>li:before{content:"- ";text-indent:-5px}article .mdx-content table{width:100%;border-collapse:collapse;margin:10px 0 12px;table-layout:fixed}article .mdx-content th,article .mdx-content td{border:1px solid var(--bblack);padding:6px 8px;vertical-align:top;text-align:left}article .mdx-content th{background:var(--bwhite);font-weight:700}article .mdx-content tr:nth-child(2n) td{background:#eaebeb47}article h2{display:block;margin-left:auto;width:100%;text-decoration:underline;float:right;right:0}article h2>a:after{content:"¶";float:left;position:absolute;left:0}.footnotes{margin-top:28px;padding-top:12px;border-top:1px solid var(--bblack);font-size:12px;color:var(--bblack)}.footnotes ol{padding-left:18px;margin:4px 0 0;list-style-type:decimal}.footnotes li{text-indent:0;margin-bottom:4px}.footnotes li:before{content:none}.footnotes li p{display:inline;margin:0}.footnotes .data-footnote-backref,a[data-footnote-backref]{text-decoration:none;font-size:10px;margin-left:2px}sup a[data-footnote-ref]{text-decoration:none;font-size:11px;color:var(--dblue)}sup a[data-footnote-ref]:hover{text-decoration:underline}figure[data-rehype-pretty-code-figure]{margin:7px 0;position:relative}figure[data-rehype-pretty-code-figure] pre{position:relative;margin:0;border-radius:4px;padding:14px;overflow-x:auto;font-family:Fira Code,Fira Mono,Menlo,Consolas,DejaVu Sans Mono,monospace;font-size:14px;line-height:21px;tab-size:4;-moz-tab-size:4}figure[data-rehype-pretty-code-figure] pre code{font-family:inherit;font-size:inherit;counter-reset:line}figure[data-rehype-pretty-code-figure] code>[data-line]:before{counter-increment:line;content:counter(line);display:inline-block;width:2em;margin-right:1em;text-align:right;color:#abb2bf80;border-right:1px solid rgba(171,178,191,.15);padding-right:.8em;-webkit-user-select:none;user-select:none}.code-toolbar{position:absolute;top:4px;right:3px;display:flex;gap:4px;opacity:0;transition:opacity .15s}figure[data-rehype-pretty-code-figure] pre:hover .code-toolbar,figure[data-rehype-pretty-code-figure] pre:focus-within .code-toolbar{opacity:1}@media(hover:none){.code-toolbar{opacity:1}}.code-toolbar-item{color:#828997;background:#3a3f4b;font-size:11px;font-family:inherit;padding:1px 4px;border-radius:3px;border:none;cursor:pointer;-webkit-user-select:none;user-select:none}.code-toolbar-item:hover{color:#abb2bf}.code-toolbar-item:focus-visible{color:#abb2bf;outline:1px solid #abb2bf;outline-offset:1px}:not(pre)>code{background:#282c34;color:#abb2bf;padding:2.8px 4.2px;border-radius:4px;font-size:13px}#mobile-nav,.mobile-hero{display:none}@media(max-width:768px){.desktop-only{display:none!important}.mobile-hero{display:block;margin:-5px 0 10px}.mobile-hero-prompt{font-size:12px;color:var(--bblack);margin-bottom:2px}.prompt-user{color:#4a7a2e}.prompt-at{color:var(--black)}.prompt-host{color:#2e7a72}.prompt-sep{color:var(--black)}.prompt-cmd{color:var(--black);font-weight:700}.mobile-ascii{font-size:14px;font-weight:700;color:var(--black);line-height:1.15;margin:4px 0 0;padding-bottom:6px;display:inline-block;overflow:hidden}footer,#head,#content,#bottom,#touhous{width:100%!important;max-width:100%}#content{flex-direction:column;padding:0 10px;box-sizing:border-box}#left{display:none!important}#right{width:100%!important;min-width:0!important;max-width:100%!important;margin-left:0!important}#main{width:100%!important}body{padding-bottom:60px}#mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:1000;height:56px;background:silver;border-top:2px solid #ffffff;border-left:2px solid #ffffff;border-right:2px solid #808080;border-bottom:2px solid #808080;box-shadow:inset 0 1px #dfdfdf}.mobile-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;text-decoration:none;color:var(--bblack);font-family:monospace;-webkit-tap-highlight-color:transparent;position:relative;border-top:2px solid #ffffff;border-left:2px solid #ffffff;border-right:2px solid #808080;border-bottom:2px solid #808080;background:silver;will-change:transform;transition:transform 60ms ease-out,box-shadow 60ms ease-out}.mobile-nav-item:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;height:100%;min-height:44px;min-width:44px}.mobile-nav-label{font-size:16px;font-weight:700;line-height:1}.mobile-nav-title{font-size:9px;text-transform:uppercase;letter-spacing:.05em;opacity:.7}.mobile-nav-item.active{color:var(--black);background:#b4b4b4;border-top:2px solid #808080;border-left:2px solid #808080;border-right:2px solid #dfdfdf;border-bottom:2px solid #dfdfdf;box-shadow:inset 1px 1px 4px #00000047;transform:scale(.97)}.mobile-nav-item.active .mobile-nav-label{color:var(--black);transform:translate(1px,1px)}.mobile-nav-item.active .mobile-nav-title{opacity:.9}.mobile-nav-item:active{border-top:2px solid #808080;border-left:2px solid #808080;border-right:2px solid #dfdfdf;border-bottom:2px solid #dfdfdf;box-shadow:inset 1px 1px 4px #00000059;background:#ababab;transform:scale(.95);transition:transform 0ms,box-shadow 0ms,background 0ms,border-color 0ms}.mobile-nav-item:active .mobile-nav-label{transform:translate(1px,1px);transition:transform 0ms}@media(prefers-reduced-motion:reduce){.mobile-nav-item,.mobile-nav-item:active,.mobile-nav-label{transition:none!important;transform:none!important}}#touhous{justify-content:center;padding:0 10px;box-sizing:border-box}#touhous img{max-height:70px}.box{box-shadow:5px 7px 0 var(--bblack)}.title{font-size:24px}.image,.image-center{max-width:100%}figure[data-rehype-pretty-code-figure] pre{font-size:12px;padding:10px}figure[data-rehype-pretty-code-figure] code>[data-line]:before{width:1.5em;margin-right:.5em;padding-right:.5em}footer{margin-top:-15px;padding:0 10px;box-sizing:border-box}#article-nav td{display:block;width:100%}#article-nav td:nth-child(2){text-align:left;margin-top:10px}.inner{padding:10px 12px;margin:10px 5px;overflow-x:auto;word-break:break-word}.code-comparison{display:block;overflow-x:auto}#wrapper{overflow-x:hidden;max-width:100vw}}
