:root{--bg:#0a0b0d;--card:#101215;--ink:#f4f4f5;--mut:#a1a4ab;--faint:#878b93;--line:#1f2227;--line2:#2c3036;--acc:#6f9bff;--accsoft:rgba(111,155,255,.14);--btn:#f4f4f5;--btnfg:#0a0b0d;--font:"Geist","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;--ease:cubic-bezier(.23,1,.32,1);--w:800px;--kw:9rem}html[data-theme=light]{--bg:#fbfbfa;--card:#ffffff;--ink:#111214;--mut:#5b5f66;--faint:#6b6f76;--line:#e7e7e4;--line2:#d4d4d0;--acc:#2f54d6;--accsoft:rgba(47,84,214,.1);--btn:#111214;--btnfg:#fbfbfa}*{box-sizing:border-box;margin:0;padding:0}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.65;-webkit-font-smoothing:antialiased;transition:background .25s,color .25s}a{color:inherit;text-decoration:none}img{max-width:100%}:focus-visible{outline:2px solid var(--acc);outline-offset:3px;border-radius:6px}.progress{position:fixed;top:0;left:0;height:2px;width:0;background:var(--acc);z-index:80}header{position:sticky;top:0;z-index:60;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.bar{max-width:var(--w);margin:0 auto;padding:0 24px;height:58px;display:flex;align-items:center;justify-content:space-between}.brand{display:inline-flex;align-items:center}.logo{height:30px;width:auto;fill:var(--acc);display:block}.bar nav{display:flex;gap:4px;font-size:14px}.bar nav a{color:var(--mut);padding:7px 12px;border-radius:8px;transition:color .15s,background .15s}.bar nav a:hover{color:var(--ink);background:var(--accsoft)}.bar nav a.on{color:var(--ink)}.tbtn{display:grid;place-items:center;width:34px;height:34px;margin-left:4px;border:0;border-radius:8px;background:none;color:var(--mut);cursor:pointer;transition:color .15s,background .15s}.tbtn:hover{color:var(--ink);background:var(--accsoft)}.tbtn:focus-visible{outline:2px solid var(--acc);outline-offset:2px}.tbtn .i-moon,html[data-theme=light] .tbtn .i-sun{display:none}html[data-theme=light] .tbtn .i-moon{display:block}main{max-width:var(--w);margin:0 auto;padding:0 24px}footer{overflow-x:clip}@media (max-width:850px){main{overflow-x:clip}}section{margin-top:60px}h2{font-size:20px;letter-spacing:-.02em;font-weight:700;margin-bottom:20px;display:flex;justify-content:space-between;align-items:baseline}h2 a{font-size:14px;font-weight:500;color:var(--acc)}h2 a:hover{text-decoration:underline}.hero{display:flex;gap:40px;align-items:flex-start;justify-content:space-between;padding-top:64px}.hero h1{font-size:38px;line-height:1.1;letter-spacing:-.035em;font-weight:700}.hero .role{margin-top:8px;font-size:17px;color:var(--ink)}.hero .loc{color:var(--faint);font-size:14.5px;margin-top:2px}.hero .cur{margin-top:12px;color:var(--mut);font-size:14.5px;line-height:1.5}.hero .cur .dot{width:8px;height:8px;border-radius:50%;background:#3dd68c;box-shadow:0 0 0 3px color-mix(in srgb,#3dd68c 22%,transparent);margin-right:9px;display:inline-block;vertical-align:1px}.hero .cur a{color:var(--ink);font-weight:550;text-decoration:underline;text-decoration-color:var(--line2);text-underline-offset:3px}.hero .cur a:hover{text-decoration-color:var(--acc)}.hero .bio{margin-top:20px;color:var(--mut);font-size:16px;max-width:30em}.hero .bio b{color:var(--ink);font-weight:550}.photo{width:172px;height:172px;flex:none;border-radius:22px;object-fit:cover;border:1px solid var(--line2);background:var(--card)}.acts{display:flex;gap:8px;margin-top:24px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:9px 16px;border-radius:10px;font-size:14px;font-weight:500;border:1px solid var(--line2);background:transparent;color:var(--ink);transition:transform .2s var(--ease),border-color .15s,background .15s}.btn:hover{transform:translateY(-1px);border-color:var(--faint)}.btn.p{background:var(--btn);color:var(--btnfg);border-color:var(--btn)}.btn.p:hover{opacity:.92}.load{animation:rise .7s var(--ease) both}.load.d2{animation-delay:.08s}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.gh{max-width:980px}.ghs{overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.ghs::-webkit-scrollbar{display:none}.ghg{display:block;width:100%;min-width:700px;height:auto}.ghg text{fill:var(--faint);font-size:9.5px;font-family:inherit}.ghg rect{transition:opacity .4s var(--ease)}.ghg:not(.on) rect{opacity:.6}.lv0{fill:var(--line);background:var(--line)}.lv1{fill:color-mix(in srgb,var(--acc) 30%,var(--bg));background:color-mix(in srgb,var(--acc) 30%,var(--bg))}.lv2{fill:color-mix(in srgb,var(--acc) 55%,var(--bg));background:color-mix(in srgb,var(--acc) 55%,var(--bg))}.lv3{fill:color-mix(in srgb,var(--acc) 78%,var(--bg));background:color-mix(in srgb,var(--acc) 78%,var(--bg))}.lv4{fill:var(--acc);background:var(--acc)}.ghf{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px 20px;margin-top:12px;color:var(--mut);font-size:13.5px}.ghf a{color:var(--acc)}.leg{display:inline-flex;align-items:center;gap:4px;color:var(--faint);font-size:12.5px}.leg i{display:inline-block;width:11px;height:11px;border-radius:2.5px}.leg i:first-child{margin-left:4px}.leg i:last-child{margin-right:4px}.rows{border-top:1px solid var(--line)}.row{display:grid;grid-template-columns:var(--kw) 1fr;gap:8px 28px;padding:20px 0;border-bottom:1px solid var(--line)}.row .k{color:var(--faint);font-size:14px;padding-top:2px}.row h3{font-size:16px;font-weight:600;letter-spacing:-.01em}.row .co{color:var(--mut);font-size:14.5px}.row p{color:var(--mut);margin-top:6px;max-width:38em}.row ul{margin:8px 0 0 18px;color:var(--mut);max-width:40em}.row li{margin-bottom:5px}.row .v{color:var(--ink);max-width:36em}.row .v.m{color:var(--mut)}.now{font-size:11.5px;font-weight:600;color:var(--acc);background:var(--accsoft);padding:2px 9px;border-radius:99px;margin-left:8px;vertical-align:1px}.row.cur .k{color:var(--acc)}.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.card{display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line);background:var(--card);border-radius:14px;transition:transform .3s var(--ease),border-color .3s,box-shadow .3s}.card:hover{transform:translateY(-4px);border-color:var(--line2);box-shadow:0 14px 34px #00000047}html[data-theme=light] .card:hover{box-shadow:0 14px 34px #00000017}.card .im{overflow:hidden;background:var(--line);aspect-ratio:16/8.4}.card .im img{width:100%;height:100%;object-fit:cover;object-position:top;display:block;transition:transform .5s var(--ease)}.card:hover .im img{transform:scale(1.035)}.card .bd{padding:16px 18px 18px;display:flex;flex-direction:column;gap:6px;flex:1}.card h3{font-size:16px;font-weight:600;letter-spacing:-.01em}.card p{color:var(--mut);font-size:14px;line-height:1.55}.card .st{color:var(--faint);font-size:13px;margin-top:auto;padding-top:8px}.card .lk{display:flex;gap:14px;font-size:13.5px;color:var(--acc);padding-top:6px}.tag{font-size:11.5px;font-weight:600;color:var(--mut);border:1px solid var(--line2);padding:1px 8px;border-radius:99px;margin-left:8px;vertical-align:1px}.card.work .im{aspect-ratio:16/10;background:#0b0d12}.card.work .loop{display:block;width:100%;height:100%}.card.work:hover .im .loop{transform:none}.card .org{display:flex;align-items:center;gap:8px;color:var(--faint);font-size:13.5px}.card .org .lg{width:22px;height:22px;border-radius:6px;background:#fff;display:grid;place-items:center;flex:none}.card .org .lg img{width:17px;height:17px;object-fit:contain}.card.wide{grid-column:1/-1;flex-direction:row}.card.wide .im{width:52%;aspect-ratio:auto;flex:none}.card.wide .bd{padding:22px 24px;justify-content:center}.card.wide h3{font-size:19px}.card.wide p{font-size:14.5px}footer{margin-top:80px;background:var(--card);border-top:1px solid var(--line)}.fbar{max-width:var(--w);margin:0 auto;padding:0 24px;min-height:74px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}.fbar .l{display:flex;align-items:center;gap:20px;font-size:13.5px;color:var(--faint);flex-wrap:wrap;padding:16px 0}.fbar .l a{color:var(--mut)}.fbar .l a:hover{color:var(--ink)}.fbar .r{display:flex;gap:8px;flex-wrap:wrap;padding:16px 0}.pagehead{padding-top:64px}.pagehead h1{font-size:34px;letter-spacing:-.035em;font-weight:700;line-height:1.1}.pagehead p{color:var(--mut);margin-top:10px;max-width:34em}.tl{position:relative;--lx:calc(var(--kw) + 30px)}.tl .row{grid-template-columns:var(--kw) 28px 1fr;gap:0 16px;align-items:start}.tl .dot{justify-self:center;margin-top:6px;width:11px;height:11px;border-radius:50%;background:var(--bg);border:2px solid var(--line2);position:relative;z-index:2;transition:background .25s,border-color .25s,box-shadow .25s}.tl .dot.on{background:var(--acc);border-color:var(--acc);box-shadow:0 0 0 4px var(--accsoft)}.tl-base,.tl-fill{position:absolute;left:var(--lx);width:2px;margin-left:-1px;border-radius:2px;pointer-events:none}.tl-base{background:var(--line2)}.tl-fill{background:var(--acc);height:0;z-index:1;transition:height .12s linear}.ttl{display:flex;gap:12px;align-items:center}.lg{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--line);color:var(--mut);font-size:14px;font-weight:600;border:1px solid var(--line2)}.lg.co{border-radius:10px;background:#fff;object-fit:contain;padding:6px;width:38px;height:38px}.lg.co.tight{padding:3px}.lg.school{border-radius:10px;background:#fff;object-fit:contain;padding:3px;width:46px;height:46px}.tl .c p,.edu .c p{margin-top:10px}.tl .row.cur .lg{color:var(--acc);border-color:var(--acc)}.sk{display:flex;gap:8px;align-items:center;color:var(--mut);font-size:14px;margin-top:10px}.sk svg{flex:none;color:var(--faint)}.soc{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.si{position:relative;width:42px;height:42px;border-radius:50%;border:1px solid var(--line2);display:grid;place-items:center;color:var(--mut);transition:color .2s,border-color .2s,transform .25s var(--ease),background .2s}.si:hover,.si:focus-visible{color:var(--ink);border-color:var(--faint);transform:translateY(-2px);background:var(--accsoft)}.hc{position:absolute;top:calc(100% + 12px);left:50%;width:244px;transform:translate(-50%,4px);opacity:0;visibility:hidden;pointer-events:none;text-align:left;padding:14px 15px;border-radius:14px;background:var(--card);border:1px solid var(--line2);box-shadow:0 18px 44px #00000059;transition:opacity .18s,transform .22s var(--ease),visibility .18s;z-index:90;display:block;color:var(--ink)}html[data-theme=light] .hc{box-shadow:0 18px 44px #00000024}.si:hover .hc,.si:focus-visible .hc{opacity:1;visibility:visible;transform:translate(-50%)}.hc.moved{transform:translateY(4px)}.si:hover .hc.moved,.si:focus-visible .hc.moved{transform:translateY(0)}.up .hc{top:auto;bottom:calc(100% + 12px)}.hh{display:flex;gap:11px;align-items:center}.hi{flex:none;width:36px;height:36px;border-radius:50%;border:1px solid var(--line2);display:grid;place-items:center;color:var(--ink)}.hi svg{width:17px;height:17px}.hh b{display:block;font-size:14.5px;font-weight:600;line-height:1.3}.hh em{display:block;font-style:normal;font-size:13px;color:var(--faint);line-height:1.3}.hd{display:block;margin-top:10px;font-size:13.5px;color:var(--mut);line-height:1.45}.ho{display:block;margin-top:10px;font-size:12.5px;color:var(--acc);font-weight:500}.soc.sm .si{width:38px;height:38px}.acts{align-items:center}.acts .btn{height:40px;padding:0 16px}.acts .soc{margin-top:0;gap:8px}.acts .si{width:40px;height:40px}.soc.sm{margin-top:0}.fbar .r{align-items:center}@media (max-width:700px){.tl{--lx:6px}.tl .row{grid-template-columns:12px 1fr;grid-template-areas:"dot k" "dot c";gap:0 14px}.tl .row .k{grid-area:k}.tl .row .dot{grid-area:dot}.tl .row .c{grid-area:c}.hc{width:220px}}@media (prefers-reduced-motion:reduce){.tl-fill,.si,.hc{transition:none}}@media (max-width:700px){.bar{padding:0 16px}.bar nav{gap:0}.bar nav a{padding:7px 8px}.tbtn{margin-left:0}.hero{flex-direction:column-reverse;gap:22px;padding-top:36px}.photo{width:132px;height:132px}.hero h1{font-size:32px}.row{grid-template-columns:1fr;gap:2px}.grid{grid-template-columns:1fr}.card.wide{flex-direction:column}.card.wide .im{width:100%;aspect-ratio:16/8.4}.fbar{padding:6px 24px}.fbar .l{gap:16px;padding:10px 0 0}.fbar .r{padding:10px 0 18px}}@media (prefers-reduced-motion:reduce){.card:hover,.card:hover .im img,.btn:hover,.si:hover,.si:focus-visible{transform:none}.load{animation:none}.card,.card .im img,.btn{transition:none}}section.first{margin-top:36px}@media (min-width:1000px){:root{--w:1040px;--kw:11rem}section{margin-top:80px}.hero{padding-top:88px;gap:72px;align-items:center}.hero h1{font-size:58px}.hero .role{font-size:21px;margin-top:12px}.hero .loc{font-size:15.5px}.hero .bio{font-size:18px;max-width:34em;margin-top:24px}.photo{width:300px;height:300px;border-radius:30px}.row p,.row ul{max-width:46em}h2{font-size:24px;margin-bottom:24px}.pagehead{padding-top:88px}.pagehead h1{font-size:44px}.grid{grid-template-columns:repeat(3,1fr);gap:20px}.grid.pv{grid-template-columns:1fr 1fr}.rows.cols{display:grid;grid-template-columns:1fr 1fr;column-gap:56px;border-top:0;border-bottom:1px solid var(--line)}.rows.cols .row{grid-template-columns:1fr;gap:4px;border-top:1px solid var(--line);border-bottom:0}footer{margin-top:112px}}@media (min-width:1500px){:root{--w:1200px;--kw:12rem}.hero h1{font-size:64px}.photo{width:340px;height:340px}}@media (min-width:1800px){:root{--w:1320px;--kw:13rem}.hero h1{font-size:68px}.photo{width:380px;height:380px}}
