canvas.svelte-yjuy7u{z-index:-1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 55%,#0000);mask-image:linear-gradient(#000 55%,#0000)}.card.svelte-oviq8z{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);transition:border-color .25s var(--ease-out), box-shadow .25s var(--ease-out), transform .25s var(--ease-out);flex-direction:column;gap:18px;padding:26px;display:flex}@media (hover:hover) and (pointer:fine){.card.svelte-oviq8z:hover{border-color:color-mix(in srgb, var(--accent) 40%, var(--line));box-shadow:var(--shadow);transform:translateY(-2px)}}.main.svelte-oviq8z,.detail.svelte-oviq8z{flex-direction:column;gap:14px;display:flex}.detail.svelte-oviq8z{flex:1}.lead.svelte-oviq8z{background:color-mix(in srgb, var(--accent-soft) 45%, var(--surface));grid-column:1/-1}@media (width>=860px){.lead.svelte-oviq8z{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:40px;padding:36px;display:grid}.lead.svelte-oviq8z h3:where(.svelte-oviq8z){font-size:var(--fs-title)}.lead.svelte-oviq8z .detail:where(.svelte-oviq8z){justify-content:center}.lead.svelte-oviq8z .actions:where(.svelte-oviq8z){margin-top:auto}}.meta.svelte-oviq8z{flex-wrap:wrap;align-items:center;gap:8px;min-height:26px;display:flex}.badge.svelte-oviq8z{font-size:var(--fs-micro);background:var(--surface-2);color:var(--muted);border-radius:6px;align-items:center;gap:6px;padding:5px 10px;font-weight:500;display:inline-flex}.badge.award.svelte-oviq8z{background:var(--accent-soft);color:var(--accent)}.badge.svelte-oviq8z svg{width:14px;height:14px}.badge.status.svelte-oviq8z{border:1px dashed var(--line);background:0 0}.year.svelte-oviq8z{font:var(--fs-micro)/1 var(--font-mono);color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto}h3.svelte-oviq8z{font-size:var(--fs-lead)}h3.svelte-oviq8z a:where(.svelte-oviq8z){text-decoration:none}h3.svelte-oviq8z a:where(.svelte-oviq8z):hover{color:var(--accent)}.tagline.svelte-oviq8z{color:var(--text);max-width:52ch}.repo.svelte-oviq8z{font:var(--fs-micro)/1.4 var(--font-mono);color:var(--muted);flex-wrap:wrap;gap:4px 14px;margin-top:-6px;display:flex}.summary.svelte-oviq8z{max-width:56ch}.highlights.svelte-oviq8z{font-size:var(--fs-body);gap:10px;margin:0;padding:0;list-style:none;display:grid}.highlights.svelte-oviq8z li:where(.svelte-oviq8z){padding-left:18px;position:relative}.highlights.svelte-oviq8z li:where(.svelte-oviq8z):before{content:"";background:var(--accent);width:7px;height:1.5px;position:absolute;top:.7em;left:2px}.stack.svelte-oviq8z{flex-wrap:wrap;gap:6px;margin:auto 0 0;padding:0;list-style:none;display:flex}.actions.svelte-oviq8z{font-size:var(--fs-small);flex-wrap:wrap;align-items:center;gap:18px;font-weight:500;display:flex}.card.svelte-oviq8z:not(.lead) .main:where(.svelte-oviq8z),.card.svelte-oviq8z:not(.lead) .detail:where(.svelte-oviq8z){display:contents}.card.svelte-oviq8z:not(.lead) .actions:where(.svelte-oviq8z){order:1}.actions.svelte-oviq8z a:where(.svelte-oviq8z){align-items:center;gap:6px;min-height:32px;text-decoration:none;display:inline-flex}.actions.svelte-oviq8z svg{width:16px;height:16px;transition:transform .2s var(--ease-out)}.more.svelte-oviq8z{color:var(--accent)}.more.svelte-oviq8z:hover svg{transform:translate(3px)}.code.svelte-oviq8z{color:var(--text)}.code.svelte-oviq8z:hover{color:var(--accent)}.tag.svelte-m88r5v{font-size:var(--fs-micro);background:color-mix(in srgb, currentColor 14%, transparent);border-radius:999px;margin-left:2px;padding:3px 8px;font-weight:500}@media (prefers-reduced-motion:no-preference){.tag.svelte-m88r5v{animation:svelte-m88r5v-pop .35s var(--ease-out)}}@keyframes svelte-m88r5v-pop{0%{opacity:0;transform:translateY(3px)}}.listening.svelte-1cia439{border-top:1px solid var(--line);font:var(--fs-micro)/1.5 var(--font-mono);color:var(--muted);align-items:flex-start;gap:12px;padding:12px 16px;display:flex}ul.svelte-1cia439{flex:1;min-width:0;margin:0;padding:0;list-style:none}a.svelte-1cia439{gap:8px;min-width:0;text-decoration:none;display:flex}a.svelte-1cia439:hover .text:where(.svelte-1cia439){color:var(--accent)}.label.svelte-1cia439{opacity:.7;flex:none;width:7.5em}.text.svelte-1cia439{text-overflow:ellipsis;white-space:nowrap;color:var(--text);overflow:hidden}.bars.svelte-1cia439{align-items:flex-end;gap:2px;height:14px;margin-top:3px;display:flex}.bars.svelte-1cia439 i:where(.svelte-1cia439){background:var(--muted);border-radius:1px;width:2px;height:40%}.bars.live.svelte-1cia439 i:where(.svelte-1cia439){background:var(--accent)}@media (prefers-reduced-motion:no-preference){.bars.live.svelte-1cia439 i:where(.svelte-1cia439){animation:.9s ease-in-out infinite alternate svelte-1cia439-eq}.bars.live.svelte-1cia439 i:where(.svelte-1cia439):nth-child(2){animation-delay:-.3s}.bars.live.svelte-1cia439 i:where(.svelte-1cia439):nth-child(3){animation-delay:-.6s}}@keyframes svelte-1cia439-eq{to{height:100%}}.switcher.svelte-12q0y94{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.label.svelte-12q0y94{font-size:var(--fs-micro);letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.options.svelte-12q0y94{border:1px solid var(--line);background:var(--surface);scrollbar-width:none;border-radius:999px;gap:4px;max-width:100%;padding:4px;display:flex;overflow-x:auto}.options.svelte-12q0y94::-webkit-scrollbar{display:none}@media (width<=640px){.options.svelte-12q0y94{padding-right:28px;-webkit-mask-image:linear-gradient(90deg,#000 82%,#0000);mask-image:linear-gradient(90deg,#000 82%,#0000)}}button.svelte-12q0y94{min-height:36px;color:var(--muted);font:500 var(--fs-small)/1 var(--font-sans);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:999px;flex:none;padding:0 14px}button.svelte-12q0y94:hover{color:var(--text)}button[aria-pressed=true].svelte-12q0y94{background:var(--text);color:var(--bg)}.hero.svelte-1uha8ag{isolation:isolate;position:relative}.hero-grid.svelte-1uha8ag{grid-template-columns:minmax(0,1fr);align-items:end;gap:40px;display:grid}@media (width>=960px){.hero-grid.svelte-1uha8ag{grid-template-columns:minmax(0,1fr) 320px;gap:56px}}.pushes.svelte-1uha8ag{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);font-family:var(--font-mono);font-size:var(--fs-micro)}.pushes-head.svelte-1uha8ag{border-bottom:1px solid var(--line);color:var(--muted);justify-content:space-between;padding:12px 16px;display:flex}.pushes.svelte-1uha8ag ul:where(.svelte-1uha8ag){margin:0;padding:6px;list-style:none}.pushes.svelte-1uha8ag a:where(.svelte-1uha8ag){border-radius:var(--radius-sm);transition:background .2s var(--ease-out);gap:2px;padding:10px;text-decoration:none;display:grid}.pushes.svelte-1uha8ag a:where(.svelte-1uha8ag):hover{background:var(--surface-2)}.push-name.svelte-1uha8ag{font:600 var(--fs-small)/1.3 var(--font-sans)}.pushes.svelte-1uha8ag a:where(.svelte-1uha8ag):hover .push-name:where(.svelte-1uha8ag){color:var(--accent)}.push-meta.svelte-1uha8ag{color:var(--muted);justify-content:space-between;display:flex}.hero.svelte-1uha8ag{padding-block:clamp(56px,9vw,96px) clamp(40px,6vw,64px)}.hero.svelte-1uha8ag .eyebrow:where(.svelte-1uha8ag){margin-bottom:18px}h1.svelte-1uha8ag{font-size:var(--fs-display);letter-spacing:-.04em;font-weight:600;line-height:1.02}.headline.svelte-1uha8ag{font-size:var(--fs-lead);letter-spacing:-.01em;color:var(--accent);margin-top:16px;font-weight:500}.pitch.svelte-1uha8ag{max-width:56ch;font-size:var(--fs-lead);margin-top:14px}.cta.svelte-1uha8ag{flex-wrap:wrap;align-items:center;gap:10px;margin-block:30px 26px;display:flex}.socials.svelte-1uha8ag{gap:2px;margin-left:4px;display:inline-flex}.icon-link.svelte-1uha8ag{width:44px;height:44px;color:var(--muted);transition:color .2s var(--ease-out), background .2s var(--ease-out);border-radius:999px;place-items:center;display:grid}.icon-link.svelte-1uha8ag:hover{color:var(--text);background:var(--surface-2)}.icon-link.svelte-1uha8ag svg{width:22px;height:22px}.icon-link.small.svelte-1uha8ag{width:32px;height:32px}.icon-link.small.svelte-1uha8ag svg{width:17px;height:17px}.stats.svelte-1uha8ag{border-top:1px solid var(--line);grid-template-columns:repeat(4,1fr);gap:24px;margin:0 0 clamp(48px,7vw,72px);padding-top:28px;display:grid}.stats.svelte-1uha8ag div:where(.svelte-1uha8ag){flex-direction:column;gap:6px;display:flex}.stats.svelte-1uha8ag dd:where(.svelte-1uha8ag){font-size:var(--fs-title);letter-spacing:-.03em;font-variant-numeric:tabular-nums;order:-1;margin:0;font-weight:600;line-height:1}.stats.svelte-1uha8ag dt:where(.svelte-1uha8ag){font-size:var(--fs-small);color:var(--muted);max-width:20ch}@media (width<=720px){.stats.svelte-1uha8ag{grid-template-columns:repeat(2,1fr);row-gap:28px}}.featured.svelte-1uha8ag{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}@media (width<=760px){.featured.svelte-1uha8ag{grid-template-columns:1fr}}.more-head.svelte-1uha8ag{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:72px 0 12px;display:flex}.more-head.svelte-1uha8ag h3:where(.svelte-1uha8ag){font-size:var(--fs-lead)}.filters.svelte-1uha8ag{flex-wrap:wrap;gap:6px;display:flex}.filters.svelte-1uha8ag button:where(.svelte-1uha8ag){border:1px solid var(--line);min-height:36px;color:var(--muted);font:500 var(--fs-small)/1 var(--font-sans);cursor:pointer;transition:color .2s var(--ease-out), background .2s var(--ease-out), border-color .2s var(--ease-out);background:0 0;border-radius:999px;padding:0 14px}.filters.svelte-1uha8ag button:where(.svelte-1uha8ag):hover{color:var(--text);border-color:var(--muted)}.filters.svelte-1uha8ag button:where(.svelte-1uha8ag):active{transform:translateY(1px)}.filters.svelte-1uha8ag button[aria-pressed=true]:where(.svelte-1uha8ag){background:var(--text);border-color:var(--text);color:var(--bg)}.index.svelte-1uha8ag{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:40px;margin:0;padding:0;list-style:none;display:grid}.index.svelte-1uha8ag li:where(.svelte-1uha8ag){border-radius:var(--radius-sm);transition:background .2s var(--ease-out);justify-content:space-between;align-items:flex-start;gap:16px;margin-inline:-12px;padding:16px 12px;display:flex}.index.svelte-1uha8ag li:where(.svelte-1uha8ag):hover{background:var(--surface)}.index-main.svelte-1uha8ag{flex-direction:column;gap:4px;min-width:0;text-decoration:none;display:flex}.index-title.svelte-1uha8ag{font-weight:600;font-size:var(--fs-body)}.index-main.svelte-1uha8ag:hover .index-title:where(.svelte-1uha8ag){color:var(--accent)}.index-tagline.svelte-1uha8ag{color:var(--text);font-size:var(--fs-body)}.index-meta.svelte-1uha8ag{font:var(--fs-micro)/1 var(--font-mono);color:var(--muted);flex:none;align-items:center;gap:8px;display:flex}.index-year.svelte-1uha8ag{font-variant-numeric:tabular-nums}.empty.svelte-1uha8ag{color:var(--muted);padding:16px 0}@media (width<=760px){.index.svelte-1uha8ag{grid-template-columns:1fr}.index.svelte-1uha8ag li:where(.svelte-1uha8ag)+li:where(.svelte-1uha8ag){border-top:1px solid var(--line);border-radius:0}.filters.svelte-1uha8ag{scrollbar-width:none;margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter);width:calc(100% + var(--gutter) * 2);flex-wrap:nowrap;overflow-x:auto}.filters.svelte-1uha8ag button:where(.svelte-1uha8ag){flex:none}}@media (pointer:coarse){.filters.svelte-1uha8ag button:where(.svelte-1uha8ag){min-height:44px}.index.svelte-1uha8ag li:where(.svelte-1uha8ag):active,.pushes.svelte-1uha8ag a:where(.svelte-1uha8ag):active,.mods.svelte-1uha8ag a:where(.svelte-1uha8ag):active{background:var(--surface-2)}.icon-link.small.svelte-1uha8ag{width:44px;height:44px;margin-block:-10px}}.timeline.svelte-1uha8ag{gap:44px;margin:0;padding:0;list-style:none;display:grid}.timeline.svelte-1uha8ag>li:where(.svelte-1uha8ag){grid-template-columns:190px minmax(0,1fr);gap:32px;display:grid}.when.svelte-1uha8ag{font:var(--fs-micro)/1.4 var(--font-mono);color:var(--muted);font-variant-numeric:tabular-nums;flex-direction:column;gap:6px;padding-top:3px;display:flex}.place.svelte-1uha8ag{font-size:var(--fs-micro)}.what.svelte-1uha8ag{max-width:68ch}.what.svelte-1uha8ag h3:where(.svelte-1uha8ag){font-size:var(--fs-lead)}.org.svelte-1uha8ag{color:var(--text);margin-top:2px;font-weight:500}.what.svelte-1uha8ag ul:where(.svelte-1uha8ag){color:var(--text);gap:6px;margin:12px 0 0;padding-left:18px;display:grid}.what.svelte-1uha8ag ul:where(.svelte-1uha8ag) li:where(.svelte-1uha8ag)::marker{color:var(--line)}.role-link.svelte-1uha8ag{font-size:var(--fs-small);color:var(--text);align-items:center;gap:6px;margin-top:12px;font-weight:500;text-decoration:none;display:inline-flex}.role-link.svelte-1uha8ag svg{width:15px;height:15px}.note.svelte-1uha8ag{color:var(--muted);font-size:var(--fs-small);align-items:center;gap:10px;margin-top:48px;display:flex}.note.svelte-1uha8ag svg{flex:none;width:16px;height:16px}@media (width<=720px){.timeline.svelte-1uha8ag>li:where(.svelte-1uha8ag){grid-template-columns:1fr;gap:8px}.when.svelte-1uha8ag{flex-flow:wrap;gap:4px 12px}}.split.svelte-1uha8ag{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;display:grid}@media (width<=860px){.split.svelte-1uha8ag{grid-template-columns:1fr}}.skills.svelte-1uha8ag{gap:22px;margin:0;display:grid}.skills.svelte-1uha8ag dt:where(.svelte-1uha8ag){margin-bottom:10px;font-weight:600}.skills.svelte-1uha8ag dd:where(.svelte-1uha8ag){flex-wrap:wrap;gap:6px;margin:0;display:flex}.edu.svelte-1uha8ag{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);gap:4px;padding:22px;display:grid}.edu.svelte-1uha8ag h3:where(.svelte-1uha8ag){font-size:var(--fs-lead)}.muted.svelte-1uha8ag{color:var(--muted);font-size:var(--fs-small)}.sub.svelte-1uha8ag{font-size:var(--fs-body);margin:32px 0 14px}.certs.svelte-1uha8ag{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 24px;margin:0;padding:0;list-style:none;display:grid}.certs.svelte-1uha8ag li:where(.svelte-1uha8ag){flex-direction:column;gap:2px;display:flex}.cert-name.svelte-1uha8ag{font-weight:500;font-size:var(--fs-body)}.cert-issuer.svelte-1uha8ag{font-size:var(--fs-micro);color:var(--muted)}@media (width<=480px){.certs.svelte-1uha8ag{grid-template-columns:1fr}}.mods-split.svelte-1uha8ag{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:start;gap:56px;margin-bottom:48px;display:grid}@media (width<=860px){.mods-split.svelte-1uha8ag{grid-template-columns:1fr;gap:32px}}.lede.svelte-1uha8ag{max-width:60ch}.big-number.svelte-1uha8ag{flex-direction:column;gap:6px;margin-top:32px;display:flex}.big-number.svelte-1uha8ag strong:where(.svelte-1uha8ag){font-size:var(--fs-display);letter-spacing:-.04em;color:var(--accent);font-variant-numeric:tabular-nums;font-weight:600;line-height:1}.big-number.svelte-1uha8ag span:where(.svelte-1uha8ag){color:var(--muted);font-size:var(--fs-body)}.mods.svelte-1uha8ag{gap:6px;margin:0;padding:0;list-style:none;display:grid}.mods.svelte-1uha8ag a:where(.svelte-1uha8ag){border-radius:var(--radius);transition:background .2s var(--ease-out);flex-direction:column;gap:8px;padding:18px 20px;text-decoration:none;display:flex}.mods.svelte-1uha8ag a:where(.svelte-1uha8ag):hover{background:var(--surface)}.mod-top.svelte-1uha8ag{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.mod-title.svelte-1uha8ag{font-size:var(--fs-lead);letter-spacing:-.01em;font-weight:600}.mod-year.svelte-1uha8ag{font:var(--fs-micro)/1 var(--font-mono);color:var(--muted)}.mod-summary.svelte-1uha8ag{color:var(--text);font-size:var(--fs-body)}.mod-stats.svelte-1uha8ag{font-size:var(--fs-small);color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 18px;display:flex}.mod-stats.svelte-1uha8ag strong:where(.svelte-1uha8ag){color:var(--text);font-variant-numeric:tabular-nums;font-weight:600}.mod-link.svelte-1uha8ag{color:var(--text);align-items:center;gap:4px;margin-left:auto;font-weight:500;display:inline-flex}.mod-link.svelte-1uha8ag svg{width:15px;height:15px}.gallery.svelte-1uha8ag{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.gallery.svelte-1uha8ag .wide:where(.svelte-1uha8ag){grid-column:span 2}@media (width<=860px){.gallery.svelte-1uha8ag{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=480px){.gallery.svelte-1uha8ag{grid-template-columns:1fr}.gallery.svelte-1uha8ag .wide:where(.svelte-1uha8ag){grid-column:auto}.wide.svelte-1uha8ag img{aspect-ratio:16/10}}figure.svelte-1uha8ag{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);margin:0;overflow:hidden}figure.svelte-1uha8ag img{aspect-ratio:16/10;object-fit:cover;background:#ececee;width:100%}.wide.svelte-1uha8ag img{aspect-ratio:32/10}.cad.svelte-1uha8ag img{object-fit:contain;padding:8px}figcaption.svelte-1uha8ag{font-size:var(--fs-micro);color:var(--muted);padding:10px 14px}.contact.svelte-1uha8ag h2:where(.svelte-1uha8ag){font-size:var(--fs-title);letter-spacing:-.035em;max-width:18ch;margin-bottom:18px}.contact.svelte-1uha8ag .lede:where(.svelte-1uha8ag) a:where(.svelte-1uha8ag){color:var(--text);text-underline-offset:3px}.contact.svelte-1uha8ag .lede:where(.svelte-1uha8ag) a:where(.svelte-1uha8ag):hover{color:var(--accent)}
