@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/dm-mono-latin-ext-400-normal.C2zvOubV.woff2)format("woff2"),url(/_astro/dm-mono-latin-ext-400-normal.1aZr6b2b.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/dm-mono-latin-400-normal.4GdczIuU.woff2)format("woff2"),url(/_astro/dm-mono-latin-400-normal.-0xN8mdc.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/dm-mono-latin-ext-500-normal.BtRyHRi6.woff2)format("woff2"),url(/_astro/dm-mono-latin-ext-500-normal.Dw3M13d8.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/dm-mono-latin-500-normal.DRMDZjhP.woff2)format("woff2"),url(/_astro/dm-mono-latin-500-normal.CN8Miw6E.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#0d0b1c;--ink:#ecebf7;--body:#a9a5c8;--soft:#9b97bc;--pre:#8f8bb0;--dim:#6d6993;--faint:#4f4c74;--rule:#23203d;--mint:#7fd8b4;--gap:1.6rem;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}html{background:var(--bg);font-size:clamp(14px,min(.9vw,1.7vh),20px)}body{min-height:100svh;color:var(--body);-webkit-font-smoothing:antialiased;font:1rem/1.75 DM Mono,ui-monospace,monospace}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:1px solid var(--mint);outline-offset:3px}h1,h2,p{margin:0;font-weight:400}#field{width:100%;height:100%;display:block;position:fixed;inset:0}.no-webgl #field{display:none}.no-webgl body{background-image:radial-gradient(#9a98e81a 1px,#0000 1.5px);background-size:10px 10px}.page{flex-direction:column;min-height:100svh;padding:2.1rem clamp(1.25rem,8.4vw,11rem) 3.6rem;display:flex;position:relative}.top{justify-content:space-between;align-items:baseline;font-size:.86rem;display:flex}.home{color:var(--ink);font-weight:500}.home:hover{color:var(--mint)}.top nav{gap:1.15rem;display:flex}.top nav a{color:var(--dim)}.top nav a:hover{color:var(--ink)}.top nav a.on{color:var(--mint)}.stage{flex-direction:column;flex:1;display:flex}.main{width:min(30rem,100%);margin-block:auto;padding-block:2.5rem}@keyframes page-out{to{opacity:0}}@keyframes page-in{0%{opacity:0;transform:translateY(.4rem)}}::view-transition-group(stage){animation:none}@media (prefers-reduced-motion:reduce){::view-transition-old(stage),::view-transition-new(stage){animation-duration:10ms!important;animation-delay:0s!important}}.hero{font-size:1rem}.hero .pre{color:var(--pre);margin-bottom:.9rem;display:block}.hero .word{font-size:6.1rem}.intro{margin-top:var(--gap)}.intro em{color:var(--ink);font-style:normal;font-weight:500}.more{margin-top:calc(var(--gap) - .35rem);color:var(--dim);font-size:.86rem;display:inline-block}.more:hover{color:var(--mint)}.hello .word{display:block}.title{margin-bottom:var(--gap);font-size:4.4rem}.lede a{color:var(--mint)}.lede a:hover{color:var(--ink)}.proj{padding:.6rem 0;display:block}.proj:first-child,.rows .row:first-child{padding-top:0}.proj .name{color:var(--ink);font-size:1.07rem;font-weight:500}.proj .meta{color:var(--dim);margin-left:.6rem;font-size:.82rem;position:relative;top:-.09rem}.proj .pd{color:var(--soft);margin-top:.2rem;font-size:.9rem;line-height:1.6;display:block}.proj:hover .name{color:var(--mint)}.rows .row{grid-template-columns:5.4rem 1fr;gap:1rem;padding:.45rem 0;display:grid}.rows .when{color:var(--dim)}.rows a.what{color:var(--ink);border-bottom:1px solid var(--rule);justify-self:start}.rows a.what:hover{color:var(--mint);border-color:var(--mint)}.word{cursor:pointer;width:var(--w0);height:var(--h);transition:width .5s cubic-bezier(.6,0,.2,1) .3s;position:relative}.word i{width:var(--s);height:var(--s);box-sizing:border-box;transform-origin:0 0;transform:translate(calc(var(--x0) * 1em), calc(var(--y0) * 1em));transition:transform .6s cubic-bezier(.5,0,.2,1),background-color .3s,border-color .3s,opacity .3s;transition-delay:var(--dr);border:1px solid #9a98e873;position:absolute;top:0;left:0}.word i.on{background:var(--mint);border-color:var(--mint)}.word i.extra{opacity:0}[data-name=bit] .word{width:var(--w1);transition-delay:80ms}[data-name=bit] .word i{transform:translate(calc(var(--x1) * 1em), calc(var(--y1) * 1em)) scale(var(--k));background:var(--mint);border-color:var(--mint);opacity:1;transition-delay:var(--d), calc(var(--d) + .25s), calc(var(--d) + .25s), var(--d)}@media (prefers-reduced-motion:reduce){.hello *{transition-duration:10ms!important;transition-delay:0s!important}}@media (width<=760px){.page{padding:1.4rem 1.25rem 1.6rem}.top nav{gap:.9rem}.main{padding-block:2.5rem 1.5rem}.hero .word{font-size:4.6rem}.title{font-size:3.6rem}.rows .row{grid-template-columns:1fr;gap:0}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}
