.intro[data-astro-cid-fmp4ekgg]{padding-top:96px;position:relative}.hero[data-astro-cid-fmp4ekgg]{align-items:center;gap:32px;display:flex}.headshot[data-astro-cid-fmp4ekgg]{object-fit:cover;width:132px;height:132px;box-shadow:0 0 0 1px var(--line), 0 0 0 6px var(--paper), 0 0 0 7px var(--rail);border-radius:50%;flex:none}h1[data-astro-cid-fmp4ekgg]{font-family:var(--serif);letter-spacing:-.035em;font-size:clamp(52px,11vw,84px);font-weight:600;line-height:.98}h1[data-astro-cid-fmp4ekgg] .name[data-astro-cid-fmp4ekgg]{white-space:nowrap}.zh-name[data-astro-cid-fmp4ekgg]{letter-spacing:0;color:var(--muted);white-space:nowrap;font-size:.34em;font-weight:400;display:none}html[data-zh] .zh-name[data-astro-cid-fmp4ekgg]{display:inline}.tagline[data-astro-cid-fmp4ekgg]{font-family:var(--mono);color:var(--muted);margin-top:22px;font-size:13px}.lede[data-astro-cid-fmp4ekgg]{max-width:600px;color:var(--ink);margin-top:28px;font-size:18px;line-height:1.7}.lede[data-astro-cid-fmp4ekgg]>span[data-astro-cid-fmp4ekgg]{display:block}.at[data-astro-cid-fmp4ekgg]{color:var(--muted)}.links[data-astro-cid-fmp4ekgg]{flex-wrap:wrap;align-items:center;gap:6px;margin-top:32px;margin-left:-10px;display:flex}.icon[data-astro-cid-fmp4ekgg]{width:44px;height:44px;color:var(--ink-2);border-radius:8px;justify-content:center;align-items:center;text-decoration:none;display:flex}.icon[data-astro-cid-fmp4ekgg]:hover{color:var(--green);background:var(--green-wash)}svg[data-astro-cid-fmp4ekgg]{fill:currentColor;width:20px;height:20px}.divider[data-astro-cid-fmp4ekgg]{background:var(--line);width:1px;height:18px;margin-inline:10px}.pill-group[data-astro-cid-fmp4ekgg]{gap:6px;display:inline-flex}.pill[data-astro-cid-fmp4ekgg]{border:1px solid var(--rail);height:36px;font-family:var(--mono);letter-spacing:.04em;color:var(--ink);border-radius:999px;align-items:center;gap:8px;padding-inline:14px;font-size:12px;text-decoration:none;display:inline-flex}.pill[data-astro-cid-fmp4ekgg]:hover{border-color:var(--green)}.pill[data-astro-cid-fmp4ekgg] svg[data-astro-cid-fmp4ekgg]{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}@media (width<=640px){.intro[data-astro-cid-fmp4ekgg]{padding-top:32px}.hero[data-astro-cid-fmp4ekgg]{gap:16px}.headshot[data-astro-cid-fmp4ekgg]{width:64px;height:64px;box-shadow:0 0 0 1px var(--line), 0 0 0 4px var(--paper), 0 0 0 5px var(--rail)}h1[data-astro-cid-fmp4ekgg]{font-size:min(46px,11vw)}.tagline[data-astro-cid-fmp4ekgg]{margin-top:10px}.lede[data-astro-cid-fmp4ekgg]{margin-top:22px;font-size:17px}.links[data-astro-cid-fmp4ekgg]{margin-top:20px}.divider[data-astro-cid-fmp4ekgg]{display:none}.pill-group[data-astro-cid-fmp4ekgg]{margin-left:10px}}section[data-astro-cid-w6ymvdtg]{margin-top:104px}.heading[data-astro-cid-w6ymvdtg]{flex-wrap:wrap;align-items:center;gap:12px 16px;margin-bottom:40px;display:flex}h2[data-astro-cid-w6ymvdtg]{font-family:var(--serif);letter-spacing:-.02em;flex:1;align-items:baseline;gap:14px;font-size:30px;font-weight:600;line-height:1.2;display:flex}h2[data-astro-cid-w6ymvdtg]:after{content:"";background:var(--line);flex:1;align-self:center;height:1px;margin-left:8px}.index[data-astro-cid-w6ymvdtg]{font-family:var(--mono);letter-spacing:.06em;color:var(--green);font-size:12px;font-weight:400}@media (width<=640px){section[data-astro-cid-w6ymvdtg]{margin-top:72px}.heading[data-astro-cid-w6ymvdtg]{margin-bottom:28px}h2[data-astro-cid-w6ymvdtg]{font-size:26px}}.credential[data-astro-cid-rqedvfq5]{max-width:420px;color:var(--muted);font:12px/1.6 var(--mono);margin-top:10px}summary[data-astro-cid-rqedvfq5]{width:fit-content;color:var(--ink-2);cursor:pointer;padding:10px 0}summary[data-astro-cid-rqedvfq5]:hover{color:var(--green)}summary[data-astro-cid-rqedvfq5]:focus-visible{outline:2px solid var(--green);outline-offset:3px;border-radius:2px}.instructions[data-astro-cid-rqedvfq5]{border:1px solid var(--rail);background:var(--paper-raised);border-radius:6px;width:fit-content;padding:12px 14px}dl[data-astro-cid-rqedvfq5]{grid-template-columns:auto minmax(0,1fr);gap:6px 16px;margin:0 0 10px;display:grid}dt[data-astro-cid-rqedvfq5],dd[data-astro-cid-rqedvfq5]{margin:0}code[data-astro-cid-rqedvfq5]{color:var(--ink);font:inherit;overflow-wrap:anywhere;user-select:all}.instructions[data-astro-cid-rqedvfq5] a{color:var(--green)}.entry[data-astro-cid-63zagaqi]{grid-template-columns:var(--date-col) 1fr;column-gap:28px;display:grid}.date[data-astro-cid-63zagaqi]{font-family:var(--mono);color:var(--muted);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;padding-top:7px;font-size:12px;line-height:1.4}.body[data-astro-cid-63zagaqi]{border-left:1px solid var(--rail);padding:0 0 44px 32px;position:relative}.entry[data-astro-cid-63zagaqi]:last-child .body[data-astro-cid-63zagaqi]{border-left-color:#0000;padding-bottom:0}.compact[data-astro-cid-63zagaqi] .body[data-astro-cid-63zagaqi]{padding-bottom:32px}.marked[data-astro-cid-63zagaqi] .body[data-astro-cid-63zagaqi]{padding-left:44px}.compact[data-astro-cid-63zagaqi] .body[data-astro-cid-63zagaqi]:before{content:"";background:var(--paper);border:2px solid var(--faint);border-radius:2px;width:9px;height:9px;transition:border-color .2s;position:absolute;top:11px;left:-5px;transform:rotate(45deg)}.mark[data-astro-cid-63zagaqi]{border:1px solid var(--rail);background:var(--paper-raised);width:44px;height:44px;box-shadow:0 0 0 6px var(--paper);font-family:var(--serif);letter-spacing:-.02em;color:var(--ink-2);border-radius:10px;place-items:center;font-size:17px;font-weight:600;transition:border-color .2s,color .2s;display:grid;position:absolute;top:-4px;left:-22px;overflow:hidden}.mark[data-astro-cid-63zagaqi].long{letter-spacing:0;font-size:11px}.mark[data-astro-cid-63zagaqi].logo{border:1px solid var(--line);background:#fff}.mark[data-astro-cid-63zagaqi] img[data-astro-cid-63zagaqi]{object-fit:cover;width:100%;height:100%;display:block}.head[data-astro-cid-63zagaqi]{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;display:flex}h3[data-astro-cid-63zagaqi]{font-family:var(--serif);letter-spacing:-.01em;text-wrap:balance;font-size:22px;font-weight:600;line-height:1.3}.marked[data-astro-cid-63zagaqi] h3[data-astro-cid-63zagaqi]{padding-top:1px}.compact[data-astro-cid-63zagaqi] h3[data-astro-cid-63zagaqi]{font-size:19px}h3[data-astro-cid-63zagaqi] a[data-astro-cid-63zagaqi]{text-decoration-color:var(--rail);text-underline-offset:5px;text-decoration-thickness:1px}h3[data-astro-cid-63zagaqi] a[data-astro-cid-63zagaqi]:hover{text-decoration-color:var(--green)}.ext[data-astro-cid-63zagaqi]{font-family:var(--mono);color:var(--green-dim);vertical-align:.35em;margin-left:6px;font-size:.6em;font-weight:400}h3[data-astro-cid-63zagaqi] a[data-astro-cid-63zagaqi]:hover .ext[data-astro-cid-63zagaqi]{color:var(--green)}.photo-gallery[data-astro-cid-63zagaqi]{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-width:346px;margin:14px 0 0;padding:0;list-style:none;display:grid}.photo-gallery[data-astro-cid-63zagaqi].single{grid-template-columns:minmax(0,168px)}.photo-gallery[data-astro-cid-63zagaqi] li[data-astro-cid-63zagaqi]{min-width:0}.photo[data-astro-cid-63zagaqi]{border:1px solid var(--line);height:100%;color:var(--muted);border-radius:6px;flex-direction:column;text-decoration:none;display:flex;overflow:hidden}.photo[data-astro-cid-63zagaqi]:hover{border-color:var(--green-dim);color:var(--green)}.photo[data-astro-cid-63zagaqi] img[data-astro-cid-63zagaqi]{aspect-ratio:3/2;object-fit:cover;width:100%;height:auto;display:block}.photo-caption[data-astro-cid-63zagaqi]{font:11px/1.6 var(--mono);padding:5px 8px}.resource-links[data-astro-cid-63zagaqi]{flex-wrap:wrap;gap:6px;margin:10px 0 0;padding:0;list-style:none;display:flex}.resource[data-astro-cid-63zagaqi]{border:1px solid var(--line);min-height:36px;color:var(--muted);border-radius:6px;align-items:center;gap:8px;padding:0 12px 0 10px;text-decoration:none;display:flex}.resource[data-astro-cid-63zagaqi]:hover,.resource[data-astro-cid-63zagaqi]:focus-visible{color:var(--green);border-color:var(--green-dim)}.resource-label[data-astro-cid-63zagaqi]{font:12px/1.4 var(--mono);color:var(--ink-2)}.resource[data-astro-cid-63zagaqi]:hover .resource-label[data-astro-cid-63zagaqi],.resource[data-astro-cid-63zagaqi]:focus-visible .resource-label[data-astro-cid-63zagaqi]{color:var(--green)}.skills[data-astro-cid-63zagaqi]{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.skills-row[data-astro-cid-63zagaqi]{flex-wrap:wrap;align-items:baseline;gap:6px 10px;margin-top:14px;padding-top:14px;display:flex;position:relative}.skills-row[data-astro-cid-63zagaqi]:before{content:"";background:var(--rail);width:24px;height:1px;position:absolute;top:0;left:0}.skills-label[data-astro-cid-63zagaqi]{font:10px/1.75 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}.secondary[data-astro-cid-63zagaqi] h3[data-astro-cid-63zagaqi]{color:var(--ink-2)}.secondary[data-astro-cid-63zagaqi].marked h3[data-astro-cid-63zagaqi]{font-size:19px}.secondary[data-astro-cid-63zagaqi].compact h3[data-astro-cid-63zagaqi]{font-size:17px}.secondary[data-astro-cid-63zagaqi] .role[data-astro-cid-63zagaqi],.more[data-astro-cid-63zagaqi]{color:var(--muted)}.skill[data-astro-cid-63zagaqi]{border:1px solid var(--line);background:var(--paper-raised);font-family:var(--mono);color:var(--muted);cursor:pointer;border-radius:4px;padding:1px 8px;font-size:11px;line-height:1.6;transition:color .15s,border-color .15s,background-color .15s}.skill[data-astro-cid-63zagaqi]:hover{color:var(--green);border-color:var(--green-dim)}.skill[data-astro-cid-63zagaqi]:focus-visible{outline:2px solid var(--green);outline-offset:2px}.skill[data-astro-cid-63zagaqi][aria-pressed=true]{color:var(--paper);background:var(--green);border-color:var(--green)}@media (pointer:coarse){.skills[data-astro-cid-63zagaqi]{gap:8px}.skill[data-astro-cid-63zagaqi]{padding:4px 10px;position:relative}.skill[data-astro-cid-63zagaqi]:after{content:"";position:absolute;inset:-4px}}@media screen{html[data-skill] .entry[data-astro-cid-63zagaqi]:not(.has-skill){--ink:var(--faint);--ink-2:var(--faint);--muted:var(--faint);--green:var(--faint);--green-dim:var(--faint);color:var(--ink)}html[data-skill] .entry[data-astro-cid-63zagaqi]:not(.has-skill) .mark[data-astro-cid-63zagaqi] img[data-astro-cid-63zagaqi]{filter:grayscale()opacity(.5)}}.place[data-astro-cid-63zagaqi]{font-family:var(--mono);color:var(--muted);white-space:nowrap;font-size:12px}.rank[data-astro-cid-63zagaqi]{font-family:var(--mono);color:var(--green);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:13px;font-weight:600}.rank[data-astro-cid-63zagaqi] small[data-astro-cid-63zagaqi]{color:var(--muted);font-size:12px;font-weight:400}.role[data-astro-cid-63zagaqi]{margin-top:4px;font-size:15px;font-weight:500}.has-score[data-astro-cid-63zagaqi]{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 12px;max-width:540px;display:flex}.scores[data-astro-cid-63zagaqi]{flex-direction:column;align-items:flex-end;display:flex}.score[data-astro-cid-63zagaqi]{font:13px/1.6 var(--mono);color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:500}.score-label[data-astro-cid-63zagaqi]{letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin-right:4px;font-size:10px;font-weight:400}.roles[data-astro-cid-63zagaqi]{margin:4px 0 0;padding:0;list-style:none}.roles[data-astro-cid-63zagaqi] li[data-astro-cid-63zagaqi]{flex-wrap:wrap;align-items:baseline;gap:2px 10px;display:flex}.roles[data-astro-cid-63zagaqi] li[data-astro-cid-63zagaqi]+li[data-astro-cid-63zagaqi]{margin-top:2px}.roles[data-astro-cid-63zagaqi] li[data-astro-cid-63zagaqi]+li[data-astro-cid-63zagaqi] .role[data-astro-cid-63zagaqi]{color:var(--ink-2);font-weight:400}.roles[data-astro-cid-63zagaqi] .role[data-astro-cid-63zagaqi]{margin-top:0}.role-dates[data-astro-cid-63zagaqi]{font-family:var(--mono);color:var(--muted);font-size:12px}.focus[data-astro-cid-63zagaqi]{color:var(--muted);margin-top:1px;font-size:14px}.org[data-astro-cid-63zagaqi]{color:var(--ink-2);margin-top:2px;font-size:14px}.facts[data-astro-cid-63zagaqi]{grid-template-columns:100px minmax(0,1fr);gap:3px 14px;max-width:540px;margin:10px 0 0;display:grid}.facts[data-astro-cid-63zagaqi] div[data-astro-cid-63zagaqi]{display:contents}@media (width>=641px){.compact[data-astro-cid-63zagaqi] .facts[data-astro-cid-63zagaqi]{grid-template-columns:auto minmax(0,1fr)}}.facts[data-astro-cid-63zagaqi] dt[data-astro-cid-63zagaqi]{font:10px/1.75 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--faint);padding-top:4px}.facts[data-astro-cid-63zagaqi] dd[data-astro-cid-63zagaqi]{color:var(--ink-2);text-wrap:pretty;margin:0;font-size:14.5px;line-height:1.6}.facts[data-astro-cid-63zagaqi] dd[data-astro-cid-63zagaqi] span[data-astro-cid-63zagaqi]{display:block}.facts[data-astro-cid-63zagaqi] dd[data-astro-cid-63zagaqi] span[data-astro-cid-63zagaqi]+span[data-astro-cid-63zagaqi]{margin-top:4px}.facts[data-astro-cid-63zagaqi] dd[data-astro-cid-63zagaqi] .level{font:12px/1.95 var(--mono);color:var(--muted)}.facts[data-astro-cid-63zagaqi] dd[data-astro-cid-63zagaqi] span[data-astro-cid-63zagaqi]:has(>.level){grid-template-columns:22px minmax(0,1fr);column-gap:6px;display:grid}.secondary[data-astro-cid-63zagaqi] .facts[data-astro-cid-63zagaqi] dd[data-astro-cid-63zagaqi]{color:var(--muted)}.facts[data-astro-cid-63zagaqi] a{color:inherit}.points[data-astro-cid-63zagaqi]{max-width:540px;margin:10px 0 0;padding:0;list-style:none}.points[data-astro-cid-63zagaqi] li[data-astro-cid-63zagaqi]{color:var(--muted);text-wrap:pretty;margin-top:4px;padding-left:18px;font-size:14.5px;line-height:1.6;position:relative}.points[data-astro-cid-63zagaqi] li[data-astro-cid-63zagaqi]:before{content:"•";color:var(--faint);position:absolute;left:0}.points[data-astro-cid-63zagaqi] a{color:var(--ink-2)}.points[data-astro-cid-63zagaqi] ul[data-astro-cid-63zagaqi]{margin:0;padding:0;list-style:none}.points[data-astro-cid-63zagaqi] li[data-astro-cid-63zagaqi] li[data-astro-cid-63zagaqi]{margin-top:2px}.points[data-astro-cid-63zagaqi] li[data-astro-cid-63zagaqi] li[data-astro-cid-63zagaqi]:before{content:"◦"}@media (width<=640px){.entry[data-astro-cid-63zagaqi]{border-left:1px solid var(--rail);grid-template-columns:1fr;margin-left:17px;padding:0 0 36px 26px;position:relative}.compact[data-astro-cid-63zagaqi]{padding-bottom:28px}.entry[data-astro-cid-63zagaqi]:last-child{border-left-color:#0000;padding-bottom:0}.date[data-astro-cid-63zagaqi]{text-align:left;margin-bottom:4px;padding-top:0}.body[data-astro-cid-63zagaqi],.compact[data-astro-cid-63zagaqi] .body[data-astro-cid-63zagaqi],.marked[data-astro-cid-63zagaqi] .body[data-astro-cid-63zagaqi]{border:0;padding:0;position:static}.compact[data-astro-cid-63zagaqi] .body[data-astro-cid-63zagaqi]:before{top:5px}.marked[data-astro-cid-63zagaqi]{padding-left:38px}.mark[data-astro-cid-63zagaqi]{width:34px;height:34px;box-shadow:0 0 0 4px var(--paper);border-radius:8px;font-size:14px;top:-2px;left:-17px}.mark[data-astro-cid-63zagaqi].long{font-size:9px}h3[data-astro-cid-63zagaqi]{font-size:20px}.marked[data-astro-cid-63zagaqi] .head[data-astro-cid-63zagaqi]{flex-direction:column;gap:0}.compact[data-astro-cid-63zagaqi] .head[data-astro-cid-63zagaqi]{gap:4px 12px}.facts[data-astro-cid-63zagaqi]{grid-template-columns:minmax(0,1fr);row-gap:0}.facts[data-astro-cid-63zagaqi] dt[data-astro-cid-63zagaqi]{padding-top:6px}.scores[data-astro-cid-63zagaqi]{align-items:flex-start}.compact[data-astro-cid-63zagaqi] .facts[data-astro-cid-63zagaqi]{grid-template-columns:auto minmax(0,1fr);row-gap:3px}.compact[data-astro-cid-63zagaqi] .facts[data-astro-cid-63zagaqi] dt[data-astro-cid-63zagaqi]{padding-top:4px}}ol[data-astro-cid-3xih677i]{margin:0;padding:0;list-style:none}.earlier-row[data-astro-cid-3xih677i]{display:none}@media screen and (width<=640px){html[data-folding-ready] ol[data-astro-cid-3xih677i]:not(.show-earlier)>.earlier{display:none}html[data-folding-ready] .earlier-row[data-astro-cid-3xih677i]{border-left:1px dashed var(--rail);margin-left:17px;padding:0 0 28px 26px;display:block}html[data-folding-ready] ol[data-astro-cid-3xih677i]:not(.show-earlier)>.earlier-row[data-astro-cid-3xih677i]{padding-bottom:0}html[data-folding-ready] .show-earlier[data-astro-cid-3xih677i]>.earlier-row[data-astro-cid-3xih677i]{border-left-style:solid}.earlier-toggle[data-astro-cid-3xih677i]{font:12px/1.6 var(--mono);color:var(--ink-2);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:2px 0;display:inline-flex;position:relative}.earlier-toggle[data-astro-cid-3xih677i]:before{content:"";position:absolute;inset:-10px -12px}.earlier-toggle[data-astro-cid-3xih677i]:after{content:"+";color:var(--faint)}.show-earlier[data-astro-cid-3xih677i] .earlier-toggle[data-astro-cid-3xih677i]:after{content:"−"}.earlier-toggle[data-astro-cid-3xih677i]:hover{color:var(--green)}.earlier-toggle[data-astro-cid-3xih677i]:focus-visible{outline:2px solid var(--green);outline-offset:2px}}.skill-filter[data-astro-cid-ypshrz35]{z-index:15;border:1px solid var(--green-dim);background:var(--bar);-webkit-backdrop-filter:blur(8px);font:12px/1.4 var(--mono);color:var(--ink);white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:6px 6px 6px 14px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.skill-filter[data-astro-cid-ypshrz35][hidden]{display:none}.label[data-astro-cid-ypshrz35]{margin-right:2px}.position[data-astro-cid-ypshrz35]{min-width:3ch;color:var(--muted);font-variant-numeric:tabular-nums}button[data-astro-cid-ypshrz35]{border:1px solid var(--line);font:inherit;color:var(--ink-2);cursor:pointer;background:0 0;border-radius:999px;flex-shrink:0}button[data-astro-cid-ypshrz35]:hover:not(:disabled){color:var(--green);border-color:var(--green)}button[data-astro-cid-ypshrz35]:focus-visible{outline:2px solid var(--green);outline-offset:2px}button[data-astro-cid-ypshrz35]:disabled{color:var(--faint);cursor:default}.step[data-astro-cid-ypshrz35]{place-items:center;width:28px;height:28px;padding:0;display:grid}.step[data-astro-cid-ypshrz35] svg[data-astro-cid-ypshrz35]{fill:currentColor;width:16px;height:16px}.clear[data-astro-cid-ypshrz35]{padding:4px 12px}@media (width<=640px){.skill-filter[data-astro-cid-ypshrz35]{gap:6px;max-width:calc(100% - 92px);padding-left:12px;bottom:16px;left:calc(50% - 30px)}.label[data-astro-cid-ypshrz35]{text-overflow:ellipsis;min-width:0;overflow:hidden}}@media print{.skill-filter[data-astro-cid-ypshrz35]{display:none!important}}.profile{border:1px solid var(--line);min-height:36px;font:12px/1.4 var(--mono);color:var(--ink-2);border-radius:6px;flex:none;align-items:center;gap:6px;padding:0 12px;text-decoration:none;display:inline-flex}.profile:hover,.profile:focus-visible{color:var(--green);border-color:var(--green-dim)}.profile [aria-hidden]{color:var(--green-dim)}.profile svg{width:14px;height:14px;color:var(--muted)}.profile:hover svg{color:var(--green)}
