@font-face{font-family:Aurora Monaco;src:url(/fonts/Monaco.otf)format("opentype");font-weight:400;font-style:normal;font-display:swap}:root{--bg:#05060b;--text:#d9d9d9;--text-secondary:#cbc6e6;--text-disabled:#8b8c91;--gray:#3e4151;--delimiter:#5a5a62;--blue:#73bff9;--purple:#d2befb;--orange:#f5ba60;--success:#dff3ac;--error:#edb3b6;--font:"Aurora Monaco", "Monaco", "Menlo", "JetBrains Mono", "SF Mono", ui-monospace, monospace;--size:16px;--margin-x:50px;--margin-top:30px;--row:30px;--header-row:40px;--section-gap:20px;--column:900px;--fade:.1s linear}*,:before,:after{box-sizing:border-box}html{background:var(--bg);color:var(--text);font:400 var(--size) / var(--row) var(--font);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}body{padding:var(--margin-top) var(--margin-x) 0;margin:0}h1,h2,p,dl,dd,ul{font:inherit;margin:0;padding:0}::selection{background:var(--purple);color:var(--bg)}a,button{color:var(--text-disabled);font:inherit;cursor:pointer;transition:color var(--fade);background:0 0;border:0;padding:0;text-decoration:none}a:hover,a:focus-visible,button:hover,button:focus-visible{color:var(--text)}:focus-visible{outline:1px solid var(--delimiter);outline-offset:4px}.page{max-width:var(--column);margin:0 auto}.top{justify-content:space-between;align-items:flex-start;gap:var(--section-gap) 4ch;flex-wrap:wrap;display:flex}.top-right{height:var(--header-row);align-items:center;gap:2ch;display:flex}.lang{line-height:var(--header-row)}.icon{display:flex}.icon svg{fill:currentColor;width:22px;height:22px}h1{font-size:32px;line-height:var(--header-row)}h1 a,h1 a:hover{color:var(--text)}.subtitle{color:var(--text-disabled)}.section{margin-top:calc(var(--row) + var(--section-gap))}.section>h2{line-height:var(--header-row);color:var(--text-secondary);margin:0 0 10px -1ch}.row{min-height:var(--row);justify-content:space-between;gap:2ch;display:flex}.row dd{text-align:right}.projects{list-style:none}.projects li+li{margin-top:var(--section-gap)}.project{color:var(--text-disabled);display:block;position:relative}.project:before{content:"";top:calc(var(--row) / 2 - 4px);background:var(--gray);width:8px;height:8px;transition:background-color var(--fade);border-radius:50%;position:absolute;left:-22px}.project-head{justify-content:space-between;gap:2ch;display:flex}.project-name{color:var(--text);transition:color var(--fade)}.project-meta{color:var(--text);gap:2ch;display:flex}.year{margin-left:2ch}.project-desc{transition:color var(--fade);display:block}.project:hover:before,.project:focus-visible:before{background:var(--accent)}.project:hover .project-name,.project:focus-visible .project-name{color:var(--accent)}.project:hover .project-desc,.project:focus-visible .project-desc{color:var(--text)}.back{margin-top:calc(var(--row) + var(--section-gap));display:inline-block}.back+.section{margin-top:var(--section-gap)}.stack{gap:2ch;display:flex}.tech{align-items:center;gap:1ch;display:inline-flex}.tech svg{width:16px;height:16px;fill:var(--tech)}.tech-rust{--tech:#dea584}.tech-ts{--tech:#7fb0e8}.tech-cpp{--tech:#9cbfe6}.tech-vulkan{--tech:#e58a8d}.tech-python{--tech:#f2d16b}h2 .accent{color:var(--accent)}.body{margin-top:var(--section-gap)}.shot{width:100%;height:auto;margin:calc(var(--section-gap) * 2) 0;display:block}@media (width<=700px){:root{--margin-x:24px}h1{font-size:26px}.project:before{width:6px;height:6px;left:-16px;top:calc(var(--row) / 2 - 3px)}}@media (prefers-reduced-motion:reduce){*,:before{transition:none!important}}.place{align-items:center;gap:1.5ch;display:flex}.flag{flex:none;width:21px;height:14px}
