@font-face{font-family:Figtree;font-style:normal;font-weight:300 900;font-display:swap;src:url(../media/400bf8aa837fcb7e-s.2u3lqdovtp4z3.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Figtree;font-style:normal;font-weight:300 900;font-display:swap;src:url(../media/f7aa21714c1c53f8-s.p.0jgzmitmnoe6_.woff2)format("woff2");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:Figtree Fallback;src:local(Arial);ascent-override:94.32%;descent-override:24.82%;line-gap-override:0.0%;size-adjust:100.72%}.zwG2HG_className{font-family:Figtree,Figtree Fallback;font-style:normal}.zwG2HG_variable{--font-sans:"Figtree", "Figtree Fallback"}
@font-face{font-family:Newsreader;font-style:italic;font-weight:200 800;font-display:swap;src:url(../media/79e9e0e3b9220e46-s.15s2gb72mvmw9.woff2)format("woff2");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:Newsreader;font-style:italic;font-weight:200 800;font-display:swap;src:url(../media/e62850744c7f266e-s.43_ypb-kqawuo.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader;font-style:italic;font-weight:200 800;font-display:swap;src:url(../media/9433d1a810498265-s.p.3z77xcxvtx9_e.woff2)format("woff2");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:Newsreader Fallback;src:local(Times New Roman);ascent-override:69.68%;descent-override:25.12%;line-gap-override:0.0%;size-adjust:105.48%}.Kk-62W_className{font-family:Newsreader,Newsreader Fallback;font-style:italic}.Kk-62W_variable{--font-serif:"Newsreader", "Newsreader Fallback"}
:root{--bg:#0f0f11;--sidebar:#151518;--surface:#19191c;--tile:#1c1c20;--ink:#fcfcfd;--ink-2:#e0e0e6;--ink-body:#c8c8d2;--muted:#a0a0aa;--faint:#888892;--subtle:#83838c;--line:#26262b;--line-strong:#383840;--hover:#222227;--highlight:#ffffff0d;--green:#2f9e5b;--green-ink:#5fd08a;--radius:10px;--sidebar-w:264px;--col:640px;--font-sans:"Figtree", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-serif:"Newsreader", Georgia, "Times New Roman", serif;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);--ease-drawer:cubic-bezier(.32, .72, 0, 1);--grain:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n' color-interpolation-filters='sRGB'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='3 0 0 0 -1 3 0 0 0 -1 3 0 0 0 -1 0 0 0 0 1'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='.05'/></svg>");--grain-soft:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n' color-interpolation-filters='sRGB'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='3 0 0 0 -1 3 0 0 0 -1 3 0 0 0 -1 0 0 0 0 1'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='.03'/></svg>");--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg:#fcfcfb;--sidebar:#f8f8f7;--surface:#fff;--tile:#ededec;--ink:#0a0a0c;--ink-2:#242429;--ink-body:#34343a;--muted:#5c5c66;--faint:#686873;--subtle:#71717a;--line:#ebebea;--line-strong:#dcdcda;--hover:#f5f5f3;--highlight:#fff;--green:#2f9e5b;--green-ink:#1e6b3a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#0f0f11;--sidebar:#151518;--surface:#19191c;--tile:#1c1c20;--ink:#fcfcfd;--ink-2:#e0e0e6;--ink-body:#c8c8d2;--muted:#a0a0aa;--faint:#888892;--subtle:#83838c;--line:#26262b;--line-strong:#383840;--hover:#222227;--highlight:#ffffff0d;--green:#2f9e5b;--green-ink:#5fd08a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html,body,:not(.project-dialog-body){scrollbar-width:none!important;-ms-overflow-style:none!important}:not(.project-dialog-body)::-webkit-scrollbar{background:0 0!important;width:0!important;height:0!important;display:none!important}*{box-sizing:border-box}html,body{margin:0;padding:0}html{cursor:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M3 3v17l5.2-4.6h7.2z' fill='white' stroke='%23111113' stroke-width='1.5' stroke-linejoin='round'/></svg>") 3 3,auto;scroll-behavior:auto}body{background:var(--grain-soft), var(--bg);background-color:var(--bg);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:100%;line-height:1.5;overflow-x:hidden}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}h1,h2,h3,h4,p{margin:0}button{font:inherit;color:inherit;background:0 0;border:0}:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:6px}.serif{font-family:var(--font-serif);font-style:italic;font-weight:400}.shell{min-height:100vh;transition:padding-left .3s ease-in-out;display:flex;position:relative}.sidebar{background:var(--grain), linear-gradient(var(--surface), var(--bg));width:260px;height:calc(100vh - 24px);box-shadow:inset 0 1px 0 var(--highlight), 0 1px 2px #1111130d, 0 18px 40px #11111317;border:1px solid var(--line);z-index:20;will-change:transform, margin-left;border-radius:26px;flex-shrink:0;margin:12px 0 12px 12px;padding:5px;transition:transform .3s ease-in-out,margin-left .3s ease-in-out;position:sticky;top:12px}.sidebar-panel{background:var(--grain), var(--surface);height:100%;box-shadow:0 0 0 1px var(--line), 0 1px 3px #1111130f;border-radius:21px;flex-direction:column;gap:18px;padding:14px 12px 0;display:flex;overflow:hidden}.sidebar-panel>*{flex-shrink:0}.sidebar-panel>.nav{flex-shrink:1;min-height:0;overflow-y:auto}.sidebar-top{justify-content:space-between;align-items:center;padding:2px 4px 0 10px;display:flex}.sidebar-name{letter-spacing:-.02em;color:var(--ink);font-size:18px;font-weight:600}.icon-btn{width:44px;height:44px;color:var(--ink);cursor:pointer;transition:background .14s ease, color .14s ease, transform .12s var(--ease-out);background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{background:var(--hover)}.icon-btn:active{transform:scale(.96)}.sidebar-collapse{width:36px;height:36px;position:relative}.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}.dialog-close:after,.sidebar-collapse:after{content:"";position:absolute;inset:-5px}.sidebar-expand{z-index:25;background:var(--surface);box-shadow:0 0 0 1px var(--line), 0 1px 3px #1111131a;opacity:0;pointer-events:none;transition:opacity .3s ease-in-out,transform .3s ease-in-out;position:fixed;top:18px;left:18px;transform:scale(.85)}.sidebar-expand.is-visible{opacity:1;pointer-events:auto;transform:scale(1)}.sidebar .sidebar-brand,.sidebar .sidebar-collapse,.sidebar .nav-link,.sidebar .sidebar-foot .foot-btn{will-change:transform, opacity;transition:transform .3s cubic-bezier(.2,.8,.2,1),opacity .28s ease-in-out}@keyframes sidebarEntrance{0%{opacity:0;filter:blur(14px);transform:translate(-38px)scale(.98)}to{opacity:1;filter:blur();transform:translate(0)scale(1)}}@keyframes navLinkEntrance{0%{opacity:0;filter:blur(6px);transform:translate(-12px)}to{opacity:1;filter:blur();transform:translate(0)}}@keyframes footBtnEntrance{0%{opacity:0;filter:blur(4px);transform:scale(.9)}to{opacity:1;filter:blur();transform:scale(1)}}@media (min-width:901px){.sidebar{animation:sidebarEntrance .7s var(--ease-out) 40ms backwards}.sidebar.is-collapsed{pointer-events:none;margin-left:-260px!important;animation:none!important;transform:translate(calc(-100% - 24px))!important}.sidebar .nav-group .nav-link{animation:.45s cubic-bezier(.25,1,.5,1) .2s backwards navLinkEntrance}.sidebar .nav-group .nav-link:first-child{animation-delay:.2s}.sidebar .nav-group .nav-link:nth-child(2){animation-delay:.245s}.sidebar .nav-group .nav-link:nth-child(3){animation-delay:.29s}.sidebar .nav-group .nav-link:nth-child(4){animation-delay:.335s}.sidebar .nav-group .nav-link:nth-child(5){animation-delay:.38s}.sidebar .nav-group .nav-link:nth-child(6){animation-delay:.425s}.sidebar .nav-group .nav-link:nth-child(7){animation-delay:.47s}.sidebar-foot .foot-btn{animation:.4s cubic-bezier(.25,1,.5,1) .38s backwards footBtnEntrance}.sidebar-foot .foot-btn:first-child{animation-delay:.38s}.sidebar-foot .foot-btn:nth-child(2){animation-delay:.41s}.sidebar-foot .foot-btn:nth-child(3){animation-delay:.44s}.sidebar-foot .foot-btn:nth-child(4){animation-delay:.47s}.sidebar:not(.is-collapsed) .sidebar-brand{opacity:1;transition-delay:40ms;transform:translate(0)}.sidebar:not(.is-collapsed) .sidebar-collapse{opacity:1;transition-delay:60ms;transform:translate(0)}.sidebar:not(.is-collapsed) .nav-link:first-child{opacity:1;transition-delay:80ms;transform:translate(0)}.sidebar:not(.is-collapsed) .nav-link:nth-child(2){opacity:1;transition-delay:.12s;transform:translate(0)}.sidebar:not(.is-collapsed) .nav-link:nth-child(3){opacity:1;transition-delay:.16s;transform:translate(0)}.sidebar:not(.is-collapsed) .nav-link:nth-child(4){opacity:1;transition-delay:.2s;transform:translate(0)}.sidebar:not(.is-collapsed) .nav-link:nth-child(5){opacity:1;transition-delay:.24s;transform:translate(0)}.sidebar:not(.is-collapsed) .nav-link:nth-child(6){opacity:1;transition-delay:.28s;transform:translate(0)}.sidebar:not(.is-collapsed) .nav-link:nth-child(7){opacity:1;transition-delay:.32s;transform:translate(0)}.sidebar:not(.is-collapsed) .sidebar-foot .foot-btn:first-child{opacity:1;transition-delay:.35s;transform:translateY(0)}.sidebar:not(.is-collapsed) .sidebar-foot .foot-btn:nth-child(2){opacity:1;transition-delay:.38s;transform:translateY(0)}.sidebar:not(.is-collapsed) .sidebar-foot .foot-btn:nth-child(3){opacity:1;transition-delay:.41s;transform:translateY(0)}.sidebar:not(.is-collapsed) .sidebar-foot .foot-btn:nth-child(4){opacity:1;transition-delay:.44s;transform:translateY(0)}.sidebar.is-collapsed .sidebar-brand,.sidebar.is-collapsed .sidebar-collapse,.sidebar.is-collapsed .nav-link{opacity:0;transition-delay:0s;transform:translate(-24px)}.sidebar.is-collapsed .sidebar-foot .foot-btn{opacity:0;transition-delay:0s;transform:translateY(12px)}}.sidebar-brand{flex-direction:column;gap:2px;display:flex}.sidebar-role{color:var(--muted);letter-spacing:-.01em;font-size:12px;font-weight:400}.nav{flex-direction:column;gap:18px;display:flex}.nav-group{flex-direction:column;gap:2px;display:flex}.nav-label{color:var(--subtle);letter-spacing:.01em;padding:0 12px 6px;font-size:12px;font-weight:500}.nav-link{height:40px;color:var(--ink-2);transition:background .14s ease, box-shadow .14s ease, color .14s ease, transform .12s var(--ease-out);cursor:pointer;border-radius:12px;align-items:center;gap:12px;padding:0 12px;font-size:15px;font-weight:500;display:flex}.nav-link svg{color:var(--faint);flex-shrink:0;transition:color .14s}.nav-link:hover{background:var(--hover);color:var(--ink)}.nav-link:active{transform:scale(.98)}.nav-link:hover svg{color:var(--ink)}.nav-link[aria-current=page],.nav-link.active{color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-strong), inset 0 1px 0 var(--highlight), 0 1px 2px #1111130f;background:linear-gradient(var(--surface), var(--hover))}.nav-link[aria-current=page] svg,.nav-link.active svg{color:var(--ink)}.nav-count{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:12px;font-weight:500}.dot{background:var(--green);border-radius:50%;flex-shrink:0;width:7px;height:7px;display:inline-block}.sidebar-foot{border-top:1px solid var(--line);align-items:center;gap:8px;margin:auto -12px 0;padding:14px 16px;display:flex}.foot-btn{width:32px;height:32px;color:var(--muted);cursor:pointer;transition:background .14s ease, color .14s ease, transform .12s var(--ease-out);box-shadow:inset 0 0 0 1px var(--line-strong);background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;display:flex}.foot-btn:hover{background:var(--hover);color:var(--ink)}.foot-btn:active{transform:scale(.95)}.main{will-change:margin-left, transform;flex:1;justify-content:center;min-width:0;padding:104px 24px 96px;transition:margin-left .3s ease-in-out,transform .3s ease-in-out;display:flex}.column{width:100%;max-width:var(--col);flex-direction:column;gap:88px;display:flex}.label{color:var(--muted);font-size:14px;font-weight:500}.page-title{letter-spacing:-.025em;color:var(--ink);font-size:clamp(28px,4.8vw,36px);font-weight:600;line-height:1.22}.hero-headline{color:var(--ink);font-weight:600}.lead{color:var(--ink-body);font-size:16px;font-weight:400;line-height:1.65}.lead-teaser{max-height:7.2em;transition:max-height .3s;overflow:hidden;-webkit-mask-image:linear-gradient(#000 75%,#00000040 100%);mask-image:linear-gradient(#000 75%,#00000040 100%)}.lead-expanded{max-height:40em;-webkit-mask-image:none;mask-image:none}.back{color:var(--muted);cursor:pointer;align-items:center;gap:6px;font-size:14px;transition:color .14s;display:inline-flex}.back:hover{color:var(--ink)}.stack-v{flex-direction:column;display:flex}.gap-4{gap:4px}.gap-8{gap:8px}.gap-16{gap:16px}.gap-24{gap:24px}.gap-40{gap:40px}.gap-56{gap:56px}.identity{align-items:center;gap:16px;display:flex}.avatar{-o-object-fit:cover;object-fit:cover;background:var(--tile);border:1px solid var(--line);border-radius:50%;flex-shrink:0;width:80px;height:80px}.identity-name{letter-spacing:-.01em;color:var(--ink);font-size:22px;font-weight:600}.identity-role{color:var(--muted);font-size:16px}.niche{border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px;padding:16px 0;display:flex}.chip{border-radius:999px;align-items:center;gap:8px;height:32px;padding:0 14px;font-size:14px;font-weight:500;display:inline-flex}.chip-dark{background:var(--ink);color:var(--bg)}.chip-dark .dot{background:var(--green-ink);width:6px;height:6px}.chip-light{border:1px solid var(--line-strong);color:var(--ink-2)}.metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;display:grid}.metric-value{letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--ink);font-size:30px;font-weight:500}.metric-label{color:var(--muted);font-size:14px}.section-head{justify-content:space-between;align-items:baseline;display:flex}.count{color:var(--subtle);font-size:13px}.experience-list{flex-direction:column;display:flex}.experience-item{border-top:1px solid var(--line);flex-direction:column;gap:14px;padding:22px 0;display:flex}.experience-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.experience-role-group{flex-direction:column;gap:4px;display:flex}.experience-role{letter-spacing:-.01em;color:var(--ink);margin:0;font-size:17.5px;font-weight:600;line-height:1.35}.experience-company-line{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.experience-company{color:var(--ink-2);font-size:15px;font-weight:500}.experience-type-pill{background:var(--tile);border:1px solid var(--line-strong);color:var(--muted);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600}.experience-meta{text-align:right;flex-direction:column;flex-shrink:0;align-items:flex-end;gap:3px;display:flex}.experience-period{color:var(--subtle);font-variant-numeric:tabular-nums;font-size:13.5px;font-weight:500}.experience-location{color:var(--muted);font-size:12.5px}.experience-stack-tags{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.bullets{color:var(--ink-body);flex-direction:column;gap:10px;margin:0;padding-left:18px;font-size:14.5px;line-height:1.62;display:flex}.row{border-top:1px solid var(--line);transition:background .16s ease, transform .14s var(--ease-out);align-items:center;gap:20px;padding:18px 0;display:flex}@media (hover:hover) and (pointer:fine){.row:hover{background:var(--hover);border-radius:12px;margin:0 -8px;padding-left:8px;padding-right:8px}.row:hover .row-title{text-underline-offset:3px;text-decoration:underline}}.row:active{transform:scale(.99)}.thumb{-o-object-fit:cover;object-fit:cover;-o-object-position:top left;object-position:top left;background:var(--tile);border:1px solid var(--line);border-radius:8px;flex-shrink:0;width:72px;height:48px}.row-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.row-title{color:var(--ink);align-items:center;gap:8px;font-size:16px;font-weight:500;display:inline-flex}.row-sub{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.row-tag{color:var(--subtle);white-space:nowrap;font-size:13px}#projects>div.stack-v>div:first-child>span,#projects .row>.row-tag{display:none!important}.soon{color:var(--ink-2);box-shadow:inset 0 0 0 1px var(--line-strong);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.more-btn{border:1px solid var(--line-strong);background:var(--surface);height:40px;color:var(--ink);cursor:pointer;transition:background .14s ease, border-color .14s ease, transform .12s var(--ease-out);border-radius:999px;align-self:center;margin-top:-8px;padding:0 20px;font-size:14px;font-weight:500}.more-btn:hover{background:var(--hover);border-color:var(--ink)}.more-btn:active{transform:scale(.96)}.kv{border-top:1px solid var(--line);grid-template-columns:160px minmax(0,1fr);align-items:baseline;gap:20px;padding:14px 0;font-size:15px;display:grid}.kv>:first-child{color:var(--muted)}.kv>:last-child{color:var(--ink-body)}#publications .row>.row-tag{display:none!important}.publication-row{color:inherit;text-decoration:none}.publication-row .row-title{color:var(--ink);flex-wrap:wrap;align-items:center;gap:8px;font-size:15.5px;font-weight:500;line-height:1.38;display:flex}.publication-row .row-sub{color:var(--muted);white-space:normal;margin-top:2px;font-size:13.5px;line-height:1.45}.contact-grid{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 28px;padding-top:18px;display:grid}.contact-item{flex-direction:column;gap:4px;display:flex}.contact-label{color:var(--subtle);text-transform:uppercase;letter-spacing:.05em;font-size:11.5px;font-weight:500}.contact-value{color:var(--ink);word-break:break-word;font-size:14.5px;font-weight:500;line-height:1.4}.contact-link{color:var(--ink);width:fit-content;text-decoration:none;transition:color .14s}@media (hover:hover) and (pointer:fine){.contact-link:hover{color:var(--green-ink);text-underline-offset:3px;text-decoration:underline}}.contact-status{color:var(--ink);align-items:center;gap:6px;display:inline-flex}.contact-status .dot{flex-shrink:0;width:6px;height:6px}.footer{color:var(--muted);justify-content:center;align-items:center;width:100%;padding-top:28px;padding-bottom:20px;display:flex}.footer-signoff{color:var(--ink-body);text-align:center;white-space:nowrap;letter-spacing:.01em;font-size:clamp(14px,4vw,17px);font-weight:400}.footer nav{flex-wrap:wrap;gap:24px;display:flex}.footer a:hover,.footer button:hover{color:var(--ink)}.btn{cursor:pointer;height:44px;transition:background .14s ease, border-color .14s ease, transform .12s var(--ease-out);border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:14px;font-weight:500;display:inline-flex}.btn:active{transform:scale(.97)}.btn-dark{background:var(--ink);color:var(--bg)}.btn-dark:hover{opacity:.92}.btn-light{border:1px solid var(--line-strong);color:var(--ink)}.btn-light:hover{background:var(--hover)}.toast{left:calc(50% + var(--sidebar-w) / 2);z-index:100;background:var(--ink);height:44px;color:var(--bg);white-space:nowrap;pointer-events:none;animation:.24s var(--ease-out) toast-in;border-radius:999px;align-items:center;gap:8px;padding:0 20px;font-size:15px;font-weight:500;display:inline-flex;position:fixed;bottom:32px;transform:translate(-50%);box-shadow:0 2px 4px #11111314,0 16px 40px #11111338}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,14px)scale(.95)}to{opacity:1;transform:translate(-50%)scale(1)}}.dialog-overlay{-webkit-backdrop-filter:blur(8px);z-index:1000;box-sizing:border-box;width:100vw;height:100dvh;animation:.2s var(--ease-out) overlay-in;overscroll-behavior:contain;touch-action:none;background:#000000bd;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0;overflow:hidden}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.project-dialog{background:var(--surface);border:1px solid var(--line-strong);width:100%;max-width:580px;box-shadow:0 24px 60px #00000073, inset 0 1px 0 var(--highlight);overscroll-behavior:contain;transform-origin:50%;border-radius:24px;flex-direction:column;height:min(80vh,580px);max-height:min(80vh,580px);margin:auto;display:flex;position:relative;overflow:hidden}.dialog-card{background:var(--surface);border:1px solid var(--line-strong);width:100%;max-width:480px;box-shadow:0 24px 60px #00000073, inset 0 1px 0 var(--highlight);transform-origin:50%;max-height:min(88vh,780px);animation:.22s var(--ease-out) modal-in;border-radius:24px;flex-direction:column;gap:20px;margin:auto;padding:32px 28px;display:flex;position:relative;overflow-y:auto}@keyframes modal-in{0%{opacity:0;transform:scale(.95)translateY(10px)}to{opacity:1;transform:scale(1)translateY(0)}}.dialog-close{width:34px;height:34px;color:var(--muted);cursor:pointer;transition:background .14s ease, color .14s ease, transform .12s var(--ease-out);border-radius:10px;justify-content:center;align-items:center;display:flex;position:absolute;top:18px;right:18px}.dialog-close:hover{background:var(--hover);color:var(--ink)}.dialog-close:active{transform:scale(.94)}.project-dialog-header{border-bottom:1px solid var(--line);flex-direction:column;flex-shrink:0;gap:8px;padding:26px 56px 16px 28px;display:flex}.project-dialog-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;flex-direction:column;flex:1;gap:20px;min-height:0;padding:20px 24px 20px 28px;display:flex;overflow-y:auto}.project-dialog-body::-webkit-scrollbar{width:6px;display:block}.project-dialog-body::-webkit-scrollbar-track{background:0 0;margin:10px 0}.project-dialog-body::-webkit-scrollbar-thumb{background:var(--line-strong);border:1px solid var(--surface);border-radius:999px;transition:background .15s}.project-dialog-body::-webkit-scrollbar-thumb:hover{background:var(--subtle)}.project-meta-badges{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.badge-pill{border:1px solid var(--line-strong);color:var(--ink-2);background:var(--tile);border-radius:999px;padding:3px 10px;font-size:11px;font-weight:600}.badge-pill.status-live{color:var(--green-ink);background:#2f9e5b1f;border-color:#2f9e5b4d;align-items:center;gap:5px;display:inline-flex}.project-dialog-title{letter-spacing:-.02em;color:var(--ink);margin:0;font-size:26px;font-weight:600}.project-dialog-sub{color:var(--muted);font-size:15px;line-height:1.5}.project-section-title{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;font-size:12.5px;font-weight:600}.project-overview-text{color:var(--ink-body);font-size:15px;line-height:1.65}.project-highlights-list{color:var(--ink-body);flex-direction:column;gap:10px;margin:0;padding-left:20px;font-size:14.5px;line-height:1.6;display:flex}.project-highlights-list li strong{color:var(--ink)}.project-tech-tags{flex-wrap:wrap;gap:8px;display:flex}.tech-tag{background:var(--tile);border:1px solid var(--line);color:var(--ink-2);border-radius:8px;padding:4px 10px;font-size:12px}.project-dialog-foot{border-top:1px solid var(--line);background:var(--surface);z-index:10;flex-shrink:0;justify-content:center;align-items:center;margin-top:auto;padding:16px 28px;display:flex}.project-dialog-foot .btn{justify-content:center;min-width:160px}.scroll-reveal-section{scroll-margin-top:40svh}.blur-fade-item{opacity:0;filter:blur(12px);transition:opacity .62s var(--ease-out), filter .62s var(--ease-out), transform .62s var(--ease-out);will-change:opacity, filter, transform;transform:translateY(14px)scale(.975)}.hero-section .blur-fade-item{transition:none}.scroll-reveal-section.is-revealed .blur-fade-item,.blur-fade-item.is-revealed,.scroll-reveal-section.is-revealed.blur-fade-item{opacity:1;filter:blur();transform:translateY(0)scale(1)}.scroll-reveal-section.is-revealed .section-head{transition-delay:20ms}.scroll-reveal-section.is-revealed .experience-list .experience-item:first-child{transition-delay:80ms}.scroll-reveal-section.is-revealed .experience-list .experience-item:nth-child(2){transition-delay:.18s}.scroll-reveal-section.is-revealed .stack-v>.row:first-child{transition-delay:80ms}.scroll-reveal-section.is-revealed .stack-v>.row:nth-child(2){transition-delay:.15s}.scroll-reveal-section.is-revealed .stack-v>.row:nth-child(3){transition-delay:.22s}.scroll-reveal-section.is-revealed .stack-v>.row:nth-child(4){transition-delay:.29s}.scroll-reveal-section.is-revealed .stack-v>.row:nth-child(5){transition-delay:.36s}.scroll-reveal-section.is-revealed .more-btn{transition-delay:.28s}#stack.is-revealed .stack-v>.kv:first-child{transition-delay:60ms}#stack.is-revealed .stack-v>.kv:nth-child(2){transition-delay:.12s}#stack.is-revealed .stack-v>.kv:nth-child(3){transition-delay:.18s}#stack.is-revealed .stack-v>.kv:nth-child(4){transition-delay:.24s}#stack.is-revealed .stack-v>.kv:nth-child(5){transition-delay:.3s}#stack.is-revealed .stack-v>.kv:nth-child(6){transition-delay:.36s}#education.is-revealed .stack-v>.kv:first-child{transition-delay:80ms}#education.is-revealed .stack-v>.kv:nth-child(2){transition-delay:.16s}#certifications.is-revealed .stack-v>.kv:first-child,#publications.is-revealed .stack-v>.row:first-child,#contact.is-revealed .contact-grid{transition-delay:80ms}.word-wrapper{white-space:nowrap;display:inline-block}.word-wrapper.serif{font-family:var(--font-serif);font-style:italic;font-weight:400}@keyframes heroIdentityEntrance{0%{opacity:0;filter:blur(14px);transform:translateY(16px)scale(.96)}to{opacity:1;filter:blur();transform:translateY(0)scale(1)}}@keyframes blurCharEntrance{0%{opacity:0;filter:blur(10px);transform:translateY(12px)scale(.92)}to{opacity:1;filter:blur();transform:translateY(0)scale(1)}}@keyframes heroBioNicheEntrance{0%{opacity:0;filter:blur(10px);transform:translateY(14px)scale(.98)}to{opacity:1;filter:blur();transform:translateY(0)scale(1)}}@keyframes heroMetricEntrance{0%{opacity:0;filter:blur(10px);transform:translateY(16px)scale(.95)}to{opacity:1;filter:blur();transform:translateY(0)scale(1)}}.hero-identity{animation:heroIdentityEntrance .65s var(--ease-out) 80ms both;will-change:transform, opacity, filter}.blur-char{will-change:transform, opacity, filter;color:var(--ink);animation:blurCharEntrance .52s var(--ease-out) calc(.36s + var(--char-idx,0) * 16ms) both;display:inline-block}.blur-char.serif{font-family:var(--font-serif);font-style:italic;font-weight:400}.hero-bio{animation:heroBioNicheEntrance .6s var(--ease-out) .74s both;will-change:transform, opacity, filter}.hero-niche{animation:heroBioNicheEntrance .6s var(--ease-out) .86s both;will-change:transform, opacity, filter}.hero-metrics>div{animation:heroMetricEntrance .6s var(--ease-out) .94s both;will-change:transform, opacity, filter}.hero-metrics>div:first-child{animation-delay:.94s}.hero-metrics>div:nth-child(2){animation-delay:1.04s}.hero-metrics>div:nth-child(3){animation-delay:1.14s}@media (max-width:900px){.shell{flex-direction:column}.toast{left:50%}.mobile-bar{border-bottom:1px solid var(--line);background:var(--bg);z-index:50;align-items:center;gap:8px;height:56px;padding:8px 12px 8px 6px;display:flex;position:sticky;top:0}.mobile-bar-name{letter-spacing:-.01em;font-size:17px;font-weight:600}.mobile-bar-status{color:var(--muted);white-space:nowrap;flex-shrink:0;align-items:center;gap:5px;margin-left:auto;font-size:12px;display:flex}.scrim{z-index:60;-webkit-backdrop-filter:blur(4px);opacity:0;pointer-events:none;background:#0009;transition:opacity .3s ease-in-out;position:fixed;inset:0}.scrim.is-visible{opacity:1;pointer-events:auto}.sidebar{z-index:70;width:296px;height:calc(100dvh - 20px);box-shadow:inset 0 1px 0 var(--highlight), 0 2px 4px #1111130d, 0 24px 56px #11111338;margin:0;transition:transform .3s ease-in-out;position:fixed;top:10px;left:10px;transform:translate(calc(-100% - 20px))}.sidebar-panel{padding-top:8px}.sidebar.is-open{transform:translate(0)}.sidebar .sidebar-brand,.sidebar .sidebar-collapse,.sidebar .nav-link{opacity:0;transition-delay:0s;transform:translate(-32px)}.sidebar .sidebar-foot .foot-btn{opacity:0;transition-delay:0s;transform:translateY(16px)}.sidebar.is-open .sidebar-brand{opacity:1;transition-delay:60ms;transform:translate(0)}.sidebar.is-open .sidebar-collapse{opacity:1;transition-delay:80ms;transform:translate(0)}.sidebar.is-open .nav-link:first-child{opacity:1;transition-delay:.1s;transform:translate(0)}.sidebar.is-open .nav-link:nth-child(2){opacity:1;transition-delay:.14s;transform:translate(0)}.sidebar.is-open .nav-link:nth-child(3){opacity:1;transition-delay:.18s;transform:translate(0)}.sidebar.is-open .nav-link:nth-child(4){opacity:1;transition-delay:.22s;transform:translate(0)}.sidebar.is-open .nav-link:nth-child(5){opacity:1;transition-delay:.26s;transform:translate(0)}.sidebar.is-open .nav-link:nth-child(6){opacity:1;transition-delay:.3s;transform:translate(0)}.sidebar.is-open .nav-link:nth-child(7){opacity:1;transition-delay:.34s;transform:translate(0)}.sidebar.is-open .sidebar-foot .foot-btn:first-child{opacity:1;transition-delay:.36s;transform:translateY(0)}.sidebar.is-open .sidebar-foot .foot-btn:nth-child(2){opacity:1;transition-delay:.31s;transform:translateY(0)}.sidebar.is-open .sidebar-foot .foot-btn:nth-child(3){opacity:1;transition-delay:.34s;transform:translateY(0)}.sidebar.is-open .sidebar-foot .foot-btn:nth-child(4){opacity:1;transition-delay:.37s;transform:translateY(0)}.sidebar-expand{display:none!important}.main{padding:32px 18px 64px}.column{gap:52px}.metrics{gap:12px}.identity .avatar{width:64px;height:64px}.identity{gap:12px}.identity .btn{gap:6px;height:36px;padding:0 12px;font-size:13px}.metric-value{font-size:24px}.metric-label{font-size:13px}.experience-header{flex-direction:column;align-items:flex-start;gap:6px}.experience-role{font-size:18px;line-height:1.3}.experience-company-line{gap:6px}.experience-meta{text-align:left;flex-flow:wrap;align-items:flex-start;gap:6px 12px;margin-top:2px}.experience-period{color:var(--subtle);font-size:12.5px}.experience-location{color:var(--muted);font-size:12px}.row{gap:14px;padding:16px 0}#projects>div.stack-v>div:first-child>span,#projects .row>.row-tag{display:none!important}.footer{flex-direction:column-reverse;gap:16px}.footer nav{gap:12px 20px}.kv{grid-template-columns:1fr;gap:4px}.page-title{font-size:28px}.dialog-overlay{padding:12px}.dialog-card{border-radius:20px;gap:18px;max-height:calc(100dvh - 24px);padding:24px 20px}.project-dialog{border-radius:20px;height:calc(100dvh - 24px);max-height:calc(100dvh - 24px)}.project-dialog-header{padding:18px 48px 12px 18px}.project-dialog-body{gap:16px;padding:16px 18px}.project-dialog-foot{padding:12px 18px}.project-dialog-title{font-size:22px}.contact-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 18px;padding-top:16px}.contact-item{gap:2px}.contact-label{font-size:11px}.contact-value{font-size:13.5px}}@media (min-width:901px){.mobile-bar,.scrim{display:none}}@media (prefers-reduced-motion:reduce){.sidebar,.sidebar .nav-link,.sidebar-foot .foot-btn,.hero-identity,.blur-char,.hero-bio,.hero-niche,.hero-metrics>div,.scroll-reveal-section,.blur-fade-item,.project-dialog,.project-modal-card,.project-modal-overlay,.dialog-card,.toast,.click-burst span{filter:none!important;opacity:1!important;transition:none!important;animation:none!important;transform:none!important}}
