:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--standard-opacity:.7;--text:#000;--text-faded:hwb(from var(--text) h w b / var(--standard-opacity));--text-h:#000;--bg:#fff;--border:#166057;--accent:#e76f51;--surface:#f5f9f9;--sans:"Inconsolata", ui-monospace, Consolas, monospace;--mono:ui-monospace, Consolas, monospace;--heading:"Moderustic", system-ui, "Segoe UI", Roboto, sans-serif;--body:"Roboto", system-ui, "Segoe UI", Helvetica, Arial, sans-serif;font:17px/1.6 var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--text:#f5f9f9;--text-faded:hwb(from var(--text) h w b / var(--standard-opacity));--text-h:#fafafa;--bg:#18181b;--border:#cbffdc;--accent:#32b2bb;--surface:#0d3135}}body{margin:0}#root{flex-direction:column;max-width:52em;min-height:100vh;margin:0 auto;padding:0 2em;display:flex}h1,h2{color:var(--text-h);font-family:var(--heading);font-weight:600;line-height:1.25}p,.markdown-body,.bio-info{font-family:var(--body)}.markdown-body table{border-collapse:collapse;width:100%;margin:1em 0}.markdown-body th,.markdown-body td,.markdown-body blockquote{border:1px solid var(--border);text-align:left;padding:.5em .75em}.markdown-body th,.markdown-body blockquote{background:var(--surface)}.bio-header{flex-wrap:wrap;grid-template-columns:150px auto;gap:1em;display:grid}.bio-status{text-wrap:nowrap}.bio-image{background-color:var(--surface);border-radius:1em;width:121px;height:154px;margin:auto;padding:.5em}.bio-intro{grid-column:1/3}@media screen and (width>=550px){.bio-intro{grid-area:2/2/3/3}.bio-image{grid-row:1/3}}header{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;margin-bottom:1em;display:flex}header>h1{position:relative}main{margin-bottom:auto}footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;margin-top:1em;margin-bottom:1em;padding:1em 0;display:flex}footer small{color:var(--text-faded)}nav{gap:20px;display:flex}nav a{color:var(--text);font-weight:500;text-decoration:none}nav a.active,nav a:hover,a{color:var(--accent)}.project-list{flex-flow:wrap;gap:2em;padding:0;list-style:none;display:flex}.project-list>li{background-color:var(--surface);border-radius:1em;flex-direction:column;gap:2px;max-width:13.5em;padding:1em;transition:box-shadow .15s,transform .15s;display:flex;position:relative}.project-list>li:hover{transform:translateY(-2px);box-shadow:0 4px 14px #0000001f}.project-list>li:focus-within{outline:2px solid var(--accent);outline-offset:2px}.project-list>li>h3{font-family:var(--heading);margin:0;font-size:1.15em;font-weight:500}.stretched-link{color:inherit;text-decoration:none}.stretched-link:after{content:"";position:absolute;inset:0}.project-list>li>.project-meta{color:var(--text-faded);font-size:.9em}.project-list>li>p{margin-bottom:auto}.post-list{flex-direction:column;gap:1em;padding-inline:0;list-style-type:none;display:flex}.post-list>li{border-bottom-style:dashed;border-bottom-width:thin;gap:2em;padding-bottom:1em;display:flex}.post-list>li:last-child{border-bottom:none}.post-list>li>span:first-child{min-width:5em}.post-list>li>span{flex-direction:column;display:flex}article>.article-header{flex-flow:wrap;justify-content:space-between;align-items:center;gap:1em;display:flex}article>.article-header>hgroup>h1,article>.article-header>.tech-icon-list{margin:0}article>.article-header>.back-to-project{background-color:var(--surface);border-radius:1em;padding:0 1em;position:relative}article>.article-header>.back-to-project>h3{margin:.5em}hgroup h2{margin:0}.highlight-green{color:#006400;background-color:#c4f7ca;border-radius:1em;padding:.25em .5em}article{margin-bottom:2em}pre{border-radius:6px;padding:12px;overflow-x:auto}ul.tech-icon-list{flex-wrap:wrap;gap:.2em;margin-top:1em;padding-inline-start:0;list-style-type:none;display:flex}svg.tech-icon{width:2.5em}.social-links{vertical-align:middle;gap:.35em;display:inline-flex}.social-link{color:inherit;display:inline-flex}.social-link:hover,.social-link:focus-visible{color:var(--accent)}.social-link svg{width:1.1em;height:1.1em}code{font-family:var(--mono)}pre{line-height:125%}td.linenos .normal,span.linenos{color:inherit;background-color:#0000;padding-left:5px;padding-right:5px}td.linenos .special,span.linenos.special{color:#000;background-color:#ffffc0;padding-left:5px;padding-right:5px}.codehilite .hll{background-color:#ffc}.codehilite{background:#f8f8f8}.codehilite .c{color:#3d7b7b;font-style:italic}.codehilite .err{border:1px solid red}.codehilite .k{color:green;font-weight:700}.codehilite .o{color:#666}.codehilite .ch,.codehilite .cm{color:#3d7b7b;font-style:italic}.codehilite .cp{color:#9c6500}.codehilite .cpf,.codehilite .c1,.codehilite .cs{color:#3d7b7b;font-style:italic}.codehilite .gd{color:#a00000}.codehilite .ge{font-style:italic}.codehilite .ges{font-style:italic;font-weight:700}.codehilite .gr{color:#e40000}.codehilite .gh{color:navy;font-weight:700}.codehilite .gi{color:#008400}.codehilite .go{color:#717171}.codehilite .gp{color:navy;font-weight:700}.codehilite .gs{font-weight:700}.codehilite .gu{color:purple;font-weight:700}.codehilite .gt{color:#04d}.codehilite .kc,.codehilite .kd,.codehilite .kn{color:green;font-weight:700}.codehilite .kp{color:green}.codehilite .kr{color:green;font-weight:700}.codehilite .kt{color:#b00040}.codehilite .m{color:#666}.codehilite .s{color:#ba2121}.codehilite .na{color:#687822}.codehilite .nb{color:green}.codehilite .nc{color:#00f;font-weight:700}.codehilite .no{color:#800}.codehilite .nd{color:#a2f}.codehilite .ni{color:#717171;font-weight:700}.codehilite .ne{color:#cb3f38;font-weight:700}.codehilite .nf{color:#00f}.codehilite .nl{color:#767600}.codehilite .nn{color:#00f;font-weight:700}.codehilite .nt{color:green;font-weight:700}.codehilite .nv{color:#19177c}.codehilite .ow{color:#a2f;font-weight:700}.codehilite .w{color:#bbb}.codehilite .mb,.codehilite .mf,.codehilite .mh,.codehilite .mi,.codehilite .mo{color:#666}.codehilite .sa,.codehilite .sb,.codehilite .sc,.codehilite .dl{color:#ba2121}.codehilite .sd{color:#ba2121;font-style:italic}.codehilite .s2{color:#ba2121}.codehilite .se{color:#aa5d1f;font-weight:700}.codehilite .sh{color:#ba2121}.codehilite .si{color:#a45a77;font-weight:700}.codehilite .sx{color:green}.codehilite .sr{color:#a45a77}.codehilite .s1{color:#ba2121}.codehilite .ss{color:#19177c}.codehilite .bp{color:green}.codehilite .fm{color:#00f}.codehilite .vc,.codehilite .vg,.codehilite .vi,.codehilite .vm{color:#19177c}.codehilite .il{color:#666}@media (prefers-color-scheme:dark){pre{line-height:125%}td.linenos .normal,span.linenos{color:#37474f;background-color:#263238;padding-left:5px;padding-right:5px}td.linenos .special,span.linenos.special{color:#607a86;background-color:#263238;padding-left:5px;padding-right:5px}.codehilite .hll{background-color:#2c3b41}.codehilite{color:#eff;background:#263238}.codehilite .c{color:#546e7a;font-style:italic}.codehilite .err{color:#ff5370}.codehilite .esc{color:#89ddff}.codehilite .g{color:#eff}.codehilite .k{color:#bb80b3}.codehilite .l{color:#c3e88d}.codehilite .n{color:#eff}.codehilite .o,.codehilite .p{color:#89ddff}.codehilite .ch,.codehilite .cm,.codehilite .cp,.codehilite .cpf,.codehilite .c1,.codehilite .cs{color:#546e7a;font-style:italic}.codehilite .gd{color:#ff5370}.codehilite .ge{color:#89ddff}.codehilite .gr{color:#ff5370}.codehilite .gh,.codehilite .gi{color:#c3e88d}.codehilite .go{color:#546e7a}.codehilite .gp{color:#ffcb6b}.codehilite .gs{color:#ff5370}.codehilite .gu{color:#89ddff}.codehilite .gt{color:#ff5370}.codehilite .kc{color:#89ddff}.codehilite .kd{color:#bb80b3}.codehilite .kn{color:#89ddff;font-style:italic}.codehilite .kp{color:#89ddff}.codehilite .kr,.codehilite .kt{color:#bb80b3}.codehilite .ld{color:#c3e88d}.codehilite .m{color:#f78c6c}.codehilite .s{color:#c3e88d}.codehilite .na{color:#bb80b3}.codehilite .nb{color:#82aaff}.codehilite .nc{color:#ffcb6b}.codehilite .no{color:#eff}.codehilite .nd{color:#82aaff}.codehilite .ni{color:#89ddff}.codehilite .ne{color:#ffcb6b}.codehilite .nf,.codehilite .nl{color:#82aaff}.codehilite .nn{color:#ffcb6b}.codehilite .nx{color:#eff}.codehilite .py{color:#ffcb6b}.codehilite .nt{color:#ff5370}.codehilite .nv{color:#89ddff}.codehilite .ow{color:#89ddff;font-style:italic}.codehilite .w{color:#eff}.codehilite .mb,.codehilite .mf,.codehilite .mh,.codehilite .mi,.codehilite .mo{color:#f78c6c}.codehilite .sa{color:#bb80b3}.codehilite .sb,.codehilite .sc{color:#c3e88d}.codehilite .dl{color:#eff}.codehilite .sd{color:#546e7a;font-style:italic}.codehilite .s2{color:#c3e88d}.codehilite .se{color:#eff}.codehilite .sh{color:#c3e88d}.codehilite .si{color:#89ddff}.codehilite .sx{color:#c3e88d}.codehilite .sr{color:#89ddff}.codehilite .s1{color:#c3e88d}.codehilite .ss,.codehilite .bp{color:#89ddff}.codehilite .fm{color:#82aaff}.codehilite .vc,.codehilite .vg,.codehilite .vi{color:#89ddff}.codehilite .vm{color:#82aaff}.codehilite .il{color:#f78c6c}}
