@property --explode{syntax:"<number>";inherits:true;initial-value:0}.teardown{--explode:1;--labels:clamp(0, calc((var(--explode) - .4) * 4), 1);margin:0;position:relative;container-type:inline-size}@media (prefers-reduced-motion:reduce){.teardown{--explode:.6}}.teardown svg{width:100%;height:auto;overflow:visible}.teardown path{stroke:var(--ink);stroke-width:1px;stroke-linejoin:round;stroke-linecap:round}.teardown .part{transform-box:fill-box;transform-origin:50%;transform:translateY(calc(var(--explode) * var(--dy) * 1px)) rotate(calc(var(--explode) * var(--rot) * 1deg))}.teardown .side{fill:color-mix(in srgb, var(--ink) 12%, var(--paper));fill-rule:evenodd}.teardown .face{fill:var(--paper)}.teardown .wall{fill:color-mix(in srgb, var(--ink) 22%, var(--paper))}.teardown .floor{fill:color-mix(in srgb, var(--ink) 6%, var(--paper))}.teardown .detail{fill:none}.teardown .band{fill:var(--copper)}.teardown .board-side{fill:color-mix(in srgb, var(--teal) 70%, var(--ink));fill-rule:evenodd}.teardown .board-face{fill:var(--teal)}.teardown .trace{fill:none;stroke:var(--copper);stroke-width:1.4px}.teardown .pad{fill:color-mix(in srgb, var(--copper) 30%, var(--teal));stroke:var(--copper)}.teardown .chip{fill:#141210;fill-rule:evenodd}.teardown .led-body{fill:color-mix(in srgb, var(--led) 35%, var(--paper))}.teardown .led-cap{fill:color-mix(in srgb, var(--led) 55%, var(--paper))}.teardown .glow{opacity:0;stroke:none}.teardown .led.blink .glow{animation:.42s ease-out blink}.teardown .led.blink .led-cap,.teardown .led.blink .led-body{animation:.42s step-end lit}@keyframes blink{0%,60%{opacity:1}to{opacity:0}}@keyframes lit{0%{fill:var(--led)}}.teardown .power-side{fill:color-mix(in srgb, var(--copper) 70%, var(--ink));fill-rule:evenodd}.teardown .power-face{fill:var(--copper)}.teardown .power-key.pressed{transform:translateY(2px)}.teardown .mark{font-family:var(--font-display);fill:var(--pencil);font-size:12px;font-weight:800}.teardown .assembly{fill:none;stroke:var(--pencil);stroke-width:.8px;stroke-dasharray:10 3 2 3;opacity:var(--labels)}.teardown .callout{opacity:var(--labels)}.teardown .callout path{fill:none;stroke:var(--pencil);stroke-width:.8px}.teardown .callout circle{fill:var(--ink)}.teardown .callout text{font-family:var(--font-body);fill:var(--ink);font-size:19px}@container (width>=30rem){.teardown .callout text{font-size:12px}}.teardown .power{cursor:pointer;width:2.75rem;min-width:44px;height:2.75rem;min-height:44px;translate:-50% -50%;transform:translateY(calc(var(--explode) * var(--dy) * 100cqw / var(--vbw)));background:0 0;border:0;border-radius:50%;padding:0;position:absolute}.teardown .power:hover{box-shadow:0 0 0 1px var(--copper)}.teardown figcaption{margin-top:var(--space-1);font-size:var(--step--1);color:var(--pencil);font-style:italic}.teardown .hint-touch{display:none}@media not ((hover:hover) and (pointer:fine)){.teardown .hint-pointer{display:none}.teardown .hint-touch{display:inline}}@media (prefers-reduced-motion:reduce){.teardown .hint-pointer,.teardown .hint-touch{display:none}}.hero[data-astro-cid-ge2uvauf]{gap:var(--space-4);padding-bottom:var(--space-4);align-items:center;display:grid}h1[data-astro-cid-ge2uvauf]{margin-bottom:var(--space-3);font-size:clamp(2.75rem,7vw,6.5rem);line-height:.92}h1[data-astro-cid-ge2uvauf] span[data-astro-cid-ge2uvauf]{display:block}h1[data-astro-cid-ge2uvauf] span[data-astro-cid-ge2uvauf]+span[data-astro-cid-ge2uvauf]{color:var(--copper)}.sub[data-astro-cid-ge2uvauf]{font-size:var(--step-1);max-width:30ch;line-height:1.4}.actions[data-astro-cid-ge2uvauf]{gap:var(--space-1) var(--space-4);margin:var(--space-3) 0 0;flex-wrap:wrap;display:flex}.actions[data-astro-cid-ge2uvauf] a[data-astro-cid-ge2uvauf]{font-family:var(--font-display);font-weight:700;font-size:var(--step-2);letter-spacing:.01em;padding:.3rem 0;display:inline-block}.actions[data-astro-cid-ge2uvauf] a[data-astro-cid-ge2uvauf]:first-child{color:var(--ink);text-decoration-color:var(--copper);text-decoration-thickness:3px}.figure[data-astro-cid-ge2uvauf]{justify-self:center;width:100%;max-width:38rem}@media (width>=64rem){.hero[data-astro-cid-ge2uvauf]{gap:var(--space-3);grid-template-columns:minmax(0,5fr) minmax(0,7fr);min-height:min(48rem,100dvh - 8rem)}.figure[data-astro-cid-ge2uvauf]{justify-self:end}}.home-projects[data-astro-cid-o3izd6um]{margin-top:var(--space-4)}.more[data-astro-cid-o3izd6um]{gap:var(--space-1) var(--space-4);margin-top:var(--space-2);font-family:var(--font-display);font-weight:700;font-size:var(--step-1);flex-wrap:wrap;justify-content:flex-end;display:flex}.more[data-astro-cid-q42nyg42],.more[data-astro-cid-tnnnwyyz]{margin-top:var(--space-2);font-family:var(--font-display);font-weight:700;font-size:var(--step-1)}.bio[data-astro-cid-izol6dha]{gap:var(--space-3);margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--ink);display:grid}.bio[data-astro-cid-izol6dha] img{border:1px solid var(--ink);width:100%;max-width:22rem;height:auto}.text[data-astro-cid-izol6dha]{max-width:var(--measure)}.links[data-astro-cid-izol6dha]{margin:var(--space-3) 0 0;gap:var(--space-1) var(--space-3);flex-wrap:wrap;padding:0;list-style:none;display:flex}.links[data-astro-cid-izol6dha] a[data-astro-cid-izol6dha]{padding:.3rem 0;display:inline-block}@media (width>=48rem){.bio[data-astro-cid-izol6dha]{gap:var(--space-4);grid-template-columns:18rem minmax(0,1fr);align-items:start}}@media (width>=64rem){.bio[data-astro-cid-izol6dha]{grid-template-columns:22rem minmax(0,1fr)}}.pair[data-astro-cid-lcdefpme]{gap:var(--space-4);margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--ink);display:grid}@media (width>=64rem){.pair[data-astro-cid-lcdefpme]{gap:var(--space-5);grid-template-columns:repeat(2,minmax(0,1fr))}}
