@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}}.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}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-400-normal.6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/jetbrains-mono-latin-700-normal.BYuf6tUa.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-700-normal.D3wTyLJW.woff)format("woff")}:root{--paper:#f5f4f1;--ink:#222722;--ink-soft:#565d55;--leaf:#2f5c2c;--pad-mid:#c6dfae;--pad-deep:#a9d08c;--tile-pale:#e2e5db;--pad-r:280px;color-scheme:light}*,:before,:after{box-sizing:border-box}html,body{background:var(--paper);height:100%;color:var(--ink);margin:0}html{-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-family:JetBrains Mono,ui-monospace,monospace}body{cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;overflow:hidden}::selection{background:var(--pad-mid);color:var(--ink)}:focus-visible{outline:2px solid var(--leaf);outline-offset:3px}#world{width:100%;height:100%;display:block;position:fixed;inset:0}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.pond{pointer-events:none;margin:0;position:fixed;inset:0}.float{left:calc(var(--lx) * 100%);top:calc(var(--ly) * 100%);position:absolute;transform:translate(-50%,-50%)}@media (aspect-ratio<=105/100){.float{left:calc(var(--tx) * 100%);top:calc(var(--ty) * 100%)}}.float.is-live{will-change:transform;top:0;left:0}.hero{justify-items:start;gap:calc(var(--pad-r) * .055);display:grid}h1{font-size:calc(var(--pad-r) * .19);letter-spacing:-.03em;margin:0;font-weight:700;line-height:1.04}.line{white-space:nowrap;display:block}.role{color:var(--ink-soft);font-size:clamp(13px, calc(var(--pad-r) * .052), 16px);white-space:nowrap;margin:0}.actions{margin:calc(var(--pad-r) * .03) 0 0;font-size:clamp(14px, calc(var(--pad-r) * .06), 18px);white-space:nowrap;align-items:center;gap:1.1em;display:flex}.say-hi{pointer-events:auto;background:var(--pad-mid);min-height:44px;color:var(--ink);letter-spacing:.02em;align-items:center;padding:.55em 1.15em;font-size:1em;font-weight:700;text-decoration:none;transition:background-color .2s ease-out,transform .25s cubic-bezier(.16,1,.3,1);display:inline-flex}.say-hi:hover{background:var(--pad-deep);transform:translateY(-2px)}.say-hi:active{transform:translateY(1px)}.see-work{pointer-events:auto;min-height:44px;color:var(--ink);text-decoration:underline;text-decoration-color:var(--pad-deep);text-underline-offset:5px;align-items:center;text-decoration-thickness:2px;transition:text-decoration-color .2s ease-out;display:inline-flex}.see-work:hover{text-decoration-color:var(--leaf)}.projects{margin:0;padding:0;list-style:none}.project{letter-spacing:-.01em;white-space:nowrap;font-size:clamp(13px,1.15vw,18px);font-weight:700}.project a{pointer-events:auto;color:inherit;text-underline-offset:5px;padding:.5em .3em;text-decoration:underline 2px #0000;transition:text-decoration-color .2s ease-out;display:block;position:relative}.project a:before{content:"";width:calc(var(--project-r,0px) * 2);height:calc(var(--project-r,0px) * 2);border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.project a:hover{text-decoration-color:var(--leaf)}.play{left:max(16px, env(safe-area-inset-left));bottom:max(20px, env(safe-area-inset-bottom));color:var(--ink-soft);cursor:default;pointer-events:auto;flex-wrap:wrap;align-items:baseline;gap:.5em 1.4em;margin:0;font-size:12.5px;display:flex;position:fixed}.play-hint{transition:opacity .8s ease-out}.played .play-hint{opacity:0}@media (width<=440px){.play{column-gap:1.2em}.play-hint{display:none}}.play button{color:var(--ink);font:inherit;cursor:pointer;text-decoration:underline;text-decoration-color:var(--pad-deep);text-underline-offset:4px;background:0 0;border:0;margin:-14px 0;padding:14px 0;text-decoration-thickness:2px;transition:text-decoration-color .2s ease-out}.play button:hover{text-decoration-color:var(--leaf)}.top{z-index:10;top:max(14px, env(safe-area-inset-top));left:max(16px, env(safe-area-inset-left));right:max(16px, env(safe-area-inset-right));pointer-events:none;justify-content:space-between;align-items:baseline;font-size:13px;display:flex;position:fixed}.top a,.top button{pointer-events:auto;color:var(--ink);text-decoration:none}.mark{letter-spacing:-.01em;margin:-.5em 0;padding:.5em 0;font-weight:700}.top ul{gap:1.6em;margin:0;padding:0;list-style:none;display:flex}.top nav a,.menu{text-underline-offset:5px;padding:.3em 0;text-decoration:underline 2px #0000;transition:text-decoration-color .2s ease-out}.top nav a:hover{text-decoration-color:var(--pad-deep)}.top nav a[aria-current=page]{text-decoration-color:var(--leaf)}.menu{font:inherit;cursor:pointer;text-decoration-color:var(--pad-deep);background:0 0;border:0;display:none}@media (width<=640px){.menu{margin-left:auto;display:block}.top nav{justify-items:end;display:grid}.menu{min-height:44px;margin-top:-12px;margin-right:-8px;padding-inline:8px}.menu:focus-visible{outline-offset:-2px}.top ul{flex-direction:column;align-items:flex-end;padding:0 0 .4em 2em;display:none}.top ul a{align-items:center;min-height:44px;padding:0;font-size:15px;display:flex}.menu[aria-expanded=true]+ul{display:flex}body:has(.menu[aria-expanded=true]) .actions{visibility:hidden}}@media (prefers-reduced-motion:reduce){.say-hi,.say-hi:hover,.say-hi:active{transition:background-color .2s ease-out;transform:none}}.screen{pointer-events:none;margin:0;position:fixed;inset:0}.screen a,.screen button{pointer-events:auto}
