@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/a342834df7752944-s.10ev4cu2inrn-.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.0i6ci0u~g4zml.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.0x1a9yg0jkq20.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.0dyk20wuvya7a.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:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.0ctuso5mgh_i..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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.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:Manrope Fallback;src:local(Arial);ascent-override:103.31%;descent-override:29.07%;line-gap-override:0.0%;size-adjust:103.19%}.manrope_44d32c95-module__yvA80q__className{font-family:Manrope,Manrope Fallback;font-style:normal}.manrope_44d32c95-module__yvA80q__variable{--font-body:"Manrope", "Manrope Fallback"}
@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/32687112bd2dd8db-s.0gspg~~t9nou8.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:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/28868e710e86be81-s.0rx81dn62y51_.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.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:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_b4695340-module__hqfhmq__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_b4695340-module__hqfhmq__variable{--font-display:"Space Grotesk", "Space Grotesk Fallback"}
:root{--bg:#f4efe7;--bg-secondary:#ebe2d5;--surface:#fffcf7e0;--surface-strong:#fffaf2;--surface-dark:#1d241f;--surface-dark-soft:#2f392f;--text:#1f241d;--muted:#6f7468;--line:#1f241d1f;--line-strong:#1f241d3d;--accent:#7f8f67;--accent-deep:#334031;--shadow:0 24px 70px #56462c14}:root[data-theme=dark]{--bg:#08111f;--bg-secondary:#0d1a2d;--surface:#0a1424d1;--surface-strong:#0f213a;--surface-dark:#dce9ff;--surface-dark-soft:#99b7e7;--text:#eef4ff;--muted:#9ab0d0;--line:#98b7e729;--line-strong:#a7c3ee47;--accent:#78a8ff;--accent-deep:#c6dbff;--shadow:0 28px 80px #0107126b}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-height:100vh;font-family:var(--font-body), sans-serif;color:var(--text);background:radial-gradient(circle at top left, color-mix(in srgb, var(--accent) 18%, transparent), transparent 28%), linear-gradient(180deg, var(--bg) 0%, color-mix(in srgb, var(--bg-secondary) 60%, var(--bg)) 46%, var(--bg-secondary) 100%);margin:0}body:before{content:"";pointer-events:none;background-image:linear-gradient(#1f241d09 1px,#0000 1px),linear-gradient(90deg,#1f241d09 1px,#0000 1px);background-size:96px 96px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000000d9,#0000 92%);mask-image:linear-gradient(#000000d9,#0000 92%)}:root[data-theme=dark] body:before{background-image:linear-gradient(#98b7e70a 1px,#0000 1px),linear-gradient(90deg,#98b7e70a 1px,#0000 1px)}a{color:inherit;text-decoration:none}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{font-family:var(--font-display), sans-serif;letter-spacing:-.04em}p{color:var(--muted);line-height:1.8}.page-shell{width:min(1240px,100% - 40px);margin:0 auto;padding:26px 0 80px}.masthead,.hero-stage,.projects-layout,.stat-ribbon,.cta-row,.project-links,.tag-row,.experience-topline,.lab-head{gap:16px;display:flex}.masthead{justify-content:space-between;align-items:center;margin-bottom:28px;padding:16px 0}.brand-mark{border:1px solid var(--line-strong);min-width:86px;min-height:44px;font-family:var(--font-display), sans-serif;background:#fffaf2b8;border-radius:999px;justify-content:center;align-items:center;padding:0 18px;font-size:1rem;display:inline-flex}.masthead-nav{flex-wrap:wrap;gap:10px;display:flex}.masthead-nav a,.ghost-cta,.project-links a,.theme-toggle{border:1px solid var(--line);min-height:44px;color:var(--text);font:inherit;cursor:pointer;background:#fffcf785;border-radius:999px;justify-content:center;align-items:center;padding:0 18px;transition:transform .18s,border-color .18s,background .18s;display:inline-flex}.masthead-nav a:hover,.ghost-cta:hover,.project-links a:hover,.primary-cta:hover{transform:translateY(-2px)}.hero-stage{margin-top:12px;position:relative;overflow:visible}.hero-stage:before{content:"";pointer-events:none;background:0 0;position:absolute;inset:0}.hero-grid{z-index:1;grid-template-columns:minmax(0,1.08fr) minmax(360px,.92fr);gap:52px;display:grid;position:relative}.intro-panel,.about-panel,.experience-card,.showcase-card,.labs-shell{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:32px;position:relative;overflow:hidden}.intro-panel,.about-panel,.labs-shell{padding:clamp(28px,4vw,42px)}.intro-panel{min-height:700px;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:0;border-radius:0;padding:24px 0}.about-panel{border:0;border-left:1px solid var(--line);min-height:700px;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border-radius:0;grid-template-rows:auto 1fr;gap:26px;padding:28px 0 24px 40px;display:grid}.intro-panel:before,.about-panel:before,.about-panel:before{content:none}.section-kicker{color:var(--accent-deep);letter-spacing:.18em;text-transform:uppercase;align-items:center;gap:10px;font-size:.8rem;display:inline-flex}.section-kicker:before{content:"";background:currentColor;width:34px;height:1px}.section-kicker.muted{color:#f7f1e8c2}.section-kicker.muted-dark{color:#1f241dad}.mini-note{max-width:44ch;margin-top:18px;font-size:.94rem}h1{max-width:100%;margin-top:34px;font-size:clamp(3.2rem,7vw,6.4rem);line-height:.92}.typing-title{min-height:1.2em;display:inline-block}.typing-live{white-space:nowrap;max-width:100%;display:inline-block}.typing-caret{vertical-align:-.06em;background:var(--text);width:.08em;height:.92em;margin-left:.08em;animation:.7s step-end infinite caretBlink;display:inline-block}h2{font-size:clamp(2.2rem,4vw,4rem);line-height:.96}h3{font-size:clamp(1.45rem,2.3vw,2rem);line-height:1.08}h4{font-size:1.1rem;line-height:1.2}.intro-text{max-width:56ch;margin-top:26px;font-size:1.02rem}.cta-row{flex-wrap:wrap;margin-top:28px}.primary-cta{background:var(--surface-dark);color:#f7f1e8;border:1px solid var(--surface-dark);border-radius:999px;justify-content:center;align-items:center;min-height:48px;padding:0 22px;transition:transform .18s,opacity .18s;display:inline-flex}:root[data-theme=dark] .primary-cta{color:#0c1830;background:#d8e6ff;border-color:#d8e6ff}.ghost-cta{border-color:var(--line-strong);background:#fffcf7a3}.stat-ribbon{border-top:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:38px;padding-top:24px;display:grid}.stat-ribbon>div{border:1px solid var(--line);background:#fffcf7b8;border-radius:24px;min-height:128px;padding:18px 18px 22px;box-shadow:0 12px 30px #56462c0a}:root[data-theme=dark] .stat-ribbon>div,:root[data-theme=dark] .experience-card,:root[data-theme=dark] .showcase-card,:root[data-theme=dark] .labs-shell,:root[data-theme=dark] .lab-card{background:#0c1626c7;box-shadow:0 18px 40px #02081252}.stat-ribbon span,.experience-topline,.experience-company,.soft-chip,.tag-row span,.lab-head span{color:var(--muted)}.stat-ribbon strong{font-family:var(--font-display), sans-serif;color:var(--text);margin-top:10px;font-size:2rem;display:block}.about-visual{background:0 0;min-height:390px;position:relative;overflow:visible}.portrait-glow{filter:blur(8px);background:radial-gradient(circle,#7f8f6747,#0000 68%);border-radius:999px;width:220px;height:220px;position:absolute;inset:10% 18% auto auto}.portrait-frame{background:#fff6;border:1px solid #ffffff70;border-radius:28px;width:min(100%,310px);height:340px;position:absolute;top:28px;left:28px;overflow:hidden;box-shadow:0 20px 55px #3c2e1a24}:root[data-theme=dark] .portrait-frame{background:#0c1626d1;border-color:#a7c3ee38}.portrait-image,.floating-image{object-fit:cover}.portrait-image{object-position:center top}.floating-shot{border-radius:24px;position:absolute;overflow:hidden;box-shadow:0 20px 44px #362c1e29}.scenic-shot{width:170px;height:230px;top:42px;right:26px;transform:rotate(5deg)}.casual-shot{width:128px;height:172px;bottom:10px;right:92px;transform:rotate(-8deg)}.about-copy{flex-direction:column;gap:16px;display:flex}.about-copy h2{font-size:clamp(2rem,3vw,3rem)}.about-chips{flex-wrap:wrap;gap:12px;margin-top:8px;display:flex}.about-chips span{border:1px solid var(--line);min-height:36px;color:var(--text);background:#fffcf7a6;border-radius:999px;align-items:center;padding:0 13px;font-size:.85rem;display:inline-flex}:root[data-theme=dark] .about-chips span,:root[data-theme=dark] .tag-row span,:root[data-theme=dark] .soft-chip,:root[data-theme=dark] .lab-head span{background:#0b1524b8;border-color:#a7c3ee29}.content-section{margin-top:84px}.section-heading{flex-direction:column;gap:14px;margin-bottom:28px;display:flex}.experience-grid,.showcase-list,.labs-list{gap:18px;display:grid}.experience-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.experience-card,.showcase-card{padding:26px}.experience-card{background:#fffcf7c7}.experience-topline{letter-spacing:.12em;text-transform:uppercase;flex-wrap:wrap;margin-bottom:18px;font-size:.82rem}.experience-company{color:var(--accent-deep);margin:12px 0 16px}.projects-layout{align-items:start;gap:22px}.showcase-list{flex:1.18}.labs-panel{flex:.82;position:sticky;top:24px}.showcase-card{background:linear-gradient(135deg, #fffcf7eb, #efe6d9bd), var(--surface);grid-template-columns:84px minmax(0,1fr);align-items:start;gap:18px;display:grid}.showcase-number{font-family:var(--font-display), sans-serif;color:#33403140;justify-content:center;align-items:flex-start;padding-top:4px;font-size:clamp(2.4rem,5vw,3.6rem);display:flex}.showcase-header{flex-direction:column;gap:14px;margin-bottom:14px;display:flex}.status-pill{border:1px solid var(--line);letter-spacing:.14em;text-transform:uppercase;border-radius:999px;align-items:center;width:fit-content;min-height:32px;padding:0 12px;font-size:.72rem;display:inline-flex}.status-pill.public{color:var(--accent-deep);background:#7f8f671f;border-color:#33403129}.status-pill.private{color:var(--text);background:#1f241d14;border-color:#1f241d29}.tag-row{flex-wrap:wrap;margin:18px 0}.tag-row.large{margin-bottom:0}.tag-row span,.soft-chip,.lab-head span{border:1px solid var(--line);background:#fffcf7a3;border-radius:999px;align-items:center;min-height:34px;padding:0 12px;font-size:.84rem;display:inline-flex}.project-links{flex-wrap:wrap;margin-top:18px}.labs-shell{background:linear-gradient(#fffaf2f0,#eee4d6c7)}.labs-shell h3{margin:18px 0 24px}.labs-list{gap:14px}.lab-card{border:1px solid var(--line);background:#fffcf79e;border-radius:24px;padding:18px}.lab-head{justify-content:space-between;align-items:flex-start;margin-bottom:12px}.empty-state{border-style:dashed}.site-footer{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:24px;margin-top:88px;padding:28px 0 18px;display:flex}.footer-copy h2{margin:16px 0 10px;font-size:clamp(1.8rem,3vw,2.6rem)}.footer-links{flex-wrap:wrap;align-items:flex-start;gap:12px;display:flex}.footer-links a{border:1px solid var(--line);background:#fffcf78f;border-radius:999px;align-items:center;gap:10px;min-height:42px;padding:0 16px;display:inline-flex}.footer-icon{object-fit:contain;flex:none}:root[data-theme=dark] .footer-links a,:root[data-theme=dark] .theme-toggle,:root[data-theme=dark] .masthead-nav a,:root[data-theme=dark] .ghost-cta,:root[data-theme=dark] .project-links a{background:#0a1424d1;border-color:#a7c3ee29}@media (max-width:1080px){.hero-grid{grid-template-columns:1fr;gap:28px}.intro-panel{min-height:auto}.about-panel{border-left:0;border-top:1px solid var(--line);min-height:auto;padding:28px 0 0}.labs-panel{position:static}.theme-toggle{align-self:flex-start}}@media (max-width:720px){.page-shell{width:min(100% - 24px,1240px);padding-top:18px}.masthead{flex-direction:column;align-items:flex-start}.showcase-card{grid-template-columns:1fr}.showcase-number{justify-content:flex-start}.experience-card,.showcase-card,.labs-shell{border-radius:26px}.about-visual{min-height:500px}.portrait-frame{width:auto;height:320px;left:18px;right:18px}.scenic-shot{width:130px;height:170px;top:24px;right:16px}.casual-shot{width:108px;height:144px;bottom:16px;right:40px}.stat-ribbon{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.masthead-nav,.cta-row,.project-links,.footer-links,.masthead-nav a,.primary-cta,.ghost-cta,.project-links a,.footer-links a,.theme-toggle{width:100%}}@keyframes caretBlink{0%,49%{opacity:1}50%,to{opacity:0}}
