.contrib-wrapper{width:100%;max-width:100%;min-width:0;display:flex;flex-direction:column;gap:14px}.contrib-head{display:flex;justify-content:space-between;align-items:center;gap:8px 16px;flex-wrap:wrap}.contrib-legend{display:flex;align-items:center;gap:4px}.contrib-legend i{width:10px;height:10px;border-radius:3px;display:block}.contrib-legend .meta{font-size:.64rem;margin:0 3px}.contrib-scroll{container-type:inline-size;overflow-x:auto;max-width:100%;min-width:0;flex:1;display:flex;align-items:center;scrollbar-width:thin}.contrib-inner{--cg: 3px;--weeks: 53;--cell: clamp(10px, calc((100cqw - 34px - (var(--weeks) - 1) * var(--cg)) / var(--weeks)), 24px);display:flex;flex-direction:column;gap:5px;width:-moz-max-content;width:max-content;min-width:-moz-max-content;min-width:max-content;margin:0 auto}.contrib-month-row{display:flex;align-items:flex-end;gap:var(--cg);height:14px}.contrib-day-spacer{width:30px;flex-shrink:0;margin-right:1px}.contrib-month-cell{width:var(--cell);flex-shrink:0;font-family:var(--mono);font-size:9.5px;color:var(--muted);overflow:visible;white-space:nowrap}.contrib-body{display:flex;gap:4px;min-width:0}.contrib-day-col{display:flex;flex-direction:column;gap:var(--cg);width:30px;flex-shrink:0}.contrib-day-label{display:block;height:var(--cell);line-height:var(--cell);font-family:var(--mono);font-size:9.5px;color:var(--muted);text-align:right;padding-right:5px}.contrib-weeks{display:flex;gap:var(--cg)}.contrib-week{display:flex;flex-direction:column;gap:var(--cg)}.contrib-cell{width:var(--cell);height:var(--cell);border-radius:22%;flex-shrink:0;background:var(--contrib-level-0);transform:scale(.6);cursor:default}@keyframes contribFill{0%{background:var(--contrib-level-0);transform:scale(.6)}to{background:var(--color-target);transform:scale(1)}}@keyframes contribGrow{0%{transform:scale(.6)}to{transform:scale(1)}}.contrib-wrapper.is-animated .contrib-cell{animation:contribGrow .38s cubic-bezier(.22,1,.36,1) both}.contrib-wrapper.is-animated .contrib-cell:not([data-level="0"]){animation-name:contribFill}.contrib-wrapper.no-animation .contrib-cell,.contrib-wrapper.animations-done .contrib-cell{animation:none;transform:none}.contrib-wrapper.no-animation .contrib-cell:not([data-level="0"]),.contrib-wrapper.animations-done .contrib-cell:not([data-level="0"]){background:var(--color-target)}.contrib-cell:hover{outline:1.5px solid var(--ink);outline-offset:1px}.stage[data-astro-cid-bcoxvymo]{position:relative;width:100%;min-width:0;aspect-ratio:5 / 4;max-height:min(66svh,38rem)}@media(min-width:640px)and (min-aspect-ratio:5 / 4){.stage[data-astro-cid-bcoxvymo]{aspect-ratio:4 / 3;max-height:calc(100svh - var(--header-h) - 2 * var(--hero-pad))}}canvas[data-astro-cid-bcoxvymo]{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0;transition:opacity .8s ease;touch-action:pan-y;cursor:grab;-webkit-mask-image:linear-gradient(to right,transparent,#000 7%,#000 93%,transparent),linear-gradient(to bottom,#000 82%,transparent 97%);-webkit-mask-composite:source-in;mask-image:linear-gradient(to right,transparent,#000 7%,#000 93%,transparent),linear-gradient(to bottom,#000 82%,transparent 97%);-webkit-mask-composite:source-in,xor;mask-composite:intersect}.stage[data-astro-cid-bcoxvymo].is-live canvas[data-astro-cid-bcoxvymo]{opacity:1}.stage[data-astro-cid-bcoxvymo].is-dragging canvas[data-astro-cid-bcoxvymo]{cursor:grabbing}.stage-fallback[data-astro-cid-bcoxvymo]{display:none}.stage[data-astro-cid-bcoxvymo].is-failed canvas[data-astro-cid-bcoxvymo],.stage[data-astro-cid-bcoxvymo].is-failed .clips[data-astro-cid-bcoxvymo]{display:none}.stage[data-astro-cid-bcoxvymo].is-failed .stage-fallback[data-astro-cid-bcoxvymo]{display:flex;position:absolute;inset:0}.stage-fallback[data-astro-cid-bcoxvymo] img[data-astro-cid-bcoxvymo]{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:center bottom;object-position:center bottom}.clips[data-astro-cid-bcoxvymo]{position:absolute;left:50%;bottom:0;transform:translate(-50%);display:flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:999px;background:var(--card)}.clips[data-astro-cid-bcoxvymo] button[data-astro-cid-bcoxvymo]{font:500 .84rem/1 var(--sans);color:var(--muted);background:none;border:0;border-radius:999px;padding:8px 14px;min-height:34px;white-space:nowrap;cursor:pointer;transition:color .15s,background-color .15s}.clips[data-astro-cid-bcoxvymo] button[data-astro-cid-bcoxvymo]:hover{color:var(--ink)}.clips[data-astro-cid-bcoxvymo] button[data-astro-cid-bcoxvymo][aria-pressed=true]{background:var(--pill-bg);color:var(--pill-fg)}.hero[data-astro-cid-j7pv25f6]{--hero-pad: clamp(14px, 3vh, 36px);display:grid;grid-template-columns:minmax(0,1fr);align-content:center;gap:clamp(24px,5vh,56px) clamp(16px,3vw,56px);min-height:calc(100vh - var(--header-h));min-height:calc(100svh - var(--header-h));padding-block:var(--hero-pad)}.hero-text[data-astro-cid-j7pv25f6]{min-width:0}.hero-lead[data-astro-cid-j7pv25f6]{display:flex;flex-direction:column;gap:clamp(14px,2.4vh,26px)}.hero-name[data-astro-cid-j7pv25f6]{font-size:clamp(2.9rem,min(15vw,15vh),9.5rem);font-weight:500;line-height:.94;letter-spacing:-.045em;margin-left:-.045em}.hero-bio[data-astro-cid-j7pv25f6]{font-size:clamp(1rem,.92rem + .45vw,1.3rem);line-height:1.5;color:var(--ink-2);max-width:30rem;text-wrap:balance}@media(min-width:640px)and (min-aspect-ratio:5 / 4){.hero[data-astro-cid-j7pv25f6]{grid-template-columns:minmax(0,.72fr) minmax(0,1fr);align-items:end}.hero-name[data-astro-cid-j7pv25f6]{font-size:clamp(2.9rem,min(8.4vw,17vh),9.5rem)}}.pub-grid[data-astro-cid-j7pv25f6]{display:grid;gap:var(--gap);grid-template-columns:minmax(0,1fr)}@media(min-width:760px){.pub-grid[data-astro-cid-j7pv25f6]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1500px){.pub-grid[data-astro-cid-j7pv25f6]{grid-template-columns:repeat(4,minmax(0,1fr))}}.pub[data-astro-cid-j7pv25f6]{display:flex;flex-direction:column;align-items:flex-start;gap:12px}.pub[data-astro-cid-j7pv25f6] h3[data-astro-cid-j7pv25f6]{text-wrap:pretty}.pub-fig[data-astro-cid-j7pv25f6]{display:block;width:100%;height:auto;border-radius:8px;margin-bottom:4px}.pub-venue[data-astro-cid-j7pv25f6]{display:flex;align-items:center;gap:8px}.pub[data-astro-cid-j7pv25f6] .card-text[data-astro-cid-j7pv25f6]{flex:1}.featured[data-astro-cid-j7pv25f6]{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--card-pad);align-items:center;margin-bottom:var(--gap)}.featured-text[data-astro-cid-j7pv25f6]{display:flex;flex-direction:column;align-items:flex-start;gap:14px}.featured-title[data-astro-cid-j7pv25f6]{font-size:clamp(1.5rem,1.1rem + 1.6vw,2.5rem);font-weight:500;letter-spacing:-.02em;line-height:1.1;text-wrap:balance}.featured[data-astro-cid-j7pv25f6] .card-text[data-astro-cid-j7pv25f6]{font-size:1rem;max-width:34rem}.featured-fig[data-astro-cid-j7pv25f6]{display:block;width:100%;height:auto;border-radius:8px}@media(min-width:900px){.featured[data-astro-cid-j7pv25f6]{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}}.project-grid[data-astro-cid-j7pv25f6]{display:grid;gap:var(--gap);grid-template-columns:minmax(0,1fr)}.project[data-astro-cid-j7pv25f6]{container-type:inline-size;display:flex}.project-inner[data-astro-cid-j7pv25f6]{flex:1;display:flex;flex-direction:column;gap:12px;min-width:0}.project-head[data-astro-cid-j7pv25f6]{display:flex;flex-direction:column;align-items:flex-start;gap:10px}.project-body[data-astro-cid-j7pv25f6]{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:12px}.project[data-astro-cid-j7pv25f6] .card-text[data-astro-cid-j7pv25f6]{flex:1}@media(min-width:600px){.project-grid[data-astro-cid-j7pv25f6]{grid-template-columns:repeat(2,minmax(0,1fr))}.project[data-astro-cid-j7pv25f6].lead{grid-column:span var(--s2)}}@media(min-width:900px){.project-grid[data-astro-cid-j7pv25f6]{grid-template-columns:repeat(3,minmax(0,1fr))}.project[data-astro-cid-j7pv25f6].lead{grid-column:span var(--s3)}}@media(min-width:1400px){.project-grid[data-astro-cid-j7pv25f6].four{grid-template-columns:repeat(4,minmax(0,1fr))}.project-grid[data-astro-cid-j7pv25f6].four .project[data-astro-cid-j7pv25f6].lead{grid-column:span var(--s4)}}@container (min-width: 720px){.project-inner[data-astro-cid-j7pv25f6]{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--card-pad);align-items:start}.project-head[data-astro-cid-j7pv25f6] h3[data-astro-cid-j7pv25f6]{font-size:clamp(1.3rem,1rem + 1vw,1.8rem);letter-spacing:-.015em;line-height:1.15;text-wrap:balance}}.card[data-astro-cid-j7pv25f6]:target{border-color:var(--ink);outline:1px solid var(--ink)}.skills[data-astro-cid-j7pv25f6]{padding:0;display:grid;grid-template-columns:minmax(0,1fr);overflow:hidden}.skill-row[data-astro-cid-j7pv25f6]{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:7px 14px;padding:13px var(--card-pad) 14px;border-bottom:1px solid var(--line)}.skill-row[data-astro-cid-j7pv25f6]:last-child{border-bottom:0}.skill-name[data-astro-cid-j7pv25f6]{font-weight:500}.skill-row[data-astro-cid-j7pv25f6] .tags[data-astro-cid-j7pv25f6]{grid-column:2}@media(min-width:900px){.skills[data-astro-cid-j7pv25f6]{grid-template-columns:repeat(2,minmax(0,1fr))}.skill-row[data-astro-cid-j7pv25f6]:nth-child(odd){border-right:1px solid var(--line)}.skill-row[data-astro-cid-j7pv25f6]:nth-last-child(-n+2){border-bottom:0}}.activity-grid[data-astro-cid-j7pv25f6]{display:grid;gap:var(--zone-pad);grid-template-columns:minmax(0,1fr)}.contact[data-astro-cid-j7pv25f6]{display:grid;gap:var(--zone-pad);grid-template-columns:minmax(0,1fr);align-items:end}.contact-photo[data-astro-cid-j7pv25f6]{display:block;align-self:end;margin-bottom:calc(-1 * var(--zone-pad))}.contact-photo[data-astro-cid-j7pv25f6] img[data-astro-cid-j7pv25f6]{display:block;width:min(100%,30rem);height:auto;margin-inline:auto}.contact-title[data-astro-cid-j7pv25f6]{font-size:clamp(2.2rem,1.2rem + 4.6vw,5.5rem);font-weight:500;letter-spacing:-.035em;line-height:1;margin-top:10px}.contact-cards[data-astro-cid-j7pv25f6]{display:grid;gap:var(--gap)}.contact-card[data-astro-cid-j7pv25f6]{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 16px}.contact-card[data-astro-cid-j7pv25f6] .kicker[data-astro-cid-j7pv25f6]{grid-column:1}.contact-value[data-astro-cid-j7pv25f6]{grid-column:1;font-size:1.15rem;font-weight:500;overflow-wrap:anywhere}.contact-card[data-astro-cid-j7pv25f6] .go[data-astro-cid-j7pv25f6]{grid-column:2;grid-row:1 / span 2;font-size:1.2rem}@media(min-width:900px){.contact[data-astro-cid-j7pv25f6]{grid-template-columns:minmax(0,1fr) minmax(0,.9fr);grid-template-rows:auto auto;padding-top:clamp(24px,4vw,56px)}.contact-lead[data-astro-cid-j7pv25f6],.contact-cards[data-astro-cid-j7pv25f6]{grid-column:1}.contact-photo[data-astro-cid-j7pv25f6]{grid-column:2;grid-row:1 / span 2}.contact-photo[data-astro-cid-j7pv25f6] img[data-astro-cid-j7pv25f6]{width:100%;max-width:36rem;max-height:30rem;-o-object-fit:contain;object-fit:contain;-o-object-position:center bottom;object-position:center bottom}}
