.nightsky-host[data-astro-cid-el3ewxpd]{z-index:-1;pointer-events:none;position:fixed;inset:0}.sky-photo[data-astro-cid-el3ewxpd]{background-color:var(--bg);background-position:50%;background-repeat:no-repeat;background-size:cover}.sky-photo[data-astro-cid-el3ewxpd],.sky-photo[data-astro-cid-el3ewxpd] picture[data-astro-cid-el3ewxpd],.sky-photo[data-astro-cid-el3ewxpd] img[data-astro-cid-el3ewxpd]{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.sky-photo[data-astro-cid-el3ewxpd] img[data-astro-cid-el3ewxpd]{object-fit:cover;object-position:0% 40%;opacity:1;animation:.4s cubic-bezier(.16,1,.3,1) sky-photo-fade}@keyframes sky-photo-fade{0%{opacity:0}to{opacity:1}}@media (max-width:639px){.sky-photo[data-astro-cid-el3ewxpd] img[data-astro-cid-el3ewxpd]{object-position:50% 50%}}@media (min-width:640px) and (max-width:1023px){.sky-photo[data-astro-cid-el3ewxpd] img[data-astro-cid-el3ewxpd]{object-position:50% 45%}}@media (min-width:1800px){.sky-photo[data-astro-cid-el3ewxpd] img[data-astro-cid-el3ewxpd]{object-position:3% 40%}}@media (prefers-reduced-motion:reduce){.sky-photo[data-astro-cid-el3ewxpd] img[data-astro-cid-el3ewxpd]{opacity:1;animation:none}}#nightsky-canvas[data-astro-cid-el3ewxpd]{pointer-events:none;width:100%;height:100%;display:block}.camper[data-astro-cid-el3ewxpd]{aspect-ratio:200/110;pointer-events:none;width:clamp(160px,16vw,260px);position:absolute;bottom:15%;left:8vw}.camper-glow[data-astro-cid-el3ewxpd]{pointer-events:none;background:radial-gradient(ellipse at 42% 64%, rgb(from var(--accent) r g b / .34) 0%, rgb(from var(--accent) r g b / .17) 34%, rgb(from var(--accent) r g b / .06) 62%, rgb(from var(--accent) r g b / 0) 100%);border-radius:50%;animation:5s ease-in-out infinite camper-glow-pulse;position:absolute;inset:-28%}@keyframes camper-glow-pulse{0%,to{opacity:.7}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.camper-glow[data-astro-cid-el3ewxpd]{opacity:.85;animation:none}}.camper[data-astro-cid-el3ewxpd].parallax-nudge-fwd{animation:.42s cubic-bezier(.16,1,.3,1) camper-parallax-nudge-fwd}.camper[data-astro-cid-el3ewxpd].parallax-nudge-back{animation:.42s cubic-bezier(.16,1,.3,1) camper-parallax-nudge-back}@keyframes camper-parallax-nudge-fwd{0%{transform:translate(0,0)}35%{transform:translate(-18px)}to{transform:translate(0,0)}}@keyframes camper-parallax-nudge-back{0%{transform:translate(0,0)}35%{transform:translate(18px)}to{transform:translate(0,0)}}@media (prefers-reduced-motion:reduce){.camper[data-astro-cid-el3ewxpd].parallax-nudge-fwd,.camper[data-astro-cid-el3ewxpd].parallax-nudge-back{animation:none}}.deck-index[data-astro-cid-7yc3mbml],.deck-hint[data-astro-cid-7yc3mbml],.deck-view-classic[data-astro-cid-7yc3mbml],.deck-view-deck[data-astro-cid-7yc3mbml]{display:none}html.deck-active .deck-index[data-astro-cid-7yc3mbml]{z-index:21;display:block;position:fixed;bottom:82px;right:clamp(18px,4vw,32px)}.deck-index-toggle[data-astro-cid-7yc3mbml]{font-family:var(--mono);letter-spacing:.03em;color:var(--body);background:var(--bg);border:1px solid var(--hair2);cursor:pointer;border-radius:6px;padding:6px 12px;font-size:11.5px;transition:border-color .15s,color .15s;display:block}.deck-index-toggle[data-astro-cid-7yc3mbml]:hover,.deck-index[data-astro-cid-7yc3mbml]:focus-within .deck-index-toggle[data-astro-cid-7yc3mbml]{border-color:var(--accent);color:var(--accent)}.deck-jump[data-astro-cid-7yc3mbml]{background:var(--bg);border:1px solid var(--hair2);border-radius:6px;min-width:180px;margin:0;padding:4px;list-style:none;display:none;position:absolute;bottom:calc(100% + 8px);right:0}.deck-index[data-astro-cid-7yc3mbml]:hover .deck-jump[data-astro-cid-7yc3mbml],.deck-index[data-astro-cid-7yc3mbml]:focus-within .deck-jump[data-astro-cid-7yc3mbml],.deck-jump[data-astro-cid-7yc3mbml] li[data-astro-cid-7yc3mbml]{display:block}.deck-jump[data-astro-cid-7yc3mbml] a[data-astro-cid-7yc3mbml]{font-family:var(--mono);color:var(--dim);white-space:nowrap;border:none;padding:8px 12px;font-size:12px;display:block}.deck-jump[data-astro-cid-7yc3mbml] a[data-astro-cid-7yc3mbml]:hover,.deck-jump[data-astro-cid-7yc3mbml] a[data-astro-cid-7yc3mbml]:focus-visible{color:var(--ink)}.deck-jump[data-astro-cid-7yc3mbml] a[data-astro-cid-7yc3mbml][aria-current=true]{color:var(--accent);font-weight:500}.deck-jump[data-astro-cid-7yc3mbml] .marker[data-astro-cid-7yc3mbml]{color:var(--accent);visibility:hidden;margin-right:4px}.deck-jump[data-astro-cid-7yc3mbml] a[data-astro-cid-7yc3mbml][aria-current=true] .marker[data-astro-cid-7yc3mbml]{visibility:visible}html.deck-active .deck-hint[data-astro-cid-7yc3mbml]{z-index:21;font-family:var(--mono);color:var(--faint);font-size:11px;transition:opacity .3s;display:block;position:fixed;bottom:120px;right:clamp(18px,4vw,32px)}html.deck-active .deck-view-classic[data-astro-cid-7yc3mbml],html.classic-active .deck-view-deck[data-astro-cid-7yc3mbml]{z-index:21;font-family:var(--mono);color:var(--ink);font-size:13px;display:inline-block;position:fixed;bottom:82px;left:clamp(18px,4vw,32px)}html.classic-active .deck-view-classic[data-astro-cid-7yc3mbml],html.deck-active .deck-view-deck[data-astro-cid-7yc3mbml]{display:none}.sr-only[data-astro-cid-7yc3mbml]{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (max-width:640px){.deck-index[data-astro-cid-7yc3mbml]:hover .deck-jump[data-astro-cid-7yc3mbml],.deck-index[data-astro-cid-7yc3mbml]:focus-within .deck-jump[data-astro-cid-7yc3mbml]{inset-inline:0;border-radius:6px 6px 0 0;min-width:0;position:fixed;bottom:0;right:auto}.deck-jump[data-astro-cid-7yc3mbml] a[data-astro-cid-7yc3mbml]{padding:12px}}@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){@media (prefers-reduced-transparency:no-preference){.deck-index-toggle[data-astro-cid-7yc3mbml],.deck-jump[data-astro-cid-7yc3mbml]{background:var(--glass-bg-chrome);-webkit-backdrop-filter:blur(var(--glass-blur-chrome)) saturate(var(--glass-saturate-chrome)) brightness(var(--glass-brightness-chrome));backdrop-filter:blur(var(--glass-blur-chrome)) saturate(var(--glass-saturate-chrome)) brightness(var(--glass-brightness-chrome));border-top:1px solid var(--glass-edge)}}}html.deck-active,html.deck-active body{overscroll-behavior-y:none;height:100%;overflow:hidden}html.deck-active .deck{z-index:1;position:fixed;inset:0}html.deck-active .panel{justify-content:center;align-items:flex-start;padding:96px clamp(18px,4vw,32px) 136px;display:flex;position:absolute;inset:0;overflow:auto}html.deck-active .panel>*{z-index:1;width:100%;max-width:880px;position:relative}html.deck-active .panel[data-state=active]{opacity:1;pointer-events:auto;transform:translateY(0)}html.deck-active .panel[data-state=inactive]{opacity:0;pointer-events:none;transform:translateY(24px)}html.deck-active .panel{transition:transform .42s cubic-bezier(.16,1,.3,1),opacity .42s cubic-bezier(.16,1,.3,1)}@media (prefers-reduced-motion:reduce){html.deck-active .panel{transition:none}}html.deck-active header{top:0;z-index:20;position:fixed;inset-inline:0}html.deck-active footer{bottom:0;z-index:20;position:fixed;inset-inline:0}html.deck-active .deck:before{content:"";z-index:0;pointer-events:none;position:absolute;inset:0}html.deck-active .deck:before,html.classic-active .panel{background:linear-gradient(180deg, rgb(from var(--bg) r g b / 0) 0%, rgb(from var(--bg) r g b / .3) 10%, rgb(from var(--bg) r g b / .38) 45%, rgb(from var(--bg) r g b / .38) 70%, rgb(from var(--bg) r g b / .15) 92%, rgb(from var(--bg) r g b / 0) 100%)}html.deck-active .panel:focus{outline:none}html.deck-active .panel:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){@media (prefers-reduced-transparency:no-preference){html.deck-active .panel[data-state=active]>.panel-card,html.classic-active .panel>.panel-card{background-color:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate)) brightness(var(--glass-brightness));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate)) brightness(var(--glass-brightness));border-top:1px solid var(--glass-edge);border-radius:var(--glass-radius);isolation:isolate;box-shadow:var(--glass-inner-glow);position:relative}html.deck-active .panel[data-state=active]>.panel-card:before,html.classic-active .panel>.panel-card:before{content:"";z-index:-1;border-radius:inherit;pointer-events:none;background:var(--glass-specular);position:absolute;inset:0}html.deck-active .panel[data-state=active][data-panel-id=experience]>.panel-card,html.deck-active .panel[data-state=active][data-panel-id=patents]>.panel-card,html.deck-active .panel[data-state=active][data-panel-id=skills]>.panel-card,html.classic-active .panel[data-panel-id=experience]>.panel-card,html.classic-active .panel[data-panel-id=patents]>.panel-card,html.classic-active .panel[data-panel-id=skills]>.panel-card{background-color:var(--glass-bg-2);-webkit-backdrop-filter:blur(var(--glass-blur-2)) saturate(var(--glass-saturate-2)) brightness(var(--glass-brightness-2));backdrop-filter:blur(var(--glass-blur-2)) saturate(var(--glass-saturate-2)) brightness(var(--glass-brightness-2))}}}html.deck-active .panel[data-panel-id=experience]>.panel-card,html.deck-active .panel[data-panel-id=patents]>.panel-card,html.deck-active .panel[data-panel-id=skills]>.panel-card,html.classic-active .panel[data-panel-id=experience]>.panel-card,html.classic-active .panel[data-panel-id=patents]>.panel-card,html.classic-active .panel[data-panel-id=skills]>.panel-card{padding-inline:clamp(14px,1.8vw,26px)}@media print{.panel,.panel-card,.panel-card:before,header,footer,.deck-index-toggle,.deck-jump{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;box-shadow:none!important;background:0 0!important;border-top:none!important}}.hero[data-astro-cid-ge2uvauf]{padding:88px 0 30px}.eyebrow[data-astro-cid-ge2uvauf]{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--dim);font-size:12px}.eyebrow[data-astro-cid-ge2uvauf] em[data-astro-cid-ge2uvauf]{color:var(--accent);font-style:normal}h1[data-astro-cid-ge2uvauf]{font-family:var(--serif);letter-spacing:-.005em;color:var(--ink);text-wrap:balance;max-width:21ch;margin:20px 0 18px;font-size:clamp(30px,4.6vw,44px);font-weight:500;line-height:1.18}.sub[data-astro-cid-ge2uvauf]{max-width:58ch;color:var(--body);margin:0 0 22px}.links[data-astro-cid-ge2uvauf]{font-family:var(--mono);gap:20px;font-size:13px;display:flex}.links[data-astro-cid-ge2uvauf] a[data-astro-cid-ge2uvauf]{border-bottom:1px solid var(--hair2)}.links[data-astro-cid-ge2uvauf] a[data-astro-cid-ge2uvauf]:hover{border-color:var(--accent)}.fig[data-astro-cid-vj43zrbv]{border:1px solid var(--hair);background:var(--panel);border-radius:10px;margin:54px 0 0;overflow:hidden}.fig-bar[data-astro-cid-vj43zrbv]{border-bottom:1px solid var(--hair);justify-content:space-between;align-items:center;gap:10px;padding:11px 16px;display:flex}.fig-bar[data-astro-cid-vj43zrbv] .t[data-astro-cid-vj43zrbv]{font-family:var(--mono);color:var(--dim);letter-spacing:.03em;font-size:12px}.fig-bar[data-astro-cid-vj43zrbv] .t[data-astro-cid-vj43zrbv] b[data-astro-cid-vj43zrbv]{color:var(--ink);font-weight:600}.fig-actions[data-astro-cid-vj43zrbv]{gap:8px;display:flex}.btn[data-astro-cid-vj43zrbv]{font-family:var(--mono);letter-spacing:.03em;cursor:pointer;border:1px solid var(--hair2);color:var(--body);background:0 0;border-radius:6px;padding:6px 12px;font-size:11.5px;transition:border-color .15s,color .15s}.btn[data-astro-cid-vj43zrbv]:hover{border-color:var(--accent);color:var(--ink)}.btn[data-astro-cid-vj43zrbv].warn:hover{border-color:var(--amber)}.btn[data-astro-cid-vj43zrbv]:disabled{opacity:.45;cursor:default}.fig-stage[data-astro-cid-vj43zrbv]{position:relative}canvas[data-astro-cid-vj43zrbv]{width:100%;height:380px;display:block}.tip[data-astro-cid-vj43zrbv]{pointer-events:none;z-index:3;font-family:var(--mono);color:var(--ink);background:var(--bg);border:1px solid var(--hair2);opacity:0;white-space:nowrap;border-radius:6px;padding:7px 10px;font-size:11.5px;transition:opacity .12s;position:absolute}.tip[data-astro-cid-vj43zrbv] .m{color:var(--accent)}.fig-log[data-astro-cid-vj43zrbv]{border-top:1px solid var(--hair);font-family:var(--mono);color:var(--dim);min-height:38px;padding:10px 16px;font-size:11.5px}.fig-log[data-astro-cid-vj43zrbv] div{opacity:0;animation:.3s ease-out forwards lg}@keyframes lg{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}.fig-log[data-astro-cid-vj43zrbv] .hl{color:var(--amber)}.fig-log[data-astro-cid-vj43zrbv] .ok{color:var(--good)}.fig-cap[data-astro-cid-vj43zrbv]{font-family:var(--mono);color:var(--faint);padding:0 16px 12px;font-size:11px}.visually-hidden[data-astro-cid-vj43zrbv]{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (max-width:640px){canvas[data-astro-cid-vj43zrbv]{height:300px}}.work[data-astro-cid-zfwgzbbm]{padding:64px 0 20px}.work[data-astro-cid-zfwgzbbm] h2[data-astro-cid-zfwgzbbm]{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin:0 0 10px;font-size:12px;font-weight:500}.row[data-astro-cid-zfwgzbbm]{border-top:1px solid var(--hair);border-radius:8px;grid-template-columns:64px 1fr auto;align-items:baseline;gap:18px;margin:0 -10px;padding:14px 10px;transition:background .15s;display:grid}.row[data-astro-cid-zfwgzbbm]:hover{background:var(--panel2)}a[data-astro-cid-zfwgzbbm].row{color:inherit;border-bottom:none}a[data-astro-cid-zfwgzbbm].row:hover{border-color:#0000}.row[data-astro-cid-zfwgzbbm] .yr[data-astro-cid-zfwgzbbm]{font-family:var(--mono);color:var(--faint);font-size:12px}.row[data-astro-cid-zfwgzbbm] .nm[data-astro-cid-zfwgzbbm]{font-family:var(--mono);color:var(--ink);font-size:13.5px}.row[data-astro-cid-zfwgzbbm] .ds[data-astro-cid-zfwgzbbm]{font-family:var(--sans);color:var(--dim);margin-top:3px;font-size:13.5px;display:block}.row[data-astro-cid-zfwgzbbm] .mt[data-astro-cid-zfwgzbbm]{font-family:var(--mono);color:var(--accent);white-space:nowrap;font-size:12px}@media (max-width:640px){.row[data-astro-cid-zfwgzbbm]{grid-template-columns:52px 1fr}.row[data-astro-cid-zfwgzbbm] .mt[data-astro-cid-zfwgzbbm]{display:none}}.experience[data-astro-cid-obwpkumu]{padding:64px 0 20px}.experience[data-astro-cid-obwpkumu] h2[data-astro-cid-obwpkumu]{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin:0 0 10px;font-size:12px;font-weight:500}.entry[data-astro-cid-obwpkumu]{border-top:1px solid var(--hair);margin:0 -10px;padding:14px 10px}.meta[data-astro-cid-obwpkumu]{font-family:var(--mono);justify-content:space-between;align-items:baseline;gap:18px;font-size:13.5px;display:flex}.co[data-astro-cid-obwpkumu]{color:var(--ink)}.role[data-astro-cid-obwpkumu]{color:var(--dim)}.dates[data-astro-cid-obwpkumu]{color:var(--faint);white-space:nowrap;font-size:12px}.bullets[data-astro-cid-obwpkumu]{font-family:var(--sans);color:var(--dim);margin:8px 0 0;padding:0 0 0 18px;font-size:13.5px}.bullets[data-astro-cid-obwpkumu] li[data-astro-cid-obwpkumu]{margin:0 0 4px}.bullets[data-astro-cid-obwpkumu] li[data-astro-cid-obwpkumu]:last-child{margin-bottom:0}.patents[data-astro-cid-hyzk36wz]{padding:64px 0 20px}.patents[data-astro-cid-hyzk36wz] h2[data-astro-cid-hyzk36wz]{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin:0 0 10px;font-size:12px;font-weight:500}.entry[data-astro-cid-hyzk36wz]{border-top:1px solid var(--hair);margin:0 -10px;padding:14px 10px}.meta[data-astro-cid-hyzk36wz]{font-family:var(--mono);justify-content:space-between;align-items:baseline;gap:18px;font-size:13.5px;display:flex}.ti[data-astro-cid-hyzk36wz]{color:var(--ink)}.yr[data-astro-cid-hyzk36wz]{color:var(--faint);white-space:nowrap;font-size:12px}.ds[data-astro-cid-hyzk36wz]{font-family:var(--sans);color:var(--dim);margin-top:3px;font-size:13.5px;display:block}.skills[data-astro-cid-qm3gwynz]{padding:64px 0 20px}.skills[data-astro-cid-qm3gwynz] h2[data-astro-cid-qm3gwynz]{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin:0 0 10px;font-size:12px;font-weight:500}.intro[data-astro-cid-qm3gwynz]{max-width:58ch;font-family:var(--sans);color:var(--body);margin:0 0 22px;font-size:15px}.group[data-astro-cid-qm3gwynz]{border-top:1px solid var(--hair);margin:0 -10px;padding:14px 10px}.group[data-astro-cid-qm3gwynz] .label[data-astro-cid-qm3gwynz]{font-family:var(--mono);color:var(--faint);margin:0 0 8px;font-size:12px;display:block}.tags[data-astro-cid-qm3gwynz]{flex-wrap:wrap;gap:8px;display:flex}.tag[data-astro-cid-qm3gwynz]{font-family:var(--mono);color:var(--ink);background:var(--panel2);border:1px solid var(--hair2);border-radius:6px;padding:4px 9px;font-size:12.5px}.contact[data-astro-cid-uukcahgk]{padding:64px 0 20px}.contact[data-astro-cid-uukcahgk] h2[data-astro-cid-uukcahgk]{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin:0 0 10px;font-size:12px;font-weight:500}.links[data-astro-cid-uukcahgk]{font-family:var(--mono);gap:20px;font-size:13px;display:flex}.links[data-astro-cid-uukcahgk] a[data-astro-cid-uukcahgk]{border-bottom:1px solid var(--hair2)}.links[data-astro-cid-uukcahgk] a[data-astro-cid-uukcahgk]:hover{border-color:var(--accent)}.page[data-astro-cid-lcdefpme]{max-width:880px;margin:0 auto;padding:0 clamp(18px,4vw,32px)}
