html.intro body,html.intro-held body{padding-top:var(--intro-runway,30vh)}html.intro .pod{visibility:hidden;transform-origin:top;will-change:transform}html.intro.intro-ready .pod{visibility:visible;transform:scale(var(--intro-scale,1))}html.intro .nav,html.intro main>:not(.pod):not(.scroll-hint):not(.intro-grid):not(.intro-glow),html.intro .footer{opacity:var(--intro-reveal,0);pointer-events:none}html.intro main>:not(.pod):not(.scroll-hint):not(.intro-grid):not(.intro-glow){transform:translateY(var(--intro-push,0))}html.intro .wire,html.intro .joint,html.intro .packet{visibility:hidden}.intro-grid,.intro-glow,.scroll-hint{display:none}html.intro.intro-ready .intro-grid,html.intro.intro-ready .intro-glow{z-index:-1;pointer-events:none;display:block;position:fixed;inset:0}html.intro.intro-ready .scroll-hint{color:var(--muted);opacity:var(--intro-hint,1);pointer-events:none;flex-direction:column;align-items:center;gap:.5rem;font-size:.9375rem;display:flex;position:fixed;bottom:1.75rem;left:0;right:0}.scroll-hint svg{fill:currentColor;shape-rendering:crispedges;animation:1.4s steps(4,end) infinite alternate hint-bob}@keyframes hint-bob{to{transform:translateY(6px)}}@supports (animation-timeline:scroll()){html.intro-timeline.intro-ready .pod,html.intro-timeline .nav,html.intro-timeline main>:not(.pod):not(.scroll-hint):not(.intro-grid):not(.intro-glow),html.intro-timeline .footer,html.intro-timeline.intro-ready .intro-grid,html.intro-timeline.intro-ready .scroll-hint{animation-duration:auto;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:scroll(root);animation-range:0 var(--intro-runway)}html.intro-timeline.intro-ready .pod{animation-name:intro-shrink}html.intro-timeline .nav,html.intro-timeline .footer{animation-name:intro-appear}html.intro-timeline main>:not(.pod):not(.scroll-hint):not(.intro-grid):not(.intro-glow){animation-name:intro-arrive}html.intro-timeline.intro-ready .intro-grid{animation-name:intro-close}html.intro-timeline.intro-ready .scroll-hint{animation-name:intro-hint}}@keyframes intro-shrink{0%{transform:scale(var(--intro-scale-from))}to{transform:scale(1)}}@keyframes intro-appear{0%,20%{opacity:0}to{opacity:1}}@keyframes intro-arrive{0%{opacity:0;transform:translateY(var(--intro-push-from))}20%{opacity:0}to{opacity:1;transform:translateY(0)}}@keyframes intro-close{0%{clip-path:inset(0);background-size:var(--intro-grid-size-from) var(--intro-grid-size-from);background-position:var(--intro-grid-from)}to{clip-path:inset(var(--intro-grid-clip));background-size:var(--intro-grid-size-to) var(--intro-grid-size-to);background-position:var(--intro-grid-to)}}@keyframes intro-hint{0%{opacity:1}25%,to{opacity:0}}.pixel-name[data-astro-cid-lv7zala4]{letter-spacing:-.03em;margin:0;font-size:clamp(3rem,12vw,9rem);font-weight:800;line-height:.95}canvas[data-astro-cid-lv7zala4]{touch-action:manipulation;width:100%;display:none}.is-drawn[data-astro-cid-lv7zala4] canvas[data-astro-cid-lv7zala4]{display:block}.is-drawn[data-astro-cid-lv7zala4] .pixel-name-text[data-astro-cid-lv7zala4]{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}main[data-astro-cid-lcdefpme]{position:relative}.intro[data-astro-cid-lcdefpme]{letter-spacing:-.015em;text-wrap:pretty;max-width:34ch;margin:2.5rem 0 0;font-size:clamp(1.5rem,3.2vw,2.25rem);line-height:1.2}section[data-astro-cid-lcdefpme]{margin-top:5.5rem;scroll-margin-top:1.5rem}h2[data-astro-cid-lcdefpme]{color:var(--muted);margin:0 0 2.25rem;font-size:1rem;font-weight:500}.projects[data-astro-cid-lcdefpme]{grid-template-columns:repeat(4,minmax(0,1fr));gap:3.5rem 1.5rem;margin:0;padding:0;display:grid}.more[data-astro-cid-lcdefpme]{margin:2rem 0 0}@media (width<=64rem){.projects[data-astro-cid-lcdefpme]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=40rem){.projects[data-astro-cid-lcdefpme]{grid-template-columns:minmax(0,1fr)}}.wire,.joint,.packet{pointer-events:none;position:absolute}.joint{background:var(--wire);width:5px;height:5px;margin:-2px 0 0 -2px}.wire{border:0 dotted var(--wire)}.wire.down{border-left-width:2px}.wire.across{border-top-width:2px}.packet{width:6px;height:6px;top:-3px;left:-3px}
