@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#fcfcfc;--surface:#f4f4f5;--raise:#fff;--ink:#18181b;--body:#3f3f46;--muted:#5e5e66;--line:#e6e6e9;--accent:#c62828;--cta:#c62828;--on-cta:#fff;--tint:#c628280f;--glow:#c6282812;--shadow:0 1px 2px #18181b0a, 0 8px 24px -16px #18181b2e;--font:"Geist Variable", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono:"Geist Mono Variable", ui-monospace, "SFMono-Regular", Menlo, monospace;--gutter:clamp(1rem, .4rem + 2.6vw, 2.5rem);--max:74rem;--prose:46rem;--ease:cubic-bezier(.2, .8, .2, 1);color-scheme:light}:root[data-theme=dark]{--bg:#111113;--surface:#1c1c20;--raise:#17171a;--ink:#f2f2f4;--body:#d0d0d6;--muted:#ababb4;--line:#2c2c32;--accent:#f26461;--cta:#d32f2f;--on-cta:#fff;--tint:#f264611a;--glow:#d32f2f1a;--shadow:0 1px 2px #0000004d, 0 10px 30px -18px #000000b3;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:5rem}body{background:var(--bg);color:var(--ink);font:400 1.0625rem/1.65 var(--font);-webkit-font-smoothing:antialiased;overflow-wrap:break-word;margin:0}img,svg{max-width:100%}a{color:inherit;text-decoration-color:color-mix(in srgb, currentColor 35%, transparent);text-underline-offset:.2em}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}::selection{background:color-mix(in srgb, var(--accent) 22%, transparent)}button{font:inherit;color:inherit}.wrap{max-width:var(--max);padding-inline:var(--gutter);margin-inline:auto}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip{z-index:100;background:var(--cta);color:var(--on-cta);border-radius:.6rem;padding:.6rem 1rem;font-weight:600;text-decoration:none;transition:top .2s;position:fixed;top:-4rem;left:1rem}.skip:focus{top:1rem}.spot{pointer-events:none;z-index:0;background:radial-gradient(520px circle at var(--x,-999px) var(--y,-999px), var(--glow), transparent 70%);position:fixed;inset:0}@media (hover:none),(prefers-reduced-motion:reduce){.spot{display:none}}main,footer{z-index:1;position:relative}.topbar{z-index:30;background:color-mix(in srgb, var(--bg) 84%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(12px);border-bottom:1px solid #0000;transition:border-color .3s;position:sticky;top:0}.topbar.scrolled{border-bottom-color:var(--line)}.topbar .wrap{align-items:center;gap:1rem;height:4rem;display:flex}.brand{letter-spacing:-.01em;white-space:nowrap;align-items:center;gap:0;font-weight:650;text-decoration:none;display:inline-flex}.brand img{object-fit:cover;opacity:0;width:0;height:1.75rem;transition:width .35s var(--ease), margin .35s var(--ease), opacity .3s;border-radius:.55rem;margin-right:0}.topbar.scrolled .brand img,.topbar.inner .brand img{opacity:1;width:1.75rem;margin-right:.6rem}.links{flex:1;justify-content:center;min-width:0;display:flex}.links ul{scrollbar-width:none;gap:.25rem;margin:0;padding:0;list-style:none;display:flex;overflow-x:auto}.links a{color:var(--muted);white-space:nowrap;border-radius:.6rem;padding:.45rem .8rem;font-size:.9375rem;font-weight:500;text-decoration:none;transition:color .2s,background .2s;display:inline-block;position:relative}.links a:hover{color:var(--ink);background:var(--surface)}.links a:after{content:"";background:var(--accent);height:2px;transition:transform .35s var(--ease);border-radius:2px;position:absolute;bottom:.15rem;left:.8rem;right:.8rem;transform:scaleX(0)}.links a[aria-current=true],.links a[aria-current=page]{color:var(--ink)}.links a[aria-current=true]:after,.links a[aria-current=page]:after{transform:scaleX(1)}.tools{align-items:center;gap:.5rem;display:flex}.icon-btn{border:1px solid var(--line);background:var(--raise);cursor:pointer;width:2.75rem;height:2.75rem;color:var(--ink);border-radius:.75rem;place-items:center;display:inline-grid}.icon-btn svg{width:1.05rem;height:1.05rem}.kbd-btn{border:1px solid var(--line);background:var(--raise);cursor:pointer;height:2.75rem;color:var(--muted);border-radius:.75rem;align-items:center;gap:.5rem;padding:0 .75rem;font-size:.875rem;display:inline-flex}.kbd-btn svg{width:1rem;height:1rem}.icon-btn:hover,.kbd-btn:hover{border-color:color-mix(in srgb, var(--ink) 25%, var(--line))}kbd{font-family:var(--mono);border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:.35rem;padding:.05rem .35rem;font-size:.75rem}.theme .moon,:root[data-theme=dark] .theme .sun{display:none}:root[data-theme=dark] .theme .moon{display:block}.no-js [data-js]{display:none}.hero{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:clamp(2rem,5vw,4.5rem);padding-block:clamp(2.5rem,1.5rem + 4vw,5rem) clamp(2rem,1.5rem + 3vw,4rem);display:grid}h1{letter-spacing:-.055em;margin:0 0 1.4rem;font-size:clamp(3rem,1.4rem + 6.2vw,6.4rem);font-weight:780;line-height:.9}.hero h1 span{display:block}.hero h1 span:last-child{color:var(--accent)}.pos{letter-spacing:-.015em;text-wrap:balance;max-width:30ch;margin:0 0 .85rem;font-size:clamp(1.25rem,1.05rem + .8vw,1.6rem);font-weight:600;line-height:1.3}.lede{color:var(--body);max-width:58ch;margin:0 0 1.5rem;font-size:1.0625rem}.avail{align-items:flex-start;gap:.65rem;margin:0 0 .75rem;font-weight:550;display:flex}.avail .live{margin-top:.6em}.facts{flex-wrap:wrap;gap:.4rem;margin:0 0 1.75rem;padding:0;list-style:none;display:flex}.facts li{border:1px solid var(--line);background:var(--raise);color:var(--body);border-radius:999px;padding:.3rem .75rem;font-size:.875rem;line-height:1.4}.live{background:var(--accent);border-radius:50%;flex:none;width:.5rem;height:.5rem;position:relative}@media (prefers-reduced-motion:no-preference){.live:before{content:"";background:var(--accent);animation:ping 2.2s var(--ease) infinite;border-radius:50%;position:absolute;inset:0}}@keyframes ping{70%,to{opacity:0;transform:scale(2.6)}}.actions{flex-wrap:wrap;align-items:center;gap:.6rem .75rem;display:flex}.btn{border:1px solid var(--line);background:var(--raise);min-height:2.75rem;color:var(--ink);cursor:pointer;transition:border-color .2s, background .2s, transform .2s var(--ease);border-radius:.75rem;align-items:center;gap:.45rem;padding:0 1rem;font-size:.9375rem;font-weight:550;text-decoration:none;display:inline-flex;position:relative}.btn:hover{border-color:color-mix(in srgb, var(--ink) 25%, var(--line))}.btn:active{transform:translateY(1px)}.btn svg{width:1rem;height:1rem}.btn.primary{background:var(--cta);border-color:var(--cta);color:var(--on-cta)}.btn.primary:hover{background:color-mix(in srgb, var(--cta) 88%, black)}.btn .sub{color:var(--muted);font-weight:450}.btn.primary .sub{color:inherit}.seg{display:inline-flex}.seg .btn:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.seg .btn:last-child{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0;padding:0 .85rem}.quiet{z-index:1;flex-wrap:wrap;gap:.35rem 1.1rem;font-size:.9375rem;display:flex;position:relative}.quiet a{min-height:1.75rem;color:var(--muted);align-items:center;gap:.25rem;font-weight:550;text-decoration:none;transition:color .2s;display:inline-flex}.quiet a:hover{color:var(--accent)}.quiet svg{width:.8rem;height:.8rem}.portrait-wrap{isolation:isolate;margin:0 1.25rem 1.25rem 0;position:relative}.portrait-wrap:before{content:"";z-index:-1;background:var(--cta);transition:transform .5s var(--ease);border-radius:1.75rem;position:absolute;inset:0;transform:translate(1rem,1rem)rotate(2.5deg)}.portrait{aspect-ratio:1;object-fit:cover;width:clamp(11rem,8rem + 9vw,16.5rem);height:auto;box-shadow:0 0 0 1px var(--line);transition:transform .5s var(--ease);border-radius:1.75rem;display:block}@media (hover:hover) and (pointer:fine){.portrait-wrap:hover .portrait{transform:translate(-4px,-4px)rotate(-1deg)}.portrait-wrap:hover:before{transform:translate(1.25rem,1.25rem)rotate(4deg)}}.seal{width:7.25rem;height:7.25rem;position:absolute;bottom:-2.2rem;left:-2.6rem;overflow:visible}.seal-bg{fill:var(--raise);stroke:var(--line);stroke-width:1px}.seal text{font:600 10.5px var(--mono);fill:var(--ink);letter-spacing:.06em}.seal-dot{fill:var(--accent)}.seal-spin{transform-origin:60px 60px}@media (prefers-reduced-motion:no-preference){.seal-spin{animation:24s linear infinite spin}}@keyframes spin{to{transform:rotate(360deg)}}section{padding-block:clamp(2rem,1.5rem + 2vw,3.5rem)}.head{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1.5rem;display:flex}h2{letter-spacing:-.025em;margin:0;font-size:clamp(1.5rem,1.3rem + .7vw,1.875rem);font-weight:700;line-height:1.15}.head p{color:var(--muted);margin:0;font-size:.9375rem}.ttl{letter-spacing:-.01em;margin:0;font-size:1.0625rem;font-weight:650;line-height:1.35;transition:color .2s}.ttl a{text-decoration:none}.stretch:after{content:"";border-radius:inherit;position:absolute;inset:0}.org-line{color:var(--muted);margin-top:.15rem;font-size:.9375rem}.desc{color:var(--body);max-width:68ch;margin:.6rem 0 0;font-size:.96875rem;line-height:1.6}.when{font-family:var(--mono);color:var(--muted);white-space:nowrap;letter-spacing:-.01em;font-size:.8125rem}.arr{width:1rem;height:1rem;color:var(--muted);transition:transform .3s var(--ease), color .2s;flex:none}.cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin:0;padding:0;list-style:none;display:grid}.card{border:1px solid var(--line);background:var(--raise);box-shadow:var(--shadow);transition:border-color .25s, transform .35s var(--ease), box-shadow .35s;border-radius:1.25rem;flex-direction:column;padding:1.5rem 1.5rem 1.25rem;display:flex;position:relative}.card-top{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;display:flex}.glyph{background:var(--tint);width:2.6rem;height:2.6rem;color:var(--accent);transition:transform .35s var(--ease), background .25s, color .25s;border-radius:.8rem;place-items:center;display:inline-grid}.glyph svg{width:1.5rem;height:1.5rem}.card .org-line{margin-top:.2rem;font-size:.875rem}.card .ttl{font-size:1.1875rem}.card .desc{margin-bottom:1.25rem}.fig{border-top:1px solid var(--line);flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;margin-top:auto;padding-top:1rem;display:flex}@supports (grid-template-rows:subgrid){.card{grid-row:span 5;grid-template-rows:subgrid;row-gap:0;display:grid}.fig{align-content:start;align-self:stretch;align-items:baseline;margin-top:0}.card .desc{align-self:start}}.fig b{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:1.375rem;font-weight:700;line-height:1.2}.fig span{color:var(--muted);flex:14rem;font-size:.8125rem;line-height:1.45}@media (hover:hover) and (pointer:fine){.card:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--line));transform:translateY(-3px)}.card:hover .ttl{color:var(--accent)}.card:hover .arr{color:var(--accent);transform:translate(2px,-2px)}.card:hover .glyph{background:var(--cta);color:var(--on-cta);transform:rotate(-6deg)scale(1.04)}}.list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.item{border-bottom:1px solid var(--line);padding:1.15rem 0;transition:opacity .25s;position:relative}.line{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1.5rem;display:flex}.line .ttl{flex:22rem}.item .quiet{margin-top:.7rem}@media screen{.tiles{border-top:0;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.tiles>.item{border:1px solid var(--line);border-radius:1.1rem;flex-direction:column;padding:1.15rem 1.25rem 1.1rem;display:flex}.tiles .line{flex-flow:column-reverse;align-items:flex-start;gap:.3rem}.tiles .line .ttl{flex:none}.tiles .desc{margin-top:.45rem;font-size:.9375rem;line-height:1.55}.tiles .item>.quiet:last-child{margin-top:auto;padding-top:.85rem}.link-tile{background:var(--raise);box-shadow:var(--shadow);transition:border-color .25s, transform .35s var(--ease), box-shadow .35s}.link-tile>.arr{position:absolute;top:1.15rem;right:1.15rem}.link-tile .line{padding-right:1.75rem}.link-tile .desc{margin-bottom:1rem}}.tile-foot{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;margin-top:auto;padding-top:.85rem;display:flex}.item .tile-foot .quiet{margin-top:0}.go{color:var(--accent);align-items:center;gap:.35rem;font-size:.875rem;font-weight:600;display:inline-flex}.go svg{width:.95rem;height:.95rem;transition:transform .3s var(--ease)}@media (hover:hover) and (pointer:fine){.item:has(.stretch):hover .ttl{color:var(--accent)}.link-tile:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--line));transform:translateY(-3px)}.link-tile:hover>.arr{color:var(--accent);transform:translate(2px,-2px)}.link-tile:hover .go svg{transform:translate(3px)}}.more{transition:grid-template-rows .5s var(--ease);grid-template-rows:0fr;display:grid}.more>div{min-height:0;overflow:hidden}.more.open,.no-js .more{grid-template-rows:1fr}.more .list{border-top:0}.toggle-more{min-height:2.75rem;color:var(--ink);cursor:pointer;background:0 0;border:0;align-items:center;gap:.4rem;margin-top:1rem;padding:.4rem 0;font-size:.9375rem;font-weight:600;display:inline-flex}.toggle-more svg{width:1rem;height:1rem;transition:transform .35s var(--ease)}.toggle-more[aria-expanded=true] svg{transform:rotate(180deg)}.toggle-more:hover{color:var(--accent)}.sub-head{letter-spacing:-.01em;margin:2.5rem 0 1rem;font-size:1.125rem;font-weight:650}.note{color:var(--muted);max-width:72ch;margin:1rem 0 0;font-size:.9375rem}@media screen{.exp-grid{grid-template-columns:minmax(0,1fr) 19rem;align-items:start;gap:0 3rem;display:grid}.exp-side{position:sticky;top:5.5rem}.exp-side .sub-head{margin-top:0}.exp-side .tiles{grid-template-columns:minmax(0,1fr);gap:.75rem}}.chips{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.chips li{background:var(--surface);color:var(--ink);border:1px solid #0000;border-radius:999px;padding:.3rem .7rem;font-size:.875rem;line-height:1.4}.coursework{max-width:none}.coursework .chips{margin:.25rem 0 .5rem}.coursework .chips li{border-color:var(--line);color:var(--body);background:0 0;padding:.15rem .6rem;font-size:.8125rem}.skills,.skills dd{margin:0}@media screen{.skills{border:1px solid var(--line);background:var(--raise);box-shadow:var(--shadow);border-radius:1.1rem}.skills>div{grid-template-columns:14rem minmax(0,1fr);align-items:start;gap:.75rem 1.5rem;padding:1rem 1.25rem;display:grid}.skills>div+div{border-top:1px solid var(--line)}.skills dt{align-items:center;gap:.75rem;font-size:.9375rem;font-weight:650;line-height:1.3;display:flex}.skills dd{padding-top:.15rem}.skills .glyph{border-radius:.65rem;flex:none;width:2.1rem;height:2.1rem}.skills .glyph svg{width:1.15rem;height:1.15rem}.skills .lead{background:linear-gradient(90deg, var(--tint), transparent 70%);border-radius:1.1rem 1.1rem 0 0}.skills .lead .glyph{background:var(--cta);color:var(--on-cta)}.skills .lead .chips li{background:var(--raise);border-color:color-mix(in srgb, var(--accent) 30%, var(--line));font-weight:550}}.filters{background:var(--surface);border-radius:.9rem;flex-wrap:wrap;gap:.15rem;margin-bottom:1.25rem;padding:.25rem;display:inline-flex;position:relative}.filters button{z-index:1;min-height:2.25rem;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:.65rem;padding:.4rem .85rem;font-size:.875rem;font-weight:550;transition:color .2s;position:relative}.filters button[aria-pressed=true]{color:var(--ink)}.pill{z-index:0;background:var(--raise);width:0;height:0;box-shadow:0 1px 2px #00000014, 0 0 0 1px var(--line);transition:transform .35s var(--ease), width .35s var(--ease), height .35s var(--ease);border-radius:.65rem;position:absolute;top:0;left:0}.item[hidden]{display:none}details.archive{margin-top:1.25rem}details.archive summary,details.coursework summary{cursor:pointer;align-items:center;gap:.4rem;min-height:2.75rem;padding:.5rem 0;font-size:.9375rem;font-weight:600;list-style:none;display:inline-flex}details.archive summary:hover,details.coursework summary:hover{color:var(--accent)}details.archive summary::-webkit-details-marker,details.coursework summary::-webkit-details-marker{display:none}details.archive summary svg,details.coursework summary svg{width:1rem;height:1rem;transition:transform .3s var(--ease)}details.archive[open] summary svg,details.coursework[open] summary svg{transform:rotate(90deg)}details.archive .list{margin-top:.5rem}.contact-card{border:1px solid var(--line);background:var(--raise);box-shadow:var(--shadow);border-radius:1.5rem;padding:clamp(1.5rem,1rem + 3vw,3rem);position:relative;overflow:hidden}.contact-card:before{content:"";background:radial-gradient(circle, var(--glow), transparent 65%);pointer-events:none;border-radius:50%;width:32rem;height:32rem;position:absolute;inset:auto -15% -70% auto}.contact-card h2{margin-bottom:.5rem}.contact-card p{color:var(--muted);margin:0 0 1.5rem}.email{flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin-bottom:1.5rem;display:flex}.email-addr{letter-spacing:-.025em;overflow-wrap:anywhere;font-size:clamp(1.35rem,.9rem + 1.8vw,2.25rem);font-weight:650;text-decoration:none}.email-addr[href]:hover{color:var(--accent)}.contact-meta{color:var(--muted);flex-wrap:wrap;gap:.5rem 1.5rem;margin-top:1.5rem;font-size:.875rem;display:flex}.contact-meta svg{vertical-align:-.1rem;width:.9rem;height:.9rem}footer.foot{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;padding-block:2rem 3rem;font-size:.8125rem;display:flex}footer.foot a{color:inherit}.toast{z-index:60;opacity:0;pointer-events:none;background:var(--ink);color:var(--bg);transition:opacity .25s, transform .35s var(--ease);border-radius:.8rem;align-items:center;gap:.5rem;padding:.6rem .95rem;font-size:.9rem;font-weight:550;display:inline-flex;position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%,1rem);box-shadow:0 12px 30px -10px #00000059}.toast.show{opacity:1;transform:translate(-50%)}.toast svg{width:1rem;height:1rem;color:var(--accent)}dialog.cmdk{border:1px solid var(--line);background:var(--raise);width:min(36rem,100vw - 2rem);max-height:min(28rem,70vh);color:var(--ink);border-radius:1rem;margin-top:12vh;padding:0;box-shadow:0 30px 80px -20px #00000073}dialog.cmdk::backdrop{backdrop-filter:blur(3px);background:#0a0a0c59}.cmdk-in{border-bottom:1px solid var(--line);align-items:center;gap:.6rem;padding:.85rem 1rem;display:flex}.cmdk-in svg{width:1.1rem;height:1.1rem;color:var(--muted);flex:none}.cmdk-in input{min-width:0;font:inherit;color:var(--ink);background:0 0;border:0;outline:0;flex:1;font-size:1rem}.cmdk-list{max-height:calc(min(28rem,70vh) - 3.5rem);margin:0;padding:.4rem;list-style:none;overflow:auto}.cmdk-list li{cursor:pointer;border-radius:.6rem;justify-content:space-between;align-items:center;gap:1rem;padding:.55rem .7rem;font-size:.9375rem;display:flex}.cmdk-list li small{color:var(--muted);font-family:var(--mono);white-space:nowrap;font-size:.75rem}.cmdk-list li[aria-selected=true]{background:var(--tint);color:var(--accent)}.cmdk-empty{color:var(--muted);padding:1rem;font-size:.9375rem}.page{max-width:var(--prose);padding:clamp(1.5rem, 4vw, 3.5rem) var(--gutter) 4rem;margin-inline:auto}.back{min-height:2.75rem;color:var(--muted);align-items:center;gap:.4rem;font-size:.9375rem;font-weight:600;text-decoration:none;display:inline-flex}.back:hover{color:var(--accent)}.back svg{width:1rem;height:1rem}.kicker{color:var(--muted);margin:1.5rem 0 .75rem;font-size:.875rem}.page h1{letter-spacing:-.04em;text-wrap:balance;max-width:22ch;font-size:clamp(2rem,1.4rem + 2.6vw,3rem);line-height:1.05}.metric{background:var(--tint);border-radius:1rem;flex-direction:column;gap:.15rem;margin:.25rem 0 1.5rem;padding:.9rem 1.1rem;display:inline-flex}.metric b{letter-spacing:-.02em;color:var(--accent);font-variant-numeric:tabular-nums;font-size:1.75rem;font-weight:750;line-height:1.2}.metric span{color:var(--muted);max-width:40ch;font-size:.875rem}.disclaimer{color:var(--muted);border-left:2px solid var(--line);margin:0 0 2rem;padding-left:.8rem;font-size:.875rem}.prose{max-width:68ch}.prose h2{letter-spacing:-.015em;margin:2.5rem 0 .6rem;font-size:1.25rem}.prose p,.prose li{color:color-mix(in srgb, var(--ink) 86%, var(--bg))}.prose ul,.prose ol{gap:.35rem;padding-left:1.2rem;display:grid}.prose strong{color:var(--ink);font-weight:650}.prose a{color:var(--accent)}.tags{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.tags li{font-family:var(--mono);color:var(--muted);background:var(--surface);border-radius:999px;padding:.15rem .65rem;font-size:.8125rem}.page-foot{border-top:1px solid var(--line);margin-top:3rem;padding-top:1.5rem}.page-foot h2{margin:0 0 .75rem;font-size:1.125rem}.pager{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:2.5rem;display:grid}.pager a{border:1px solid var(--line);background:var(--raise);border-radius:1rem;flex-direction:column;gap:.2rem;padding:1rem 1.1rem;text-decoration:none;transition:border-color .2s;display:flex}.pager a:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--line))}.pager a:hover b{color:var(--accent)}.pager small{color:var(--muted);align-items:center;gap:.3rem;font-size:.8125rem;display:inline-flex}.pager small svg{width:.85rem;height:.85rem}.pager .next{text-align:right;grid-column:2;align-items:flex-end}.pager b{font-weight:650;line-height:1.35;transition:color .2s}.dg{border:1px solid var(--line);background:var(--raise);border-radius:1rem;margin:2rem 0;padding:1.25rem}.dg figcaption{color:var(--muted);margin-top:1rem;font-size:.875rem;line-height:1.5}.dg-svg{width:100%;max-width:34rem;height:auto;margin-inline:auto;display:block;overflow:visible}.dg-svg path{fill:none;stroke-linecap:round;stroke-linejoin:round}.dg-grid{stroke:var(--line);stroke-width:1.5px}.dg-muted{stroke:color-mix(in srgb, var(--muted) 70%, var(--bg));stroke-width:2px}.dg-ink{stroke:var(--ink);stroke-width:1.5px}.dg-acc{stroke:var(--accent);stroke-width:3px}.dg-t{font:500 13px var(--mono);fill:var(--ink)}.dg-t-m{fill:var(--muted)}.dg-t-acc{fill:var(--accent);font-weight:600}.dg-bar{fill:color-mix(in srgb, var(--muted) 45%, var(--bg))}.dg-train{fill:var(--ink)}.dg-test{fill:var(--accent)}.dg-steps{counter-reset:dg;gap:0;margin:0;padding:0;list-style:none;display:grid}.dg-steps li{counter-increment:dg;color:var(--ink);padding:0 0 1.1rem 2.6rem;position:relative}.dg-steps li:before{content:counter(dg);border:1px solid var(--line);background:var(--surface);width:1.7rem;height:1.7rem;font:600 .75rem var(--mono);color:var(--muted);border-radius:50%;place-items:center;display:grid;position:absolute;top:0;left:0}.dg-steps li:after{content:"";background:var(--line);width:1px;position:absolute;top:1.85rem;bottom:.15rem;left:.85rem}.dg-steps li.dg-end{padding-bottom:0}.dg-steps li.dg-end:after{display:none}.dg-steps li.dg-end:before{background:var(--cta);border-color:var(--cta);color:var(--on-cta)}.dg-steps b{font-size:.9375rem;font-weight:600;line-height:1.7rem;display:block}.dg-steps span{color:var(--muted);font-size:.875rem;line-height:1.45;display:block}.dg-loop{border-top:1px dashed var(--line);color:var(--accent);align-items:center;gap:.5rem;margin:1rem 0 0;padding-top:.9rem;font-size:.875rem;font-weight:550;display:flex}.dg-loop svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:1rem;height:1rem}.dg-tree{text-align:center;justify-items:center;gap:1.5rem;display:grid}.dg-branch{grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;width:100%;display:grid;position:relative}.dg-node{border:1px solid var(--line);background:var(--surface);border-radius:.8rem;flex-direction:column;justify-self:center;gap:.1rem;width:100%;min-width:0;max-width:20rem;padding:.7rem .9rem;display:flex;position:relative}.dg-branch .dg-node{padding:.65rem .6rem}.dg-node b{font-size:.9375rem;font-weight:600;line-height:1.3}.dg-node span{color:var(--muted);font-size:.8125rem;line-height:1.35}.dg-node-acc{border-color:color-mix(in srgb, var(--accent) 50%, var(--line));background:var(--tint)}.dg-node-acc b{color:var(--accent)}.dg-tree>.dg-node+.dg-node:before,.dg-tree>.dg-node:has(+.dg-branch):after,.dg-branch>.dg-node:before,.dg-branch:before{content:"";background:var(--muted);opacity:.5;position:absolute}.dg-tree>.dg-node+.dg-node:before{width:1px;height:1.5rem;bottom:100%;left:50%}.dg-tree>.dg-node:has(+.dg-branch):after{width:1px;height:.75rem;top:100%;left:50%}.dg-branch>.dg-node:before{width:1px;height:.75rem;bottom:100%;left:50%}.dg-branch:before{height:1px;top:-.75rem;left:calc(16.6667% - .25rem);right:calc(16.6667% - .25rem)}.intro{color:var(--muted);max-width:60ch;margin:0 0 2rem}.papers{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.paper{border-bottom:1px solid var(--line);padding:2.25rem 0;scroll-margin-top:5rem}.paper h2{letter-spacing:-.02em;text-wrap:balance;max-width:34ch;font-size:clamp(1.25rem,1.1rem + .6vw,1.5rem);line-height:1.25}.paper .when{margin-bottom:.6rem;display:block}.paper .quiet{margin:.9rem 0 0}.paper h3{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:1.6rem 0 .4rem;font-size:.8125rem;font-weight:600}.paper p{max-width:68ch;margin:0}.paper .key{background:var(--tint);border-radius:1rem;margin-top:1.25rem;padding:.9rem 1.1rem}.paper .key p{color:var(--ink)}.paper figure{margin:1.75rem 0 0}.paper figure img{border:1px solid var(--line);background:#fff;border-radius:.8rem;width:100%;height:auto;display:block}.paper figcaption{color:var(--muted);max-width:68ch;margin-top:.6rem;font-size:.875rem}.paper .abstract{color:color-mix(in srgb, var(--ink) 86%, var(--bg))}.paper:target h2{color:var(--accent)}@media (prefers-reduced-motion:no-preference){.paper:target{animation:landed 2.4s var(--ease)}@keyframes landed{0%{background:var(--tint);box-shadow:0 0 0 1rem var(--tint)}}}.lost{text-align:left;padding-block:clamp(3rem,10vh,7rem)}.lost .code{font-family:var(--mono);color:var(--accent);margin:0 0 1rem;font-weight:600}.lost p{color:var(--muted);max-width:52ch}.lost .actions{margin-top:2rem}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}::view-transition-group(*){animation-duration:.4s;animation-timing-function:var(--ease)}.vt-theme::view-transition-old(root),.vt-theme::view-transition-new(root){mix-blend-mode:normal;animation:none}.vt-theme::view-transition-new(root){animation:reveal .6s var(--ease)}@keyframes reveal{0%{clip-path:circle(0 at var(--vx,50%) var(--vy,50%))}to{clip-path:circle(var(--vr,150vmax) at var(--vx,50%) var(--vy,50%))}}.topbar{view-transition-name:topbar}.mlinks{view-transition-name:mlinks}.cs-title{view-transition-name:cs-title}.page .metric{view-transition-name:cs-metric}@media (width<=60rem){.cards,.tiles,.exp-side .tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.exp-grid{grid-template-columns:minmax(0,1fr)}.exp-side{position:static}.exp-side .sub-head{margin-top:2.5rem}.skills>div{grid-template-columns:11rem minmax(0,1fr)}}@media (width<=52rem){.cards{grid-template-columns:minmax(0,1fr)}.links{display:none}.brand img{opacity:1;width:1.75rem;margin-right:.6rem}.topbar .wrap{justify-content:space-between}.mlinks{z-index:29;background:color-mix(in srgb, var(--bg) 84%, transparent);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:block;position:sticky;top:4rem}.mlinks ul{padding:.4rem var(--gutter);scrollbar-width:none;gap:.15rem;margin:0;list-style:none;display:flex;overflow-x:auto}.mlinks a{color:var(--muted);white-space:nowrap;border-radius:.6rem;padding:.45rem .7rem;font-size:.875rem;font-weight:550;text-decoration:none;display:inline-block}.mlinks a[aria-current=true],.mlinks a[aria-current=page]{color:var(--accent);background:var(--tint)}html{scroll-padding-top:7.5rem}.paper{scroll-margin-top:7.5rem}}@media (width>=52.01rem){.mlinks{display:none}}@media (width<=30rem){.mlinks ul{padding-inline:calc(var(--gutter) - .4rem);justify-content:space-between;gap:0}.mlinks a{padding:.5rem .4rem;font-size:.8125rem}}@media (width<=40rem){.hero{grid-template-columns:minmax(0,1fr)}.hero .portrait-wrap{order:-1;justify-self:start;margin:0 .75rem .75rem 0}.hero .portrait{border-radius:1.4rem;width:7.5rem}.portrait-wrap:before{border-radius:1.4rem;transform:translate(.6rem,.6rem)rotate(2.5deg)}.seal{width:4.75rem;height:4.75rem;bottom:.4rem;left:auto;right:-5.75rem}.tiles,.exp-side .tiles,.skills>div{grid-template-columns:minmax(0,1fr)}.skills>div{gap:.6rem;padding:.9rem 1rem}.chips{gap:.3rem}.chips li{padding:.2rem .55rem;font-size:.8125rem}.kbd-btn kbd,.kbd-btn span{display:none}.kbd-btn{justify-content:center;width:2.75rem;padding:0}.card{padding:1.25rem 1.15rem 1.1rem}.pager{grid-template-columns:minmax(0,1fr)}.pager .next{grid-column:auto}.dg{padding:1rem}.dg-branch{gap:.5rem}.dg-branch:before{left:calc(16.6667% - .166667rem);right:calc(16.6667% - .166667rem)}.dg-branch .dg-node{padding:.55rem .3rem}.dg-branch .dg-node b{font-size:.8125rem}.dg-branch .dg-node span{font-size:.75rem}}@media screen and (width<=40rem){.rail{overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:var(--gutter);margin-inline:calc(-1 * var(--gutter));padding:.25rem var(--gutter) 1rem;scrollbar-width:none;gap:.75rem;display:flex;overflow-x:auto}.rail::-webkit-scrollbar{display:none}.rail>li{scroll-snap-align:start;flex:0 0 84%}.rail>.card{grid-template-rows:auto auto auto 1fr auto}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.print-only{display:none}@media print{:root,:root[data-theme=dark]{--bg:#fff;--surface:#fff;--raise:#fff;--ink:#000;--muted:#3f3f46;--line:#d4d4d8;--accent:#b71c1c;--cta:#b71c1c;--tint:transparent;--shadow:none;color-scheme:light}@page{size:letter;margin:11mm 13mm}html{font-size:7.6pt}body{background:#fff;line-height:1.32}a{text-decoration:none}.print-only{display:inline}.spot,.topbar,.mlinks,.skip,.toast,dialog,.portrait-wrap,.filters,.toggle-more,details.archive,.card-top,.actions .btn,.actions .seg,[data-js],.back,.pager,footer.foot,.desc,.item .quiet,.note,.head p,.fig span,.live,[data-kind=paper],#projects .org-line,.contact-card h2+p,.contact-card>.quiet,.item>.arr,.tile-foot,.skills .glyph,.skills .langs{display:none!important}.facts{display:block}.facts li,.chips,.chips li{font:inherit;color:inherit;background:0 0;border:0;padding:0;display:inline}.facts li+li:before{content:" · "}.chips li+li:before{content:", "}.lede{display:block!important}.wrap{max-width:none;padding:0}main>.wrap{grid-template-rows:auto auto auto auto 1fr auto;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;column-gap:7mm;display:grid}.hero{grid-area:1/1/2/-1}#work{grid-area:2/1/3/-1}#experience{grid-area:3/1/6/2}#research{grid-area:3/2/4/3}#projects{grid-area:4/2/5/3}#contact{grid-area:6/1/7/-1}section{margin-top:3.2mm;padding:0}.hero{margin:0;padding:0;display:block}h1{letter-spacing:-.04em;margin:0 0 1mm;font-size:2.9rem;line-height:1}.hero h1 span{display:inline}.pos{max-width:none;margin:0 0 .6mm;font-size:1.35rem}.lede,.facts,.avail{max-width:none;margin:0 0 .4mm;font-size:1rem}.avail{font-weight:600}.actions{margin-top:.8mm;display:block}.actions .quiet{gap:0 5mm;display:flex}.quiet a{min-height:0;color:var(--ink)}.quiet svg{display:none}.actions .quiet a:after{content:": " attr(href);color:var(--muted);font-weight:400}h2{letter-spacing:-.01em;color:var(--accent);font-size:1.3rem}.head{border-bottom:1px solid var(--line);margin:0 0 1mm;padding-bottom:.6mm}.ttl,.card .ttl{font-size:1rem;line-height:1.3}.org-line,.card .org-line{margin:0;font-size:.92rem}.when{font-size:.85rem}.cards{grid-template-columns:1fr 1fr;column-gap:7mm;display:grid}.card{box-shadow:none;break-inside:avoid;border:0;border-radius:0;padding:.7mm 0;display:block}.fig{border:0;margin:0;padding:0;display:block}.fig b{color:var(--accent);font-size:.95rem}.list{border-top:0}.item{break-inside:avoid;border-bottom:0;padding:.55mm 0}.line{flex-wrap:nowrap;gap:3mm}.line .ttl{flex:auto}.more{display:block}.more>div{overflow:visible}.sub-head{margin:2mm 0 .6mm;font-size:1.05rem}.skills{display:block}.skills div{background:0 0;border:0;padding:.3mm 0}.skills dt{font-size:.92rem;display:inline}.skills dt:after{content:": "}.skills dd{color:var(--muted);font-size:.92rem;display:inline}.contact-card{box-shadow:none;border:0;border-radius:0;padding:0;overflow:visible}.contact-card:before,.contact-card h2{display:none}.email{margin:0 5mm 0 0;display:inline-flex}.email-addr{font-size:1rem;font-weight:600}.contact-meta{gap:0 5mm;margin:0;font-size:1rem;display:inline-flex}#contact{border-top:1px solid var(--line);padding-top:1.5mm}.item[hidden]{display:block!important}[data-kind=paper][hidden]{display:none!important}}
